温馨提示×

ubuntu dhcp如何调试日志

小樊
44
2026-09-28 07:10:47
栏目: 智能运维

在 Ubuntu 上调试 DHCP(通常是 isc-dhcp-server 或 systemd-networkd / NetworkManager 场景)可以从服务端和客户端两个角度入手。下面按常见情况说明。


一、DHCP 服务端调试(isc-dhcp-server)

1. 查看默认日志

Ubuntu 中 DHCP 服务日志一般写入 syslog:

sudo grep dhcpd /var/log/syslog

或实时查看:

sudo tail -f /var/log/syslog | grep dhcpd

2. 提高 DHCP 日志级别(调试模式)

编辑 DHCP 服务配置:

sudo systemctl edit isc-dhcp-server

添加以下内容(覆盖启动参数):

[Service]
ExecStart=
ExecStart=/usr/sbin/dhcpd -f -d -cf /etc/dhcp/dhcpd.conf -lf /var/lib/dhcp/dhcpd.leases

参数说明:

  • -f:前台运行
  • -d:调试模式(输出详细日志)
  • -cf:指定配置文件
  • -lf:指定租约文件

然后重启服务:

sudo systemctl daemon-reload
sudo systemctl restart isc-dhcp-server

此时日志会非常详细,可直接看到 DISCOVER / OFFER / REQUEST / ACK。


3. 临时前台运行(最快调试方式)

sudo systemctl stop isc-dhcp-server
sudo /usr/sbin/dhcpd -f -d -cf /etc/dhcp/dhcpd.conf

Ctrl+C 退出。


二、DHCP 客户端调试(Ubuntu 客户端)

1. 使用 dhclient 调试

sudo dhclient -v eth0

-v 显示详细过程。

释放并重新获取:

sudo dhclient -r eth0
sudo dhclient -v eth0

查看客户端日志:

journalctl -u dhclient

2. 使用 NetworkManager 调试

sudo nmcli general logging level DEBUG

查看日志:

journalctl -u NetworkManager -f

恢复:

sudo nmcli general logging level INFO

三、systemd-networkd(服务器版常见)

如果你用的是 systemd-networkd:

sudo systemctl status systemd-networkd
journalctl -u systemd-networkd -f

在 .network 文件中确保:

[Network]
DHCP=yes

四、抓包确认 DHCP 报文(非常关键)

sudo tcpdump -i eth0 port 67 or port 68 -e -n

你应该看到:

  • DHCP Discover
  • DHCP Offer
  • DHCP Request
  • DHCP ACK

五、常见排查点

  • 防火墙是否放行 67/68 UDP
  • 接口是否在 dhcpd.conf 中声明
  • 是否跨网段但缺少 dhcp relay
  • 地址池是否耗尽
  • 多 DHCP 服务冲突

如果你能补充说明:

  • Ubuntu 版本
  • 是 服务端还是客户端
  • 用的是 isc-dhcp-server / NetworkManager / systemd-networkd

我可以给你更精准的调试命令。

0 踩