我目前在将子域名(例如 lan.example.com)委托给私有网络中的名称服务器时遇到一些问题。
我的私有网络被分成了子网
192.168.0.1/24 <--- 192.168.0.1
Physical LAN 172.20.20.1 ---> 172.20.20.1/24
OpenWRT Router VPN
我在物理 LAN 中运行一些服务,客户端应该使用静态 DNS 名称访问它们,无论客户端连接到物理 LAN 还是 VPN。OpenWRT 路由器还充当物理 LAN 中所有客户端的 DNS 解析器,可以解析本地主机名,例如server.lan.example.com
。
example.com 的公共可访问名称服务器具有 NS 记录
lan.example.com IN NS lan-router.example.com
lan-router.example.com IN A 192.168.0.1
理论上,所有对 *.lan.example.com 的 DNS 请求都应委托给我的 OpenWRT 盒子,但连接到 VPN 的客户端使用其家庭网络的名称服务器。这些服务器尝试递归地回答 DNS 请求,但自然无法到达192.168.0.1
。
该请求dig +trace A server.lan.example.com @8.8.8.8
工作正常,但没有该请求+trace
则不正常。
您知道如何解决此问题吗?无需192.168.0.1
为所有 VPN 客户端都设置为名称服务器?这会增加这些客户端正常互联网访问的延迟。
答案1
问题在于,您希望 DNS 根据请求者的不同做出不同的响应。这称为分割视图或分割水平配置。不幸的是,DNSMasq 对此并没有很好的支持。我强烈建议您卸载 dnsmasq 并安装 bind。在 bind 中,您可以配置视图并设置 ACL 以查看它们。实际上,您可以向 172 网络提供 172 个响应……并向 192 网络提供 192 个响应。
更多信息请见这里用于配置绑定中的分割视图。