hidemium's blog

日々学んだことをアウトプットする。

NSX-TでSLAACによるIPv6アドレスの自動生成を試してみる

前回、vSphere環境をIPv6での構築を試してみました。今回は、NSX-TでSLAACによるIPv6アドレスの払い出しを試してみました。

hidemium.hatenablog.com

構成

  • vCenter 8.0U2
  • ESXi 8.0U2 (Nested ESXi)
  • NSX-T 4.1
  • HoLを利用

SLAACとは

IPv4で動的にIPアドレスを払い出す方法として、DHCPがあります。

IPv6では、SLAAC(StateLess Address AutoConfiguration、ステートレスアドレス自動設定、「すらっく」と発音)と、DHCPv6の2種類の方法があります。

SLAACは、RFC 4862で定義されているIPv6アドレスの自動生成方法です。

SLAACの処理の流れは以下のようになっています。

  1. リンクローカルアドレスの自動生成
  2. 重複アドレスの検知(DAD、Dupulicate Address Detection)
  3. グローバルアドレスの自動生成

少し細かく書くと以下のようになっています。

  1. ホストは、仮のリンクローカルアドレスを生成し、Neighbor Solicitation(NS)メッセージを送信し、DADにより重複がないことを確認し、NAメッセージを送りリンクローカルアドレスを確定します。
  2. ホストはIPv6アドレスを自動的に設定するため、Router Solicitation(RS)メッセージを送信し、ネットワーク情報を要求します。
  3. ルーターはRouter Advertisement(RA)メッセージを返し、ネットワークプレフィックスやアドレス構成方法(SLAACの有効化など)を通知します。
  4. ホストはRAメッセージから受け取ったプレフィックスに基づき、インターフェース識別子(MACアドレスを使ってModified EUI-64形式で生成)を結合し、仮のグローバルアドレスを生成します。
  5. NSメッセージを送信して、DADにより重複がないことを確認し、NAメッセージを送りグローバルアドレスを確定します。
  6. 必要に応じてRAメッセージのオプションとしてDNS情報の配送や、Stateless DHCPv6を使用し追加のネットワーク設定を取得します。

利用するアドレスの検討

前回と同様、全体のネットワークに /48、VLAN用に /56 、VLANIDごとに /64 のプレフィックスを割り当てを行います。

NSX-T環境向けに以下のアドレスの割り当てを行います。

2001:db8:1000:2000:1::/64 LS-IPv6セグメント

NSX-Tの設定

NSX-Tは、デフォルトではIPv6が無効化されているため、有効化しておきます。

Global Networking Configで、L3 Forwarding Modeを IPv4 and IPv6 に変更して保存します。

ADD TIER-1 GATEWAYボタンをクリックし、T1-GW という名前でTier-1 Gatewayを追加してみます。

Edge Clusterに、デプロイしているEdge Clusterを設定します。

Route Advertisementに、 All Connected Segments & Service Pors をオンにして保存します。

ND Profileは、 SLAAC with DNS through RA のモードで試すため、default のままにしておきます。

また、DAD Profileは、 default のままにしておきます。

Settings>Networking Profiles>IPv6>ND Profilesには、default という名前のプロファイルがすでに登録されています。 デフォルトの ND プロファイルは、 SLAAC with DNS through RA のモードで設定され、ドメイン名やDNS パラメータは設定されません。

モードには、以下の種類があります。

mode 説明
SLAAC with DNS Through RA アドレスとDNS情報はルーターアドバタイズメントメッセージによって生成されます。
SLAAC with DNS Through DHCP アドレスはルーターアドバタイズメントメッセージで生成され、DNS情報はDHCPサーバーによって生成されます。
DHCP with Address and DNS through DHCP アドレスとDNS情報はDHCPサーバーによって生成されます。
SLAAC with Address and DNS through DHCP アドレスとDNS情報はDHCPサーバーによって生成されます。このオプションはNSX Edgeでのみサポートされ、KVMホストやESXiホストではサポートされていません。

Settings>Networking Profiles>IPv6>DAD Profilesには、default という名前のプロファイルがすでに登録されています。

モードには、以下の種類があります。

mode 説明
Loose 重複アドレスの通知は受信しますが、検出された重複アドレスに対して何も行いません。
Strict 重複アドレスの通知を受信します。重複アドレスは使用不能になります。

ADD SEGMENTボタンをクリックし、 LS-IPv6 という名前でセグメントを追加してみます。

Connected Gatewayに、 T1-GW を設定し、Toranspot Zoneに作成済みのToranspot Zoneを指定します。

Subnetに 2001:db8:1000:2000:1::/64 を割り当てます。

動作確認

テストVMでSLAACでIPv6のアドレスが自動生成されるか確認してみます。

VMネットワークアダプターに、 LS-IPv6 セグメントを割り当てます。

systemdにはデフォルトでSLAACのRAが有効となっているので、特に追加設定は不要です。

IPv6アドレスが設定されていることを確認します。

$ systemctl restart systemd-network
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UpP group defalut qlen 1000
    link/ether 00:50:56:99:d4:ff brd ff:ff:ff:ff:ff:ff
    inet6 2001:db8:1000:2000:250:56ff:fe99:d4ff/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 2591687sec preferred_lft 604487sec
    inet6 fe80::250:56ff:fe99:d4ff/64 scope link
       valid_lft forever preferred_lft forever

もう一台テストVMを用意して、pingを実行してみます。

$ ping 2001:db8:1000:2000:250:56ff:fe99:5520
PING 2001:db8:1000:2000:250:56ff:fe99:5520(2001:db8:1000:2000:250:56ff:fe99:5520) 56 data bytes
64 bytes from 2001:db8:1000:2000:250:56ff:fe99:5520:  icmp_seq=1 ttl=64 time=1.22 ms
64 bytes from 2001:db8:1000:2000:250:56ff:fe99:5520:  icmp_seq=1 ttl=64 time=0.634 ms

参考