本项目面向家庭网络的 DNS 内网化改造:让 *.xiejun-server.top 在家中优先解析到 192.168.50.164(NPM/AdGuard),而不是绕行公网 VPS,从而降低 App 打开服务的延迟,并避免逐台设备手工改 DNS。
起因是华为路由 X1 Pro 的局域网页没有“DHCP 下发 DNS”选项,路由器自身的静态 DNS 也不会下发给客户端。最终采用 NAS(Debian 13,.164)运行 dnsmasq 作为 DHCP 服务器,配置 port=0 不占用 53 端口,由 AdGuard 继续负责 DNS;路由器关闭 DHCP,并保留静态 DNS 指向 .164。地址池为 192.168.50.60–99,租期 12h,按改造前 ARP 保留 13 条静态租约。
实测 K50 获取到 .112/.119,photo 解析到 .164,curl 总耗时约 70ms,改造前为 374–730ms。另在 .223 配置备用 DHCP 与看门狗,NAS 不可达时接管发地址;当前主方案已落地,备用方案完成演练。
功能
- 路由器关闭 DHCP,由 NAS 上的 dnsmasq 统一下发地址、网关和 DNS
- dnsmasq 设置 port=0,53 端口留给 AdGuard,内网域名解析到 .164
- 地址池 192.168.50.60–99、租期 12h,并按改造前 ARP 保留 13 条静态租约
- 备用 DHCP 部署在 .223,看门狗检测 .164 不可达时启动接管
- 主 dnsmasq 配置 Restart=always,保留 leases 与 journal 便于排查
- 支持约 30 秒回滚:重新打开路由器 DHCP,并停止 NAS 上的 dnsmasq
技术栈
使用 / 部署教程
1. 准备主机
在 Debian 13 NAS(192.168.50.164,接口 enp2s0)上确认静态 IP 与 MAC,避免 DHCP 地址漂移。
2. 安装并配置 dnsmasq
apt install dnsmasq,编辑 /etc/dnsmasq.d/lan-dhcp.conf:port=0、interface=enp2s0、bind-dynamic、dhcp-authoritative、log-dhcp;地址池 192.168.50.60–192.168.50.99,租期 12h,网关 192.168.50.1,DNS 下发 192.168.50.164, 223.5.5.5;按改造前 ARP 写入 13 条静态保留。启用并启动 dnsmasq.service。
3. 关闭路由器 DHCP
登录华为路由 X1 Pro:更多功能 → 网络设置 → 局域网 → DHCP 服务器 → 关闭并确认。路由器“我要上网 → 静态 DNS”保持 192.168.50.164 / 223.5.5.5,仅供路由器自身解析。
4. 验证
在客户端重连 Wi-Fi 或等租约到期,查看 dnsmasq.leases 或 journalctl -u dnsmasq 中的 DHCPACK;ping photo.xiejun-server.top 应到 192.168.50.164,并 curl 内网服务与 ping www.baidu.com 验证外网。
5. 可选:备用 DHCP
在 .223 安装 dnsmasq 并 systemctl mask dnsmasq.service,使用独立配置 dnsmasq-standby.conf 和 dhcp-standby.service;由 watch.sh 定时 ping .164,连续失败启动备用、连续成功停止。演练可用 iptables 临时阻断 ICMP,结束后删除规则。
6. 回滚
路由器重新打开 DHCP;在 .164 执行 sudo systemctl stop dnsmasq && sudo systemctl disable dnsmasq;必要时恢复运营商 DNS。
常见问题
为什么需要关闭路由器 DHCP?
华为路由 X1 Pro 没有“DHCP 下发 DNS”选项,实测路由器静态 DNS 也不会下发给客户端,因此改为 NAS 上的 dnsmasq 统一发地址和 DNS。
为什么 dnsmasq 要设置 port=0?
port=0 让 dnsmasq 只做 DHCP,不占用 53 端口;53 端口继续留给 AdGuard 容器负责 DNS 解析。
.164 挂了怎么办?
已在 .223 部署备用 DHCP 与看门狗,NAS 连续不可达时接管发地址;已联网设备在租约内不受影响。
客户端多久会切到新 DNS?
需要等租约到期或手动重连 Wi-Fi;不同设备不会立即切换,遇到解析仍走公网可先重连 Wi-Fi 再验证。
注意
- .164 宕机时新设备暂时拿不到 IP,已联网设备在租约内不受影响;备用 DHCP 需确认看门狗状态。
- AdGuard 容器宕机时客户端会先超时再回退 223.5.5.5,能上网但内网重写失效。
- 其他设备需等租约到期或重连 Wi-Fi 才会切换 DNS,遇到解析仍走公网先重连再看。

评论
加载中…