らくがきちょう

なんとなく

VIRL の Neutron で DHCP サービスを無効化し、外部 DHCP サーバを利用する

以前に 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-updateDHCP サービスを無効化します。

$ 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 サーバからアドレスを取得出来ています。