温馨提示×

linux dhcp怎么排错

小樊
44
2026-09-21 23:08:10
栏目: 智能运维

下面按常见排错思路 + 常用命令给你一个 Linux DHCP 排错清单,适用于 DHCP 客户端(获取不到 IP) 和 DHCP 服务器(分配不了 IP) 两种情况。


一、先确认是客户端还是服务器端问题

  • 客户端:机器拿不到 IP(169.254.x.x)
  • 服务器:其他机器拿不到 IP,但服务器本身正常

二、客户端排错(Linux 当作 DHCP 客户端)

1. 看网卡是否 UP

ip link
ip addr

确保网卡状态是 UP,没 UP 就:

ip link set eth0 up

2. 手动申请 IP(看报错)

dhclient -v eth0

或(旧系统):

dhcpcd eth0

观察:

  • 有没有 DHCPDISCOVER
  • 有没有 DHCPOFFER
  • 卡在哪一步

3. 释放并重新获取

dhclient -r eth0
dhclient eth0

4. 检查 NetworkManager(桌面/服务器常见)

systemctl status NetworkManager

确认网卡是 auto 或 dhcp 模式。

5. 看系统日志

journalctl -u NetworkManager
journalctl -u dhclient
dmesg | tail

6. 防火墙/SELinux(少见但存在)

getenforce
iptables -L

三、服务器端排错(Linux 作 DHCP Server,如 isc-dhcp)

1. 服务是否运行

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

2. 配置文件语法

dhcpd -t

常见错误:

  • subnet 写错
  • 掩码不对
  • 括号不匹配

3. 监听网卡是否正确

编辑:

/etc/default/isc-dhcp-server

确认:

INTERFACESv4="eth0"

4. 地址池是否耗尽

cat /var/lib/dhcpd/dhcpd.leases

看是否有可用 IP。

5. 防火墙是否放行 DHCP

udp 67,68
iptables -A INPUT -p udp --dport 67 -j ACCEPT

6. 抓包看请求是否到达

tcpdump -i eth0 udp port 67 or udp port 68
  • 有 DISCOVER 没 OFFER → 服务器问题
  • 没 DISCOVER → 网络/交换机问题

四、网络层常见坑

  • 跨网段没配 DHCP Relay
  • 交换机 VLAN 隔离
  • 虚拟机能通但物理机不通(MAC 过滤)
  • 多个 DHCP 服务器冲突

五、快速判断流程(最简版)

  1. ip addr → 网卡 UP?
  2. dhclient -v → 哪一步卡?
  3. tcpdump → 请求到没到?
  4. 服务端 dhcpd -t + 日志
  5. 防火墙 / 地址池 / 中继

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

  • 是 客户端还是服务器
  • 发行版(CentOS / Ubuntu / Debian)
  • 报错日志或 dhclient -v 输出

我可以直接帮你定位。

0 踩