Rocky版OpenStack Neutronを活用して、IPv4ネットワークのデプロイ動作を体験してみます。
ただし、デプロイするテナントネットワークは、単一のL3セグメント構成のみです。
外部への通信を想定したルータ環境の配備とか、一切、想定していません。
■ 想定されるNeutron基本動作
IPv4ネットワークをデプロイすると、Network Node上にテナント専用DHCPサーバ環境としてdnsmasqが配備されます。
その後、DHCPv4プロトコルを使用して、クライアント環境にIPv4アドレスが割り当てられれば成功です。
□ Networkリソース作成時のデプロイ作業の流れ
ここでのNeutron内部処理のゴールは、Neutron Manager内部で保持するデータベースに、テナントネットワークの基本情報を登録する程度でしょう。
この段階では、一切、Compute Node、Network Nodeに対する設定作業は行われません。
□ Subnetリソース作成時のデプロイ作業の流れ
ここでのNeutron内部処理でのゴールは、テナント専用DHCPサーバ環境を配備することです。
- NeutronManagerは、Subnetリソースに応じたIPAM機構を配備する
- Neutron-dhcp-agentは、新たにSubnetリソースが作成されたことを検知する
- Neutron-dhcp-agentは、NeutronManagerに、DHCP専用のPortリソースの作成を依頼する
- NeutronManagerは、DHCP専用のPortリソースを作成する
- NeutronManagerは、DHCPサーバ用Port追加設定を、Neutron-openvswitch-agentに依頼する
- Neutron-openvswitch-agentは、OpenvSwitchの
br-int
ブリッジ上に、DHCPサーバ用Portを追加する - NeutronManagerは、DHCP環境の配備を、Neutron-dhcp-agentに依頼する
- Neutron-dhcp-agentは、DHCP専用のPortリソースに基づき、DHCPサーバ環境を整備する
- Neutron-dhcp-agentは、DHCP用ネームスペースを作成する
- Neutron-dhcp-agentは、DHCP用ネームスペース内にdnsmasq環境を整備する
□ Portリソース作成時のデプロイ作業の流れ
ここでのNeutron内部処理でのゴールは、別途、クライアン環境から、DHCP取得依頼が発生した場合に、IPv4アドレスを配布できるようDHCPサーバ環境を設定することです。
- NeutronManagerは、Portリソースに対応するMACアドレスを割り当てる
- NeutronManagerは、IPAM機構にPortリソース情報のエントリする
- NeutronManagerは、IPAM機構での内部処理に基づき、IPv4アドレスを割り当てる
- NeutronManagerは、DHCPサーバ環境でのIPv4アドレス払い出し設定を、Neutron-dhcp-agentに依頼する
- Neutron-dhcp-agentは、dnsmasq設定ファイルに当該エントリを設定する
- Neutron-dhcp-agentは、dnsmasqプロセスを再起動(kill -HUP)して、エントリ設定を有効化する
■ テナントネットワークのデプロイの作業履歴
Rocky版OpenStack Neutronを使って、Neutron基本動作を、ステップbyステップで確認していきます。
1. OpenvSwitch初期構成の確認
OpenvSwitchの初期状態として動作しているbridge構成を確認しておきます
なお、今回は、all_in_one環境で作業しているので、Compute NodeとNetwork Nodeは、同一サーバで動作しています
(1.1) OpenvSwitchの全体構成を確認する
# ovs-vsctl show
3b782d6f-a956-4c33-85fa-527d9eb2a0d5
Manager "ptcp:6640:127.0.0.1"
is_connected: true
Bridge br-ex
Port "eth0"
Interface "eth0"
Port br-ex
Interface br-ex
type: internal
Bridge br-tun
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port br-tun
Interface br-tun
type: internal
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Bridge br-int
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
ovs_version: "2.10.1"
(1.2) br-int
ブリッジに収容されたPortを確認する
# ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000b675f3f6eb45
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
3(patch-tun): addr:ce:e0:2b:eb:f5:41
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
LOCAL(br-int): addr:b6:75:f3:f6:eb:45
config: PORT_DOWN
state: LINK_DOWN
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
(1.3) br-ex
ブリッジに収容されたPortを確認する
# ovs-ofctl show br-ex
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000526d7a08dd4d
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
1(eth0): addr:52:54:00:2b:07:df
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
LOCAL(br-ex): addr:52:6d:7a:08:dd:4d
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
2. Networkリソース作成の作業履歴
実際に、Networkリソースを作成します
(2.1) Networkリソースを作成する
# openstack network create ipv4-net
(2.2) Networkリソースを確認しておく
# openstack network show ipv4-net -f json
{
"provider:physical_network": null,
"ipv6_address_scope": null,
"dns_domain": null,
"is_vlan_transparent": null,
"revision_number": 2,
"port_security_enabled": true,
"provider:network_type": null,
"id": "0c048c13-6884-4fdc-9d1a-491a2143884b",
"router:external": "Internal",
"availability_zone_hints": "",
"availability_zones": "",
"segments": null,
"name": "ipv4-net",
"ipv4_address_scope": null,
"shared": false,
"project_id": "f2de30617f9d4ac495035a6cf44ad7b9",
"status": "ACTIVE",
"subnets": "",
"description": "",
"tags": "",
"updated_at": "2020-03-15T23:42:13Z",
"is_default": null,
"provider:segmentation_id": null,
"qos_policy_id": null,
"admin_state_up": "UP",
"created_at": "2020-03-15T23:42:13Z",
"mtu": 1450
}
3. Subnetリソース作成の作業履歴
Subnetリソースを作成します
(3.1) Subnetリソースを作成する
# openstack subnet create --subnet-range 10.0.0.0/24 --network ipv4-net ipv4-subnet1
(3.2) Subnetリソースを確認しておく
# openstack subnet show ipv4-subnet1 -f json
{
"service_types": "",
"description": "",
"enable_dhcp": true,
"segment_id": null,
"network_id": "0c048c13-6884-4fdc-9d1a-491a2143884b",
"created_at": "2020-03-15T23:43:17Z",
"tags": "",
"dns_nameservers": "",
"updated_at": "2020-03-15T23:43:17Z",
"ipv6_ra_mode": null,
"allocation_pools": "10.0.0.2-10.0.0.254",
"gateway_ip": "10.0.0.1",
"revision_number": 0,
"ipv6_address_mode": null,
"ip_version": 4,
"host_routes": "",
"cidr": "10.0.0.0/24",
"project_id": "f2de30617f9d4ac495035a6cf44ad7b9",
"id": "e2dc9080-84c7-4c37-bf71-1f1f3bb3f1d8",
"subnetpool_id": null,
"name": "ipv4-subnet1"
}
(3.3) Portリソース(DHCP)を確認しておく
# openstack port list -f json
[
{
"Status": "DOWN",
"Fixed IP Addresses": "ip_address='10.0.0.2', subnet_id='e2dc9080-84c7-4c37-bf71-1f1f3bb3f1d8'",
"ID": "d1496152-b807-4c38-b350-7c570d0a794d",
"MAC Address": "fa:16:3e:a2:b5:b6",
"Name": ""
}
]
# openstack port show d1496152-b807-4c38-b350-7c570d0a794d -f json
{
"allowed_address_pairs": "",
"extra_dhcp_opts": "",
"updated_at": "2020-03-15T23:43:18Z",
"dns_domain": null,
"device_owner": "network:dhcp",
"revision_number": 3,
"port_security_enabled": false,
"fixed_ips": "ip_address='10.0.0.2', subnet_id='e2dc9080-84c7-4c37-bf71-1f1f3bb3f1d8'",
"id": "d1496152-b807-4c38-b350-7c570d0a794d",
"description": "",
"binding_vnic_type": "normal",
"qos_policy_id": null,
"mac_address": "fa:16:3e:a2:b5:b6",
"project_id": "f2de30617f9d4ac495035a6cf44ad7b9",
"status": "DOWN",
"binding_profile": null,
"binding_vif_type": null,
"binding_vif_details": null,
"tags": "",
"dns_assignment": null,
"trunk_details": null,
"security_group_ids": "",
"device_id": "dhcpf4ce2912-1ee5-5084-ac17-a8fe43c4ca19-0c048c13-6884-4fdc-9d1a-491a2143884b",
"name": "",
"admin_state_up": "UP",
"network_id": "0c048c13-6884-4fdc-9d1a-491a2143884b",
"dns_name": null,
"created_at": "2020-03-15T23:43:18Z",
"data_plane_status": null,
"binding_host_id": null
}
(3.4) DHCP用ネームスペースが正しく作成されたことを確認する
# ip netns
qdhcp-0c048c13-6884-4fdc-9d1a-491a2143884b (id: 0)
# ip netns exec qdhcp-0c048c13-6884-4fdc-9d1a-491a2143884b ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
8: tapd1496152-b8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether fa:16:3e:a2:b5:b6 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 brd 10.0.0.255 scope global tapd1496152-b8
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fea2:b5b6/64 scope link
valid_lft forever preferred_lft forever
(3.5) DHCP用ネームスペースで動作するdnsmasqプロセスを確認する
# ps -ef|grep dnsmasq
nobody 3607 1 0 08:43 ? 00:00:00 dnsmasq --no-hosts --no-resolv --pid-file=/var/lib/neutron/dhcp/0c048c13-6884-4fdc-9d1a-491a2143884b/pid --dhcp-hostsfile=/var/lib/neutron/dhcp/0c048c13-6884-4fdc-9d1a-491a2143884b/host --addn-hosts=/var/lib/neutron/dhcp/0c048c13-6884-4fdc-9d1a-491a2143884b/addn_hosts --dhcp-optsfile=/var/lib/neutron/dhcp/0c048c13-6884-4fdc-9d1a-491a2143884b/opts --dhcp-leasefile=/var/lib/neutron/dhcp/0c048c13-6884-4fdc-9d1a-491a2143884b/leases --dhcp-match=set:ipxe,175 --local-service --bind-interfaces --dhcp-range=set:tag0,10.0.0.0,static,255.255.255.0,86400s --dhcp-option-force=option:mtu,1450 --dhcp-lease-max=256 --conf-file= --domain=openstacklocal
(3.6) dnsmasqの各種設定ファイルを確認する
(3.6.1) hostファイルを確認する
fa:16:3e:a2:b5:b6,host-10-0-0-2.openstacklocal,10.0.0.2
(3.6.2) add_hostファイルを確認する
10.0.0.2 host-10-0-0-2.openstacklocal host-10-0-0-2
(3.6.3) optファイルを確認する
tag:tag0,option:router,10.0.0.1
(3.6.4) leaseファイルを確認する
1584402201 fa:16:3e:a2:b5:b6 10.0.0.2 host-10-0-0-2 *
(3.7) OpenvSwitchの構成を確認する
(3.7.1) OpenvSwitchの全体構成を確認する
# ovs-vsctl show
3b782d6f-a956-4c33-85fa-527d9eb2a0d5
Manager "ptcp:6640:127.0.0.1"
is_connected: true
...(snip)
Bridge br-int
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port "tapd1496152-b8"
tag: 4095
Interface "tapd1496152-b8"
type: internal
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
ovs_version: "2.10.1"
(3.7.2) br-int
ブリッジに収容されたPortを確認する
# ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000b675f3f6eb45
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
2(tapd1496152-b8): addr:fa:16:3e:a2:b5:b6
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
3(patch-tun): addr:ce:e0:2b:eb:f5:41
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
LOCAL(br-int): addr:b6:75:f3:f6:eb:45
config: PORT_DOWN
state: LINK_DOWN
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
4.Portリソース作成の作業履歴
Portリソースを作成します
(4.1) Portリソースを作成する
# openstack port create --network ipv4-net ipv4-port1
(4.2) Portリソースを確認しておく
# openstack port show ipv4-port1 -f json
{
"allowed_address_pairs": "",
"extra_dhcp_opts": "",
"updated_at": "2020-03-15T23:53:38Z",
"dns_domain": null,
"device_owner": "",
"revision_number": 2,
"port_security_enabled": true,
"fixed_ips": "ip_address='10.0.0.4', subnet_id='e2dc9080-84c7-4c37-bf71-1f1f3bb3f1d8'",
"id": "51e9bf84-5fb1-429b-a4a8-579c092210d1",
"description": "",
"binding_vnic_type": "normal",
"qos_policy_id": null,
"mac_address": "fa:16:3e:22:0b:f1",
"project_id": "f2de30617f9d4ac495035a6cf44ad7b9",
"status": "DOWN",
"binding_profile": null,
"binding_vif_type": null,
"binding_vif_details": null,
"tags": "",
"dns_assignment": null,
"trunk_details": null,
"security_group_ids": "ae012f61-83a5-43e6-9cd8-dfeae6e62110",
"device_id": "",
"name": "ipv4-port1",
"admin_state_up": "UP",
"network_id": "0c048c13-6884-4fdc-9d1a-491a2143884b",
"dns_name": null,
"created_at": "2020-03-15T23:53:38Z",
"data_plane_status": null,
"binding_host_id": null
}
(4.3) dnsmasqの各種設定ファイルを確認する
(4.3.1) hostファイルを確認する
fa:16:3e:a2:b5:b6,host-10-0-0-2.openstacklocal,10.0.0.2
fa:16:3e:22:0b:f1,host-10-0-0-4.openstacklocal,10.0.0.4
(4.3.2) add_hostファイルを確認する
10.0.0.2 host-10-0-0-2.openstacklocal host-10-0-0-2
10.0.0.4 host-10-0-0-4.openstacklocal host-10-0-0-4
(4.3.3) optファイルを確認する
tag:tag0,option:router,10.0.0.1
(4.3.4) leaseファイルを確認する
1584402201 fa:16:3e:a2:b5:b6 10.0.0.2 host-10-0-0-2 *
(4.4) OpenvSwitchの構成を確認する
(4.4.1) OpenvSwitchの全体構成を確認する
# ovs-vsctl show
3b782d6f-a956-4c33-85fa-527d9eb2a0d5
Manager "ptcp:6640:127.0.0.1"
is_connected: true
...(snip)
Bridge br-int
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port "tapd1496152-b8"
tag: 4095
Interface "tapd1496152-b8"
type: internal
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
ovs_version: "2.10.1"
(4.4.2) br-int
ブリッジに収容されたPortを確認する
# ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000b675f3f6eb45
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
2(tapd1496152-b8): addr:fa:16:3e:a2:b5:b6
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
3(patch-tun): addr:ce:e0:2b:eb:f5:41
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
LOCAL(br-int): addr:b6:75:f3:f6:eb:45
config: PORT_DOWN
state: LINK_DOWN
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
■ テナントネットワーク動作確認
DHCPクライアント環境のネットワークインタフェースには、事前に、"fa:16:3e:22:0b:f1"のMACアドレスを設定しておき、DHCPv4プロトコルを使用して、"10.0.0.4"のIPv4アドレスが払い出されることが期待値です
# openstack port show ipv4-port1 -f json
{
...(snip)
"fixed_ips": "ip_address='10.0.0.4', subnet_id='e2dc9080-84c7-4c37-bf71-1f1f3bb3f1d8'",
...(snip)
"mac_address": "fa:16:3e:22:0b:f1",
...(snip)
}
5. クライアント環境整備の作業履歴
DHCPv4プロトコルを使用して、IPv4アドレスの割り当てが確認できるよう、クライアント環境を整備します
(5.1) client用ネームスペースを作成する
# ip netns add client
# ip netns
client
qdhcp-0c048c13-6884-4fdc-9d1a-491a2143884b (id: 0)
(5.2) vethインターフェイスを作成し、片方の端点をclient用ネームスペースに設定する
# ip link add ovs-veth0 type veth peer name client-veth0
# ip link set client-veth0 netns client
(5.3) OpenvSwitch
のbr-int
構成を確認し、各Port収容で使用しているtag
を把握しておく(この例の場合だと、"4095"
である)
# ovs-vsctl show
3b782d6f-a956-4c33-85fa-527d9eb2a0d5
Manager "ptcp:6640:127.0.0.1"
is_connected: true
...(snip)
Bridge br-int
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port "tapd1496152-b8"
tag: 4095
Interface "tapd1496152-b8"
type: internal
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
ovs_version: "2.10.1"
(5.4) vethインターフェイスの対向側の端点をOpenvSwitchのbr-intに収容設定する
# ovs-vsctl add-port br-int ovs-veth0 tag=4095
# ovs-vsctl show
3b782d6f-a956-4c33-85fa-527d9eb2a0d5
Manager "ptcp:6640:127.0.0.1"
is_connected: true
...(snip)
Bridge br-int
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port "tapd1496152-b8"
tag: 4095
Interface "tapd1496152-b8"
type: internal
Port "ovs-veth0"
tag: 4095
Interface "ovs-veth0"
Port br-int
Interface br-int
type: internal
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
ovs_version: "2.10.1"
(5.5) client側vethインターフェイスにMACアドレスを設定する
# ip netns exec client ip link set dev client-veth0 address fa:16:3e:22:0b:f1
# ip netns exec client ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
9: client-veth0@if10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether fa:16:3e:22:0b:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
(5.6) vethインターフェイスをUPに設定する
# ip netns exec client ip link set client-veth0 up
# ip link set ovs-veth0 up
# ip netns exec client ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
9: client-veth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:22:0b:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::f816:3eff:fe22:bf1/64 scope link
valid_lft forever preferred_lft forever
# ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000b675f3f6eb45
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
2(tapd1496152-b8): addr:fa:16:3e:a2:b5:b6
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
3(patch-tun): addr:ce:e0:2b:eb:f5:41
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
4(ovs-veth0): addr:2e:51:c2:35:ec:2b
config: 0
state: 0
current: 10GB-FD COPPER
speed: 10000 Mbps now, 0 Mbps max
LOCAL(br-int): addr:b6:75:f3:f6:eb:45
config: PORT_DOWN
state: LINK_DOWN
speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
6. dhclient動作確認の作業履歴
実際に、DHCPv4プロトコルを使用して、IPv4アドレスの割り当てを確認します
(6.1) dhclientを起動する
# ip netns exec client dhclient client-veth0
(6.2) DHCPv4プロトコルで払い出されたIPv4動作を確認する
(6.2.1) IPv4アドレスを確認する
# ip netns exec client ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
9: client-veth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:22:0b:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.0.0.4/24 brd 10.0.0.255 scope global dynamic client-veth0
valid_lft 86393sec preferred_lft 86393sec
inet6 fe80::f816:3eff:fe22:bf1/64 scope link
valid_lft forever preferred_lft forever
(6.2.2) ルーティング情報を確認する
# ip netns exec client ip route show
default via 10.0.0.1 dev client-veth0
10.0.0.0/24 dev client-veth0 proto kernel scope link src 10.0.0.4
(6.2.3) DHCPサーバとの疎通性を確認する
# ip netns exec client ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.675 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.102 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.102 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.103 ms
^C
--- 10.0.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.102/0.245/0.675/0.248 ms
(6.3) dnsmasqの各種設定ファイルを確認する
(6.3.1) hostファイルを確認する
fa:16:3e:a2:b5:b6,host-10-0-0-2.openstacklocal,10.0.0.2
fa:16:3e:22:0b:f1,host-10-0-0-4.openstacklocal,10.0.0.4
(6.3.2) leaseファイルを確認する
1584403881 fa:16:3e:22:0b:f1 10.0.0.4 host-10-0-0-4 *
1584402201 fa:16:3e:a2:b5:b6 10.0.0.2 host-10-0-0-2 *
(6.4) DHCPクライアントでのlease情報を確認する
lease {
interface "client-veth0";
fixed-address 10.0.0.4;
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
option dhcp-lease-time 86400;
option dhcp-message-type 5;
option domain-name-servers 10.0.0.2;
option dhcp-server-identifier 10.0.0.2;
option interface-mtu 1450;
option dhcp-renewal-time 43200;
option broadcast-address 10.0.0.255;
option dhcp-rebinding-time 75600;
option host-name "host-10-0-0-4";
option domain-name "openstacklocal";
renew 1 2020/03/16 09:32:04;
rebind 1 2020/03/16 21:11:21;
expire 2 2020/03/17 00:11:21;
}
DHCPクライアント環境に、"10.0.0.4/24"のIPv4アドレスが割り当てられたことが確認できました。
以上です。