在 Linux 系统中,可以通过以下几种方式查找或捕获 DHCP 相关的网络包:
tcpdump 抓取 DHCP 包DHCP 协议基于 UDP,客户端使用端口 68,服务器使用端口 67。命令如下:
sudo tcpdump -i eth0 -vvv -n port 67 or port 68
-i eth0:指定网卡(根据实际网卡名替换,如 ens33 或 wlan0)。-vvv:显示详细数据包信息。-n:禁止 IP 地址反向解析(加快显示速度)。port 67 or port 68:过滤 DHCP 相关的端口。输出示例:
10:23:45.678 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from aa:bb:cc:dd:ee:ff
tshark(Wireshark 命令行工具)如果系统安装了 wireshark 工具包,可以用以下命令:
sudo tshark -i eth0 -f "udp port 67 or port 68" -Y "bootp.option.dhcp"
-f:抓包过滤规则(基于端口)。-Y:显示过滤规则(仅显示 DHCP 相关包)。如果是查找已分配的 DHCP 租约(非实时抓包),可以检查以下文件:
- DHCP 客户端租约(客户端记录):
bash
cat /var/lib/dhcp/dhclient.leases
- DHCP 服务器租约(如果本机是 DHCP 服务器):
bash
cat /var/lib/dhcpd/dhcpd.leases # 常见于 dhcpd 服务
journalctl 查看 DHCP 日志对于使用 systemd-networkd 或 dhclient 的系统:
journalctl -u systemd-networkd | grep -i dhcp
# 或
journalctl -u dhclient | grep -i dhcp
dhclient 手动触发 DHCP 请求如果需要重新获取 DHCP 并观察过程:
sudo dhclient -v eth0 # -v 表示输出详细信息
root 权限(使用 sudo)。ip a 查看活跃接口)。sudo systemctl restart networking)。根据你的具体需求(调试、监控或日志分析),选择合适的方法即可。