自己搭的 DHCP/DNS 服务器罢工了?从地址池到解析链路的排查

一、DHCP 分不出地址

客户端一直拿不到 IP 或拿到 169.254 开头的假地址,说明 DHCP 没响应。

  1. 确认 DHCP 服务在运行:Linux 用 systemctl status dhcpd,看是否监听 67/UDP。
  2. 检查地址池是否耗尽或被静态绑定占满,扩大 range 或释放过期租约。
  3. 跨 VLAN 时需在交换机/路由器上配 DHCP 中继(relay),把广播请求转到服务器单播。
  4. 确认防火墙放行 67、68 端口,且服务器网卡 IP 与地址池同网段。

二、DNS 解析失败

  1. dig @服务器IP 域名 直连服务器测,若通说明服务本身 OK,问题在客户端配置。
  2. 检查 zone 文件语法:named-checkzone 校验,常见是缺末尾点号、TTL 写错导致加载失败。
  3. 确认递归查询已开启,且 allow-recursion 没把客户端网段挡在门外。

三、上下游联动

  1. 客户端 DHCP 下发的 DNS 应是你自建服务器,而非运营商 DNS,否则走了别处。
  2. 上游转发器(forwarders)要能通外网,可用 dig @8.8.8.8 域名 验证出口。
  3. 排错顺序:客户端拿到正确 DNS→服务器能递归→上游可达,缺一环都解析不了。

四、日志是真相来源

打开 DHCP/DNS 的详细日志(dhcpd.log、querylog),看请求是否到达、回的什么。日志比猜快十倍。

技术总结

自建 DHCP/DNS 故障遵循服务运行→地址池/zone 正确→端口放行→上下游可达。先用 dig/systemctl 定位环节,再看日志细化,避免盲目重启。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注