我有一台具有 LAN 网络连接的机器,用于访问互联网。这台机器还必须连接到 VPN 连接。当 VPN 连接时,Windows 似乎会询问 VPN 连接的 DNS 服务器第一的,然后是为 LAN 连接配置的 DNS 服务器。由于 VPN 速度很慢,我需要反过来解决性能问题。
那么,如何配置哪个连接的 DNS 服务器应为 Windows 计算机上的主服务器?远程 VPN DNS 提供了一些非公开的名称解析,因此我仍然需要它。
我已经取消选中 TCP/IP 设置中的“在远程网络上使用默认网关”选项。
编辑:
我正在 Windows 7 机器上进行实验,但我确实需要能够在 Windows Server 2003 和 Windows 7 上进行此操作。
我认为我的路由表没问题。10.0.0.1 是我的本地网关,而 192.168.0.82 是 VPN 连接的网关。
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.3 20
10.0.0.0 255.255.255.0 On-link 10.0.0.3 276
10.0.0.3 255.255.255.255 On-link 10.0.0.3 276
10.0.0.255 255.255.255.255 On-link 10.0.0.3 276
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.0.0 255.255.255.0 192.168.0.82 192.168.0.89 21
192.168.0.89 255.255.255.255 On-link 192.168.0.89 276
217.157.12.231 255.255.255.255 10.0.0.1 10.0.0.3 21
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 10.0.0.3 276
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 10.0.0.3 276
255.255.255.255 255.255.255.255 On-link 192.168.0.89 276
===========================================================================
Persistent Routes:
None
当我进入网络连接 -> 高级设置来更改网络绑定顺序时,我只能查看以下连接:本地连接和 [远程访问连接],其中本地连接列在第一位。我正在使用的 VPN 连接未列出(但它确实存在于“网络连接”窗口中)。
答案1
从您问题的表述方式来看,您的预期似乎是当 Windows 需要解析名称时,它会询问主 DNS 服务器。如果主 DNS 服务器不知道答案,它就会询问辅助 DNS 服务器。
我希望以上内容不是您所期望的,但如果是的话,那么让我告诉您为什么这是一个错误。
DNS 不是这样工作的。解析器唯一会故障转移到辅助 DNS 服务器的情况是当主服务器根本没有响应时举个例子可以说明:
假设您的主 DNS 服务器位于 1.1.1.1,辅助 DNS 服务器位于 2.2.2.2。您的客户端按此顺序配置它们。2.2.2.2 托管私有区域 foocompany.local;1.1.1.1 不托管自己的区域,并且对互联网主机进行根查找。
如果您的客户端尝试查找 someserver.foocompany.local,1.1.1.1 将返回 NXDOMAIN(例如“我查询了根服务器,他们说该域不存在”)。您的解析器将不是然后询问 2.2.2.2 它知道什么,除非 1.1.1.1 未能在超时期限内(通常为 2 秒)回复。它将停止查找。此外,您的客户端将缓存NXDOMAIN 结果,按照RFC2308。即使你更改 NIC 设置,使 2.2.2.2 成为主服务器,你仍会获得 NXDOMAIN 结果,直到本地 NXDOMAIN 缓存过期。你可以通过发出以下命令来验证这一点ipconfig /displaydns在命令提示符下。
据我所知,Windows 的 DNS 解析器会将 NXDOMAIN 缓存很短的时间 - 5 分钟。但这仍然很烦人。
无论如何。我意识到这与您的问题有点无关,但澄清这一点可能会让您对计划的设计有所领悟。例如:您可能希望 VPN 的 DNS 服务器首先进行解析。虽然它有点慢,但它知道的更多,因为它可以解析 VPN 私有的域和公共互联网域;而本地 LAN DNS 解析器对 VPN 私有的域一无所知。
干杯!
答案2
听起来你想设置分裂隧道。首先,验证您的 VPN 软件是否正确设置了客户端 PC 上的路由。命令:
route print
将显示客户端主机的路由表。您应该有一个指向 VPN 接口默认网关的办公室网络条目。最重要的是您的默认路由具有最低度量值的地址指向您的 LAN 接口的默认网关。
确认路由配置正确后,下一步要检查的是网络接口的绑定顺序。这是各种网络服务尝试每个网络适配器的顺序。有关如何在 Windows XP 上更改它的说明,请参见这里。
我找不到针对 Vista 的类似 KB 文章,但总结如下:
从‘网络连接’窗口:
Organize -> Layout -> Menubar
菜单栏将会出现。从那里:
Advanced -> Advanced Settings
将进入所需的选项对话框。对于您而言,您的 VPN 适配器应列在您的 LAN 接口下方。
注意:更改绑定顺序以便首先使用本地互联网连接可能会导致与 VPN 网络上的主机名称解析相关的不同问题。如果没有更多信息,很难确定。
编辑:再考虑一下,我不确定你怎么能不是连接到 VPN 时使用 VPN DNS。如果您使用互联网 DNS 服务器,那么您将无法解析 VPN 上不在公共 DNS 中的任何内容。我能想到的唯一方法是配置本地 DNS 服务器,并让它将对 VPN DNS 区域(*.local,来自您的示例)的查询转发到 192.168.0.3,并将其他所有内容转发到您的 ISP DNS 服务器。
使用公司 DNS 服务器真的会造成如此大的性能损失吗?每个解析都将被缓存,您的实际数据流量将直接进入互联网,绕过 VPN。
答案3
当 VPN 连接时,Windows 似乎首先询问 VPN 连接的 DNS 服务器,然后再询问为 LAN 连接配置的 DNS 服务器。
这个是正常的。
大多数 VPN 支持分屏模式和/或私密模式,您可以在其中有首先请求内部 DNS,否则公共 DNS 将返回外部地址或NXDOMAIN
。
由于 VPN 很慢,为了解决性能问题,我需要反过来做。
它可能可以解决这个问题,但前提是您的内网 DNS 区域是完全私密的(即使用虚假 TLD,例如“.local”)。根据 Murali 的回答,您需要运行本地 DNS 服务器,根据后缀将查询转发到 VPN 或公共 DNS。
答案4
这是一个老问题,但我在处理类似的事情时遇到了它,并且有一些额外的信息需要添加:
虽然 quux 在技术上是正确的,但实际上 Windows 确实允许这种行为。“使用远程网络上的默认网关”选项正是这样做的;选中后,如果本地 DNS 返回 NXDOMAIN,Windows 就会尝试 VPN DNS。这在这里不起作用,因为 Windows 首先尝试 VPN。但如果他可以改变该顺序,那么选中该选项就会给他带来他想要的行为。
有一种方法可以实现你想要的,因为我刚刚做到了。我的家庭网络过去依赖于路由器的内置 DHCP 服务器,设置为通告 OpenDNS 服务器。我最近在网络上的一台单独机器上设置了一个 DHCP+DNS 服务器,设置为将非本地地址转发到 OpenDNS。
由于某种原因,这改变了 Windows 优先使用 DNS 服务器的方式。以前,它会首先使用 VPN DNS(我希望的行为),现在它首先使用本地 DNS(您希望的行为)。如果我关闭本地 DHCP+DNS 并重新使用路由器,VPN 会再次优先使用。
这些信息可能有助于您识别问题...如果您确实解决了问题,请告诉我,因为我正在尝试找出如何做相反的事情。
注意:我知道这也许应该是一条评论,但有一个代表要求......