openstack dhcp dns 说明

Neutron 提供 DHCP 服务的组件是 DHCP agent。 DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能.

流程图

配置

1
2
3
4
5
vim /etc/neutron/dhcp_agent.ini
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver #使用opens vSwitch 连接 DHCP namespace interface
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq #使用dnsmasq实现dhcp
...

当创建network并在subnet上 enable DHCP时,网络节点上的DHCP agent会启动一个dnsmasq进程为该network提供dhcp服务。

dnsmasq启动参数

1
2
3
4
5
6
7
8
9
10
[root@bj-oam-op-con01 ~(keystone_admin)]# ps -ef|grep dns
root 65713 58283 0 17:02 pts/0 00:00:00 grep --color=auto dns
nobody 124025 1 0 May12 ? 00:14:00 dnsmasq --no-hosts --no-resolv --strict-order \
--except-interface=lo --pid-file=/var/lib/neutron/dhcp/9ad1b638-a53e-4ab8-ad91-5a7f5cf90513/pid \
--dhcp-hostsfile=/var/lib/neutron/dhcp/9ad1b638-a53e-4ab8-ad91-5a7f5cf90513/host \
--addn-hosts=/var/lib/neutron/dhcp/9ad1b638-a53e-4ab8-ad91-5a7f5cf90513/addn_hosts \
--dhcp-optsfile=/var/lib/neutron/dhcp/9ad1b638-a53e-4ab8-ad91-5a7f5cf90513/opts \
--dhcp-leasefile=/var/lib/neutron/dhcp/9ad1b638-a53e-4ab8-ad91-5a7f5cf90513/leases \
--dhcp-match=set:ipxe,175 --bind-interfaces --interface=tap3b3a392a-64 --dhcp-range=set:tag0,172.28.4.0,static,86400s \
--dhcp-option-force=option:mtu,1500 --dhcp-lease-max=1024 --conf-file= --domain=tendcloud.com

–dhcp-hostsfile

存放DHCP host信息的文件,这里的 host 在我们这里实际上就是 instance。
dnsmasq 从该文件获取 host 的 IP 与 MAC 的对应关系。
每个 host 对应一个条目,信息来源于 Neutron 数据库。

1
2
3
[root@bj-oam-op-con01 ~(keystone_admin)]# cat /var/lib/neutron/dhcp/9ad1b638-a53e-4ab8-ad91-5a7f5cf90513/host
fa:16:3e:60:0c:a5,host-172-28-4-3.tang-lei.com.,172.28.4.3
fa:16:3e:b8:a3:6d,host-172-28-5-79.tang-lei.com.,172.28.5.79

–interface

指定提供 DHCP 服务的 interface。
dnsmasq 会在该 interface 上监听 instance 的 DHCP 请求。
这里的interface就是tap3b3a392a-64

引用: Openstack DHCP 说明