这两天遇到一个头疼的问题,结果是手贱配置时出错。

网络环境

主路由:192.168.0.1

旁路由:192.168.0.2

实现 LAN 中的客户端通过旁路由上网,主路由的 WAN 口做了 DDNS 绑定到域名 homelab.com

主路由开启 DHCP 并将其网关和 DNS 设置为旁路由。

旁路由关闭 DHCP 并将其网关和 DNS 设置为主路由。

问题

上网和代理一切都正常,但是 LAN 中的客户端设备无法正常解析到 homelab.com,返回的不是主路由 WAN 口绑定的公网 IP 地址,而是一个 198.20.0.0 网段的私有 IP 地址。

原因

主路由和旁路由的 DNS 互相指向,导致本该解析到主路由的 DNS 请求来回在主路由和旁路由中被转发,旁路由识别不到则返回了一个私网地址。

解决办法

正确的配置方式应该如下:

主路由开启 DHCP 并将其网关设置为旁路由,DNS 设置为主路由。

旁路由关闭 DHCP 并将其网关设置为主路由。

因为客户端的 IP 配置由主路由下发,包括 DNS 配置也是,因此客户端拿到的 DNS 直接就是主路由,跟旁路由就没关系了。

如此一来,解析恢复正常。

注意

如果主路由开启了 L2TP 服务,在 L2TP 配置中的 DNS 地址也应该是主路由本身,否则上述改动还是无法让隧道过来的设备获得到正确的 DNS。