温馨提示×

ubuntu dhcp怎样调试错误

小樊
53
2026-10-12 21:24:40
栏目: 智能运维

在 Ubuntu 上调试 DHCP 问题,通常分为客户端(获取 IP)和服务端(提供 IP)两种情况。下面按常见场景给你一套系统化的排查方法。


一、确认你是在调试哪一侧

  • 客户端:Ubuntu 作为电脑 / 服务器,想从路由器或 DHCP 服务器拿 IP
  • 服务端:Ubuntu 上跑了 isc-dhcp-server / dnsmasq 等,给别人分配 IP

二、客户端 DHCP 调试(拿不到 IP)

1. 查看网络接口状态

ip addr
ip link

确认网卡是 UP 状态(不是 DOWN)。

2. 手动释放并重新获取 IP

sudo dhclient -r eth0
sudo dhclient -v eth0

-v 可以看到详细交互过程。

3. 查看 DHCP 日志

journalctl -u NetworkManager
journalctl -u systemd-networkd

或实时看:

journalctl -f

4. 抓包看 DHCP 交互(非常关键)

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

正常应看到:

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

如果只有 Discover 没有 Offer → 网络或服务器端问题。

5. 检查 Netplan 配置

cat /etc/netplan/*.yaml

示例(DHCP 客户端):

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

修改后:

sudo netplan apply

三、服务端 DHCP 调试(分配不了 IP)

1. 检查服务是否运行

systemctl status isc-dhcp-server
# 或
systemctl status dnsmasq

2. 查看服务日志

journalctl -u isc-dhcp-server -f

常见错误:

  • 配置文件语法错误
  • 监听网卡不对
  • 地址池冲突

3. 检查 DHCP 配置文件

(以 isc-dhcp-server 为例)

sudo nano /etc/dhcp/dhcpd.conf

确认:

  • subnet 正确
  • range 合理
  • 网卡在 /etc/default/isc-dhcp-server 中指定
INTERFACESv4="eth0"

4. 服务端抓包

sudo tcpdump -i eth0 port 67 -n

看不到 Discover → 客户端或网络问题。


四、常见错误速查表

现象 可能原因
一直卡在 DHCP Discover 防火墙、VLAN、交换机隔离
DHCP Offer 有但无 ACK 地址池耗尽、冲突
dhclient 报错 接口名错、权限问题
Netplan 不生效 YAML 缩进错误
虚拟机能 DHCP,物理机不能 交换机端口隔离

五、实用调试命令汇总

ip addr
ip route
systemctl status dhcpd
journalctl -u isc-dhcp-server
tcpdump -i eth0 port 67 or 68
dhclient -v eth0
netplan apply

如果你愿意,可以告诉我:

  • Ubuntu 版本(20.04 / 22.04 / 24.04)
  • 是客户端还是服务端
  • 具体报错信息或日志

我可以直接帮你定位到具体配置问题。

0 踩