在 Ubuntu 上监控 DHCP(通常是 ISC DHCP Server 或 dnsmasq / systemd-networkd),可以从服务状态、日志、租约文件、实时抓包几个层面来做。下面按常见场景说明。
systemctl status isc-dhcp-server
systemctl status dnsmasq
systemctl status systemd-networkd
常见组合:
isc-dhcp-server)systemctl status isc-dhcp-server
journalctl -u isc-dhcp-server -f
-f 表示实时跟踪日志。
默认日志在 syslog:
tail -f /var/log/syslog | grep dhcpd
或:
journalctl -u isc-dhcp-server -f
常见日志示例:
DHCPDISCOVER from 00:11:22:33:44:55
DHCPOFFER on 192.168.1.100
DHCPREQUEST for 192.168.1.100
DHCPACK on 192.168.1.100
journalctl -u dnsmasq -f
或:
tail -f /var/log/syslog | grep dnsmasq
cat /var/lib/dhcp/dhcpd.leases
实时查看:
watch cat /var/lib/dhcp/dhcpd.leases
cat /var/lib/misc/dnsmasq.leases
这是最直接、最可靠的监控方式。
sudo tcpdump -i eth0 port 67 or port 68 -e -n
或只看 DHCP 事件:
sudo tcpdump -i eth0 udp port 67 -v
常见字段:
编辑:
sudo nano /etc/dhcp/dhcpd.conf
增加:
log-facility local7;
然后:
sudo nano /etc/rsyslog.conf
添加:
local7.* /var/log/dhcpd.log
重启:
sudo systemctl restart rsyslog
sudo systemctl restart isc-dhcp-server
之后:
tail -f /var/log/dhcpd.log
#!/bin/bash
while true; do
tail -n 10 /var/log/dhcpd.log
sleep 5
done
或检测异常:
grep "DHCPNAK" /var/log/dhcpd.log
如果你能告诉我:
我可以直接给你一套可复制的配置方案。