以前に VIRL 上の機器を外部ネットワークと L2 接続する という記事を書きました。この記事の通りに設定すれば flat ネットワーク経由で VIRL 上のノードを外部ネットワークと L2 接続することが可能ですが、検証ノードで DHCP を有効にしても Neutron が提供する DHCP サービスからアドレスを受信してしまいました。そこで Neutron の該当サブネットで DHCP サービスを無効化し、外部の DHCP サービスを利用出来るようにしてみます。
flat サブネットの設定確認
neutron subnet-show でサブネットの設定を確認することが出来ます。「enable_dhcp」が「True」になっていることが分かります。
$ neutron subnet-show flat +-------------------+-------------------------------------------------+ | Field | Value | +-------------------+-------------------------------------------------+ | allocation_pools | {"start": "172.16.1.50", "end": "172.16.1.253"} | | cidr | 172.16.1.0/24 | | dns_nameservers | 8.8.4.4 | | | 8.8.8.8 | | enable_dhcp | True | | gateway_ip | 172.16.1.1 | | host_routes | | | id | d721595b-c60f-425a-a182-0bd930b14b08 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | flat | | network_id | 6fb8831a-5f6a-45b3-a6da-b4a2d1d74048 | | subnetpool_id | | | tenant_id | 745f80c285f74368a1d9efcfd73591fb | +-------------------+-------------------------------------------------+
DHCP サービスの無効化
neutron subnet-update で DHCP サービスを無効化します。
$ neutron subnet-update flat --disable-dhcp Updated subnet: flat
再度、サブネットの設定を確認します。「enable_dhcp」が「False」になったことが分かります。
$ neutron subnet-show d721595b-c60f-425a-a182-0bd930b14b08 +-------------------+-------------------------------------------------+ | Field | Value | +-------------------+-------------------------------------------------+ | allocation_pools | {"start": "172.16.1.50", "end": "172.16.1.253"} | | cidr | 172.16.1.0/24 | | dns_nameservers | 8.8.4.4 | | | 8.8.8.8 | | enable_dhcp | False | | gateway_ip | 172.16.1.1 | | host_routes | | | id | d721595b-c60f-425a-a182-0bd930b14b08 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | flat | | network_id | 6fb8831a-5f6a-45b3-a6da-b4a2d1d74048 | | subnetpool_id | | | tenant_id | 745f80c285f74368a1d9efcfd73591fb | +-------------------+-------------------------------------------------+
Cisco ルータで DHCP サーバからアドレスを取得する
VIRL 上に IOSv ノードを作成し、DHCP サーバからアドレスを取得してみます。
Router# configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)# interface GigabitEthernet 0/0 Router(config-if)# ip address dhcp Router(config-if)# no shutdown Router(config-if)# end Router# *Dec 26 14:52:14.659: %SYS-5-CONFIG_I: Configured from console by console *Dec 26 14:52:16.148: %LINK-3-UPDOWN: Interface GigabitEthernet0/0, changed state to up *Dec 26 14:52:17.149: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up *Dec 26 14:52:28.173: %DHCP-6-ADDRESS_ASSIGN: Interface GigabitEthernet0/0 assigned DHCP address 172.31.98.171, mask 255.255.255.0, hostname
ログだけでは分かりづらいですが、flat ネットワークを経由し、外部にある DHCP サーバからアドレスを取得出来ています。