NSX-TでSLAACによるIPv6アドレスの自動生成を試してみる
前回、vSphere環境をIPv6での構築を試してみました。今回は、NSX-TでSLAACによるIPv6アドレスの払い出しを試してみました。
構成
- 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の処理の流れは以下のようになっています。
- リンクローカルアドレスの自動生成
- 重複アドレスの検知(DAD、Dupulicate Address Detection)
- グローバルアドレスの自動生成
少し細かく書くと以下のようになっています。
- ホストは、仮のリンクローカルアドレスを生成し、Neighbor Solicitation(NS)メッセージを送信し、DADにより重複がないことを確認し、NAメッセージを送りリンクローカルアドレスを確定します。
- ホストはIPv6アドレスを自動的に設定するため、Router Solicitation(RS)メッセージを送信し、ネットワーク情報を要求します。
- ルーターはRouter Advertisement(RA)メッセージを返し、ネットワークプレフィックスやアドレス構成方法(SLAACの有効化など)を通知します。
- ホストはRAメッセージから受け取ったプレフィックスに基づき、インターフェース識別子(MACアドレスを使ってModified EUI-64形式で生成)を結合し、仮のグローバルアドレスを生成します。
- NSメッセージを送信して、DADにより重複がないことを確認し、NAメッセージを送りグローバルアドレスを確定します。
- 必要に応じて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
$ 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