温馨提示×

linux dhcp怎样排错

小樊
48
2026-09-12 15:52:46
栏目: 智能运维

在 Linux 下排查 DHCP(客户端或服务器) 问题,可以按“分层排查”的思路来。下面分别说明 DHCP 客户端排错 和 DHCP 服务器排错,并给出常用命令。


一、DHCP 客户端排错(Linux 获取不到 IP)

1. 确认网卡状态和连接

ip link
ip addr
  • 网卡是否 UP
  • 是否插好网线 / 连接 Wi‑Fi
  • 是否有 NO-CARRIER
ip link set eth0 up

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

# 释放
dhclient -r eth0

# 重新获取(调试模式)
dhclient -v eth0

-v 可以看到 DHCP 交互过程


3. 抓包看 DHCP 过程(非常重要)

tcpdump -i eth0 port 67 or port 68 -nn

正常应有:

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

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


4. 检查是否被 NetworkManager 干扰

systemctl status NetworkManager

可临时停止测试:

systemctl stop NetworkManager
dhclient eth0

5. 检查防火墙(客户端少见)

确保未阻止 UDP 67/68:

iptables -L -n

6. 常见客户端错误

  • DHCPNAK → 服务器拒绝(IP 冲突 / 地址池问题)
  • 超时 → 网络不通 / 无 DHCP 服务器
  • 拿到 169.254.x.x → 获取失败(APIPA)

二、DHCP 服务器排错(Linux 作为 DHCP Server)

以 ISC DHCP(dhcpd) 为例


1. 服务是否运行

systemctl status dhcpd
journalctl -u dhcpd -xe

2. 配置文件语法检查

dhcpd -t

或指定配置:

dhcpd -t -cf /etc/dhcp/dhcpd.conf

3. 常见配置错误

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option subnet-mask 255.255.255.0;
  option domain-name-servers 8.8.8.8;
}

问题常见点:

  • 网卡 IP 不在 subnet 内
  • 少 range
  • 多网卡未指定监听接口

4. 指定监听网卡(多网卡服务器)

/etc/sysconfig/dhcpd
DHCPDARGS="eth0"

5. 防火墙(服务器端很重要)

firewall-cmd --add-service=dhcp
firewall-cmd --runtime-to-permanent

或 iptables:

iptables -I INPUT -p udp --dport 67 -j ACCEPT

6. 查看租约情况

cat /var/lib/dhcpd/dhcpd.leases

三、通用排错流程总结

✅ 物理层(网卡 / 网线)
✅ 网络层(VLAN / 路由 / 防火墙)
✅ DHCP 服务(配置 / 运行)
✅ 抓包验证(tcpdump)


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

  • 是 客户端拿不到 IP 还是 服务器不分配
  • 使用的发行版(CentOS / Ubuntu / Debian)
  • 报错信息或日志

我可以帮你精准定位。

0 踩