项目/网络基础设施
网络基础设施 · 运行中 · AI 自动收录

家庭网络全屋 DNS 内网化改造

家庭网络全屋 DNS 内网化改造

用 NAS 上的 dnsmasq 接管 DHCP,把家庭域名解析到内网,降低服务访问延迟。

✦ NAS 用 dnsmasq 接管 DHCP,家庭域名解析到内网,访问延迟降至约 70ms。
约 4 分钟阅读
dnsmasqDHCPAdGuard内网DNS家庭网络高可用
← 返回列表

本项目面向家庭网络的 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

技术栈

Debian 13dnsmasqAdGuardsystemdiptablesNPM

使用 / 部署教程

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,遇到解析仍走公网先重连再看。

评论

加载中…