Ubuntu DHCP如何诊断故障
导读:Ubuntu DHCP故障诊断流程 一 快速定位问题归属 判断是DHCP服务器还是客户端侧异常:服务器侧关注服务是否运行、配置与租约;客户端侧关注是否拿到地址、DNS与路由。 查看接口是否拿到地址:运行ip addr show,若只有in...
Ubuntu DHCP故障诊断流程
一 快速定位问题归属
- 判断是DHCP服务器还是客户端侧异常:服务器侧关注服务是否运行、配置与租约;客户端侧关注是否拿到地址、DNS与路由。
- 查看接口是否拿到地址:运行ip addr show,若只有inet6链路本地地址而无inet(IPv4)地址,多半是DHCP未成功。
- 查看默认路由:运行ip route,若缺少default via < 网关IP> ,即使拿到地址也可能无法出网。
- 检查DNS:运行resolvectl status,确认是否获取到DNS服务器;若IP可达但域名不通,多为DNS问题。
- 虚拟机场景:确认虚拟网络模式(如NAT/桥接)与DHCP服务是否启用,以及是否与宿主机在同一网段。
二 服务器端排查 isc-dhcp-server
- 服务状态与日志:运行sudo systemctl status isc-dhcp-server查看是否active;用sudo journalctl -u isc-dhcp-server或grep dhcp /var/log/syslog定位错误。
- 配置语法与租约:执行sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf检查语法;检查**/var/lib/dhcp/dhcpd.leases**租约文件是否正常写入。
- 监听接口与地址:编辑**/etc/default/isc-dhcp-server**,确保INTERFACESv4绑定到正确的上行接口(如eth0);确认该接口已配置静态IP且位于配置的子网内。
- 端口与防火墙:DHCP使用UDP 67/68。用ss -ulnp | grep ':67|:68’查看是否被占用;若启用ufw,放行规则如sudo ufw allow 67,68/udp。
- 地址池与租约:在**/etc/dhcp/dhcpd.conf中确认subnet与range覆盖客户端网段;租约时间不宜过长,必要时调整为1天**以缓解地址耗尽。
- 时间同步:服务器时间漂移会导致租约异常,建议安装并启用ntp或systemd-timesyncd同步时钟。
三 客户端排查
- 确认请求DHCP:查看接口配置是否为dhcp4: true(Netplan),或使用nmcli connection show “< 连接名> ” | grep ipv4.method确认为auto;必要时用**sudo dhclient -v < 接口> **主动发起请求并观察Discover/Offer/Request/ACK过程。
- 获取结果与路由:运行ip addr show < 接口> 检查是否出现inet地址;运行ip route确认default路由;运行resolvectl status核对DNS。
- 日志与抓包:查看journalctl -u NetworkManager或grep dhcp /var/log/syslog;抓包定位链路问题:sudo tcpdump -i < 接口> -nn port 67 or 68(服务器端可见67端口收Discover,客户端可见68端口收Offer/ACK)。
- 防火墙与安全组:确保客户端与服务器之间UDP 67/68未被阻断(本地ufw或云安全组策略)。
四 常见症状与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| 接口只有**fe80::**链路本地地址 | ip a;route -n | 确认启用dhcp4: true或nmcli为auto;用dhclient重试;检查服务器地址池与接口绑定 |
| 拿到地址但无法上网 | ip route;ping 默认网关 | 检查默认路由是否存在;确认网关可达;排查VLAN/ACL/物理链路 |
| 能ping IP但不能解析域名 | resolvectl status;nslookup example.com | 核对DHCP分配的DNS;临时改用8.8.8.8验证;修正服务器或客户端DNS配置 |
| 服务器启动失败 | systemctl status isc-dhcp-server;dhcpd -t | 修正**/etc/dhcp/dhcpd.conf语法;设置正确的INTERFACESv4**;排查端口占用 |
| 虚拟机拿不到地址 | 虚拟网络模式;宿主机DHCP;同网段 | 将VM网络设为NAT/桥接并确保DHCP启用;核对子网与网关一致性 |
| 租约耗尽或地址冲突 | /var/lib/dhcp/dhcpd.leases;日志 | 缩短default/max-lease-time;扩大range;排查重复静态IP与冲突设备 |
五 应急与验证
- 临时静态应急:在**/etc/netplan/*.yaml中设置addresses/routes/nameservers后执行sudo netplan apply**,先恢复连通性,再回查DHCP根因。
- 回归验证:确认ip a有inet地址、ip route有default、resolvectl status有可用DNS,并能稳定访问内外网资源。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu DHCP如何诊断故障
本文地址: https://pptw.com/jishu/772438.html
