この記事は Nicolas Vibert 氏のブログ DHCP and DHCP Relay on VMware Cloud on AWS の翻訳です。 翻訳の一覧はこちら

今回のブログ記事では、VMware Cloud on AWS 上の DHCP(Dynamic Host Configuration Protocol)と、最近リリースされた DHCP Relay 機能が提供するメリットについて紹介します。

まず、VMC 1.7 での NSX リリースに関する Humair の投稿を読んでみてください。この記事では DHCP Relay のいくつかの側面をカバーしていますが、コンセプトをよく知らない人のためにもう少し詳細な情報を提供したいと思いました。

First, you might want to read (or re-read) my Internal Networking on VMware Cloud on AWS post. まず、私の投稿「VMware Cloud on AWS の内部ネットワーキング」を読んでみてください(または再読してください)。

デフォルトでは、VMware Cloud on AWS には、独自の DHCP サーバが搭載されています。これは NSX がしばらく前から提供している機能です。VMC SDDC を起動すると、NSX DHCP Server が組み込まれ、コンピュートゲートウェイ(CGW)にアタッチされます。

組み込まれた NSX DHCP Server は問題なく稼働します。VM に提供したい DHCP 範囲を指定するという最低限のことを行うことができます。デフォルト ゲートウェイは、VMCコンソールでセグメント IP 範囲を定義する際に決められます。

多くのお客様にとってはこれで十分なのですが、以下に挙げられる機能を提供する必要もありました。

  • 仮想デスクトップのためのより洗練された IP アドレス管理(IPAM)機能(このユースケースは VMware Cloud on AWS で非常に人気があります)。
  • 既存の IPAM インフラストラクチャとの整合性(顧客は単一の DHCP サーバを管理したいと考えています)。

顧客からのフィードバックに基づき、DHCP リクエストを 3rd Party の DHCP Server に転送する DHCP Relay 機能を VMware はリリースしました。

DHCP Relay はどのように動作するのでしょうか?

DHCP Relay は、VMware Cloud on AWS、VMware、物理インフラストラクチャのいずれを使用しているかに関わらず、一貫した方法で動作します。

以下の例では、ルータに接続された複数の VM が DHCP Relay として動作しています。以下のスクリーンショットとパケットキャプチャーは、VMware Cloud on AWS 環境からのものですが(実際には DHCP Server は VMware Cloud on AWS の VM とは別の大陸にあります)、これはどこでも適用できるはずです。

イベントのシーケンスはおおよそ以下のようになっています。

  • 青の VM が起動し、DHCP Discovery にて DHCP Server を探します (「私は IP が必要です!誰か底にいる人にお願いします!IP がないと裸のような気がするんです)
Source: Destination: UDP DHCP
0.0.0.0 255.255.255.255 67 Discover
  • DHCP Relay は、DHCP Relay の設定で指定された DHCP Server サーバに DHCP Discovery を転送します(「頑張れよ、青の VM - 僕の知っているあの素晴らしい DHCP Server にリクエストを転送してあげるよ。IP は 172.20.0.129 なんだ。)
Source: Destination: UDP DHCP
172.30.118.1 172.20.0.129 67 Discover
  • DHCP server proposes an IP back (DHCP Offer) to DHCP Relay who sends it back to Blue VM (“I have this great IP for you, Blue VM – please confirm if you want it otherwise I will give it to your nemesis Orange VM”).
  • DHCP Server は DHCP Relay に IP を提案して、DHCP Relay は IP を青の VM に送り返します(「青の VM、君のためにこの素晴らしい IP を持っているよ、君が欲しいかどうか確認してくれないなら、宿敵であるオレンジの VM に渡しちゃうよ」)。
Source: Destination: UDP DHCP
172.20.0.129 172.30.118.1 67 Offer (172.30.118.11/24)
  • 青の VM は DHCP Relay に DHCP Request を送信してこの IP が欲しいことを確認し、DHCP Relay はこの IP を DHCP Server に送り返します。ありがとう、DHCP Server。あばよ、オレンジの VM」)
Source: Destination: UDP DHCP
172.30.118.1 172.20.0.129 67 Request (172.30.118.11)
  • DHCP Server は DHCP Request を正しく受信したことを認め、DHCP Relay に DHCP ACK を送り返し、そして DHCP Relay はそれを青の VM に転送します。(お役に立てて嬉しいです、青の VM。ところで、私はオレンジの VM も好きではありません。)
Source: Destination: UDP DHCP
172.20.0.129 172.30.118.1 67 ACK

もしあなたが本当にその仕組みを知りたいのであれば、実際のパケットを見る以外に方法はありません。下のギャラリーは、その過程で交換された 8 つの DHCP パケットを示しています。

Step 1 - DHCP Server はどこ? Step 1 - DHCP Server はどこ?

Step 2 - DHCP Relay は Discovery を DHCP Server へ転送 Step 2 - DHCP Relay は Discovery を DHCP Server へ転送

Step 3 - DHCP Server が IP を提案 Step 3 - DHCP Server が IP を提案

Step 4 - DHCP Relay がクライアントへ DHCP プロトコルを転送 Step 4 - DHCP Relay がクライアントへ DHCP プロトコルを転送

Step 5 - クライアントが提案を受け入れ、IP をリクエスト Step 5 - クライアントが提案を受け入れ、IP をリクエスト

Step 6 - DHCP Relay が受け入れを DHCP Server へ転送 Step 6 - DHCP Relay が受け入れを DHCP Server へ転送

Step 7 - DHCP Server が DHCP Lease を了承 Step 7 - DHCP Server が DHCP Lease を了承

Step 8 - DHCP Relay がクライアントへ ACK を転送 Step 8 - DHCP Relay がクライアントへ ACK を転送

VMware Cloud on AWS で DHCP Relay はどのように動作するのでしょうか?

VMware Cloud on AWS のコンソールの「ネットワークとセキュリティ」タブに DHCP オプションが追加されました。

以下のラボでは、172.20.0.129で DHCP Relay を設定しています。コンピュート ゲートウェイにアタッチするのを忘れないようにしてください。

NSX DHCP Server と 3rd Party の DHCP Server は同時には使えません。どちらか一方のみの使用となります。そのため、DHCP Relay を有効にする前に、DHCP が有効化されたネットワーク セグメントがないことを確認してください。そうしないと、以下のようなエラーメッセージが表示されます。

1 つまたは複数の DHCP Server を指定することができます(最初の DHCP Server へ到達しようとし、応答がなければ次の DHCP Server へ移動します)。

前にも述べたように、私のシナリオでは、DHCP Server はオンプレミスにあり、ルートベースの VPN を使って通信しています。

Humair がブログで述べているように、オンプレミスでも、接続された VPC でも、VMware Cloud on AWS 内でも、DHCP Server を使用することができます。必要なのは、IP 接続と UDP ポート67/68 が開いていて、DHCP トラフィックを通すことができるようになっていることだけです。

次に必要なのは、「セグメント」ページの「DHCP の有効化」オプションでサブネットを作成し、DHCP の範囲を指定することです。少し直観的ではないように感じるかもしれませんが、これが今日(2019/6 時点)のやり方です(将来的には明確になるでしょう)。

DHCP Server に DHCP Lease が設定されていることを確認してください。

これで準備は完了です。VM を起動します。DHCP Lease を開放すると、以下のように IP がなくなります。

DHCP プロセスを開始すると、前述した一連の DHCP のイベントが発生し、割り当てられた IP アドレスを確認することができます。

私の DHCP Server では、172.30.118.11 が予想通り割り当てられています。実際に何が起こるかというと、DHCP Server は172.30.118.1(DHCP Relay のIP)からのリクエストを受信し、そのサブネットからエンドユーザに IP を割り当てます。

12 秒の動画ではこのようになっています。

この記事がお役に立てば幸いです。お読みいただきありがとうございました。