DHCP服务故障排除:Linux系统如何解决
导读:Linux DHCP 故障排除全流程 一 快速判断与定位 明确角色:是 DHCP 服务器(提供地址)还是 DHCP 客户端(获取地址)。 服务器侧先看服务与语法: 查看服务状态:sudo systemctl status isc-dhc...
Linux DHCP 故障排除全流程
一 快速判断与定位
- 明确角色:是 DHCP 服务器(提供地址)还是 DHCP 客户端(获取地址)。
- 服务器侧先看服务与语法:
- 查看服务状态:
sudo systemctl status isc-dhcp-server(或dhcpd)。 - 语法检查:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf。 - 日志定位:
sudo journalctl -xeu isc-dhcp-server,或grep dhcpd /var/log/syslog /var/log/messages。
- 查看服务状态:
- 客户端侧快速验证:
- 释放并续租:
sudo dhclient -r < iface> & & sudo dhclient < iface>(或使用dhcpcd)。 - 查看租约与状态:
cat /var/lib/dhcp/dhclient.leases,ip addr show < iface>,systemctl status NetworkManager。
- 释放并续租:
- 若系统启动阶段卡在 DHCP,多为网络或客户端配置异常,先检查物理连接与客户端配置,再回到服务器侧排查。
二 服务器侧排查与修复
- 服务与安装:
- 未安装则安装:
sudo apt-get update & & sudo apt-get install isc-dhcp-server。 - 启动与自启:
sudo systemctl start isc-dhcp-server、sudo systemctl enable isc-dhcp-server。
- 未安装则安装:
- 配置与接口:
- 语法校验:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf。 - 监听接口:编辑 /etc/default/isc-dhcp-server,设置
INTERFACESv4="eth0 ens33"(示例)。 - 地址池与网络声明:确保子网、掩码、网关、DNS 与地址池范围匹配实际网段,避免重叠与耗尽。
- 语法校验:
- 端口与防火墙:
- 端口占用:
sudo ss -ulnp | grep -E ':(67|68)',释放冲突进程或更换服务端口(不建议生产环境)。 - 放行规则:
- UFW:
sudo ufw allow 67/udp,sudo ufw allow 68/udp - firewalld:
sudo firewall-cmd --add-service=dhcp --permanent & & sudo firewall-cmd --reload - nftables/iptables:放行 UDP 67/68。
- UFW:
- 端口占用:
- 日志与验证:
- 实时日志:
sudo journalctl -fu isc-dhcp-server - 分配验证:观察日志中 DISCOVER/OFFER/REQUEST/ACK 流程与租约分配情况。
- 实时日志:
三 客户端侧排查与修复
- 基本连通与配置:
- 确认网卡启用:
ip link set < iface> up。 - 设置为自动获取:
- ifupdown:
/etc/network/interfaces中auto < iface>,iface < iface> inet dhcp - Netplan:
/etc/netplan/*.yaml中dhcp4: true,然后sudo netplan apply - NetworkManager:
nmcli con mod < id> ipv4.method auto;nmcli con up < id>
- ifupdown:
- 确认网卡启用:
- 获取与诊断:
- 重新获取:
sudo dhclient -v < iface>(观察 Discover/Offer/Request/ACK)。 - 查看租约:
cat /var/lib/dhcp/dhclient.leases;查看地址:ip -4 addr show < iface>。 - 抓包定位:服务器侧
sudo tcpdump -ni < iface> port 67 or port 68 -vv,客户端侧对应接口抓包,核对是否收发 DHCP 报文。
- 重新获取:
- 特殊场景:
- 跨网段需 DHCP 中继(IP Helper/Relay),确保中继指向正确的 DHCP 服务器地址与 VLAN 可达。
- 启动阶段卡住:检查网线/交换机端口、客户端配置与默认路由,必要时临时手动配置 IP 恢复业务。
四 常见错误对照表
| 症状 | 高频原因 | 快速验证 | 修复建议 |
|---|---|---|---|
| 服务起不来 | /etc/dhcp/dhcpd.conf 语法错误 | sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf |
按报错修正子网、池、网关、DNS 等声明 |
| 启动但无分配 | 未监听正确接口 | cat /etc/default/isc-dhcp-server;`ss -ulnp |
grep :67` |
| 客户端一直获取不到地址 | 防火墙阻断 UDP 67/68 | sudo ufw status/firewall-cmd --list-all |
放行 67/68,或临时停用防火墙验证 |
| 启动阶段卡住 | 物理链路/客户端配置异常 | ip link、journalctl -u NetworkManager |
检查网线/交换机端口与客户端 ifupdown/Netplan 配置 |
| 跨网段无法获取地址 | 缺少 DHCP 中继 | 抓包无服务器响应 | 在网关/三层设备配置 DHCP Relay 指向服务器 |
五 最小可用配置示例
- 服务器 /etc/dhcp/dhcpd.conf(示例,按需调整接口与网段):
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 domain-name-servers 8.8.8.8, 8.8.4.4; } - 接口绑定:/etc/default/isc-dhcp-server
INTERFACESv4="eth0" - 客户端 Netplan(示例 /etc/netplan/01-netcfg.yaml):
应用:network: version: 2 ethernets: eth0: dhcp4: truesudo netplan apply。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: DHCP服务故障排除:Linux系统如何解决
本文地址: https://pptw.com/jishu/770351.html
