收集信息

收集信息

我有一个使用 VPN 连接的客户,但是它会自动将我的 DNS 设置配置为不存在的 DNS 服务器,这意味着每次 DNS 解析都会超时,直到尝试替代方案,这会真正减慢所有 Internet 流量的速度。

有什么方法可以阻止应用程序覆盖我的 DNS 设置(不启用 UAC)?

或者,有没有办法可以设置某种本地路由,即“当针对 IP 地址 A 的 DNS 请求进来时,实际使用 IP 地址 B”?

我正在使用 Windows 8 开发人员预览版(但我认为它应该与 Windows 7 一样工作)。

谢谢

答案1

我不相信有办法防止除了在 VPN 连接上静态分配 DNS 服务器之外,还可以防止这种情况发生。

要更改查询 DNS 服务器的顺序,应该能够按照以下方式更改接口绑定顺序:https://superuser.com/a/314379/120267HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bind,但这似乎并不影响我在 Windows 7 上的个人测试中的 VPN 连接;我已经确认,无论接口绑定顺序设置如何,我的 VPN 连接始终添加到列表顶部。

但是,您可以在建立 VPN 连接后重置 DNS 更改。

收集信息

打开命令提示符(Start-> Run...-> cmd)然后运行netsh interface ipv4 show dnsservers。您将看到类似以下内容的输出:

Configuration for interface "My VPN"
    Statically Configured DNS Servers:    11.22.33.44
                                          55.66.77.88
   ...

Configuration for interface "Local Network Connection"
    DNS servers configured through DHCP:  192.168.0.1
                                          192.168.0.2
    ...

你需要接口名称对于 VPN,以及可选的非 VPN 连接的第一个DNS 服务器。在这个例子中,它们是我的VPN192.168.0.1, 分别。


全部设置

选项 1:禁用 VPN DNS

假设您根本不需要 VPN 的 DNS 服务器,您只需在命令提示符中运行以下命令:

netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no

Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no

如果再次运行netsh interface ipv4 show dnsservers,您将看到与 VPN 关联的 DNS 服务器已被删除;非 VPN 连接的 DNS 服务器将用于解析主机名。


选项 2:补充 VPN DNS

如果您需要 VPN 的 DNS 服务器来解析内联网主机名,您可以在命令提示符中运行以下命令:

netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no

Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no

在这种情况下,netsh interface ipv4 show dnsservers将显示您的非 VPN 连接的第一个 DNS 服务器已添加到 VPN 的 DNS 服务器列表的顶部。它将首先用于解析主机名,如果不成功,则回退到使用 VPN 的常规 DNS 服务器。

答案2

不幸的是,netsh 无法删除 dhcp 分配的 dns 服务器。但这可以通过清除

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

注册表项。

答案3

我遇到了类似的问题;连接到 VPN 服务器会覆盖我的工作站(远程 VPN 客户端)的 DNS,从而掩盖本地 LAN DNS。我在Stackoverflow 方面之前有人指出我应该将其发布在这里。

读完此帖子后,很明显无法使用 OpenVPN 客户端配置来阻止覆盖。我的解决方案是在 OpenVPN 配置目录中添加一个批处理文件,该文件在 OpenVPN 连接建立时执行。如果 OVPN 文件名为 company.ovpn,则在连接时运行的文件需要命名为 company_up.bat。

自从今晚早些时候我在 StackOverflow 上发布的版本以来,我对文件进行了一些扩充。现在它看起来像这样:

1: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

1:等待几秒钟再继续的黑客攻击。最新版本 (2.3) 的 OpenVPN 客户端如果没有延迟执行,将忽略 DNS 和路由更改。

2:将 VPN 连接的 DNS 设置为指向本地主机。我有一个解析器(我使用SimpleDNS Plus) 在本地主机上运行,​​它将对公司域的查询通过 VPN 转发到公司 DNS 服务器,并将其他所有内容转发到本地 LAN DNS 服务器。请注意,我无法使用本地 LAN 解析器通过 VPN 将对公司域的查询转发到公司 DNS,因为 VPN 端点位于本地主机上。连接名称(“本地连接 4”)是在命令提示符下通过“ipconfig /all”确定的。

3:公司 VPN 服务器配置为路由全部通过 VPN 限制出站流量,同时限制出站(到 Internet) SSH 连接。这与我的工作流程相冲突,我首先删除“0.0.0.0 网络掩码 0.0.0.0”路由...

4:.. 然后我重新添加 0.0.0.0/0 路由以指向本地 LAN 网关,并将其度量(权重)设置为 1000,作为未路由的所有流量的总括。

5:如果没有“exit 0”,OpenVPN 就会发出脚本失败的错误警告(退出状态为 1)。

希望这对某些人有用..它对我来说工作得相当好(每次打开连接时不需要手动进行路由或 DNS 调整)。

答案4

您能否检查“在远程网络上使用默认网关”复选框的状态。打开 VPN 连接的属性,转到“网络”选项卡,选择 TCP/IP v4 或 TCP/IP V6,然后选择“属性”和“高级”,即可找到该复选框。该复选框可能已启用,这意味着所有互联网流量都通过 VPN 连接路由。禁用该复选框并不总是可行的,但仍然可以使用 VPN 执行您想要的操作,但可以禁用该复选框,这可能会加快互联网访问速度。

如果这没有帮助,那里有一个 DNS 选项卡,您可以尝试在那里添加您的 DNS 服务器。我试过这个,但我希望这些设置能够覆盖自动设置。

相关内容