openstack的dhcp服务器默认采用dnsmasq软件实现,可以通过ps -ef | grep dnsmasq 查看,当虚拟机启动过程中发起dhcp请求,日志在宿主机可以在系统日志下:
May 23 22:30:29 localhost dnsmasq-dhcp[5043]: DHCPDISCOVER(tapf7321a93-ac) fa:16:3e:33:0a:6a
May 23 22:30:29 localhost dnsmasq-dhcp[5043]: DHCPOFFER(tapf7321a93-ac) 10.0.0.41 fa:16:3e:33:0a:6a
May 23 22:30:29 localhost dnsmasq-dhcp[5043]: DHCPREQUEST(tapf7321a93-ac) 10.0.0.41 fa:16:3e:33:0a:6a
May 23 22:30:29 localhost dnsmasq-dhcp[5043]: DHCPACK(tapf7321a93-ac) 10.0.0.41 fa:16:3e:33:0a:6a host-10-0-0-41
可以看到dhcp四个阶段:发现、提供、选择、确认。
同时可以通过 nova console-log instance查看虚拟机启动日志
Starting network...
udhcpc (v1.18.5) started
Sending discover...
Sending select for 10.0.0.41...
Lease of 10.0.0.41 obtained, lease time 86400
如果出现dhcp问题可以先查看日志,重启dnsmasq进程。
killall dnsmasq
service neutron-dhcp-agent restart
dhcp使用的是udp协议,默认端口为68和67(68端口发送到67),可以
tcpdump -n port 67 or port 68