请考虑以下情形:
我连接到一个局域网,该局域网有自己的私有 DNS 服务器(称为
lan-dns
)。此 DNS 服务器用于解析 LAN 上某些私有主机的名称。任何其他 DNS 请求都会转发到 Internet 上的 DNS 服务器。我想通过 VPN 连接到另一个远程 LAN。远程 LAN 也有一个私有 DNS 服务器(
vpn-dns
为参数命名),它用于解析远程网络上私有主机的名称。什么时候不是连接到 VPN 后,我将能够通过其名称访问 LAN 上的主机。但是当我是连接到 VPN 后,由于远程网络的 DNS 覆盖了我本地网络上的 DNS,因此我将无法访问我本地网络上的主机。
连接到 VPN 时,如果我强制 DNS 服务器恢复,
lan-dns
那么我将无法解析远程网络上的主机名称。
解决这个问题最简单的方法是什么?有可能吗?
这种情况肯定变得越来越常见,但我似乎找不到一个优雅的解决方案。
答案1
在 IP 级别,您正在寻找的是所谓的拆分隧道,它是从客户端配置的(至少在非托管场景中)。它允许对本地局域网地址的请求使用您的本地(逻辑)网络,而对远程局域网地址的请求则通过 VPN 隧道。如果未启用拆分隧道,则连接到 VPN 的主机将根本无法与本地局域网 IP 范围内的其他计算机通信,因此它不仅仅是一个 DNS 解析问题。启用拆分隧道后,如果您要访问内部网,则默认路由必须指向本地局域网上的网关,否则对于使用哪个网络会出现歧义。
但这里的问题是 DNS。windows(以及 linux)将 DNS 服务器配置绑定到本地接口,而不是单个可路由连接,这意味着您一次只能使用一个 DNS 服务器,并且不能根据目标地址有条件地选择一个。尝试在 VPN'ing PC 上运行 DNSMasq,如下所述:http://blog.nixpanic.net/2013/03/use-dnsmasq-for-separating-dns-queries.html
答案2
请参阅我的回答这个超级用户问题以获得最简单的解决方案,并附有屏幕截图和对潜在问题的基本解释。