使用 OpenVPN 客户端配置文件设置 DNS 服务器

Fah*_*suf 22 networking windows vpn openvpn

如何仅使用客户端配置在客户端上设置 DNS 服务器。我的客户端是一台 Windows 机器,我想在客户端连接时更改 DNS 服务器,并在我与 VPN 断开连接时恢复到原始配置。

到目前为止,我发现的所有信息都是指使用服务器的配置将 DNS 配置推送到客户端,但在这种情况下,我无法更改服务器配置,目前每次连接到 VPN 时都手动执行此操作。在连接期间设置本地计算机 DNS 服务器的 openvpn 配置选项会很棒。

小智 17

您可以将以下内容添加到客户端配置文件中。

dhcp-option DNS <dns_server_ip_address>
Run Code Online (Sandbox Code Playgroud)

在服务器端,它本来是:

push "dhcp-option DNS <dns_server_ip_address>"
Run Code Online (Sandbox Code Playgroud)

好像dhcp-option两边都用。您可以对route.

  • 这对我不起作用,尽管它看起来应该如此。该选项不在生成的 client.ovpn 中。当我添加它时,它仍然不起作用。从带有库存固件 3.0.0.4.376_3861 的 Asus RT-N66U 运行 (7认同)
  • 我将它添加到我的 .ovpn 文件中,就在 &lt;ca&gt; 标签之前,它工作得非常好!谢谢!我在我的 Windows 机器上使用 OpenVPN 2.4.4 Windows 版本 6.2 对此进行了测试 (4认同)

Duk*_*kem 12

除了以下两者之一:

dhcp-option DNS <dns_server_ip_address>          (add to client config)
Run Code Online (Sandbox Code Playgroud)

或者

push "dhcp-option DNS <dns_server_ip_address>"   (add to server config)
Run Code Online (Sandbox Code Playgroud)

也将这些添加到客户端配置中,以强制 Windows 使用配置的 DNS:

register-dns
block-outside-dns
Run Code Online (Sandbox Code Playgroud)

第一个强制 Windows 优先选择配置的 DNS 服务器,而不是它可能从 DHCP 收到的任何其他服务器。第二个防止 DNS 泄漏到配置的 DNS 服务器之外的任何 DNS 服务器。


小智 10

显然,Windows 中的绑定顺序有问题,至少包括 Windows 2000/XP/7。这将导致 Windows OpenVPN 客户端使用默认网络适配器的 DNS 设置而不是 VPN 适配器的设置。

要解决此问题,您需要按照绑定顺序将 VPN TUN 或 TAP 设备置于本地网络适配器上方:

  1. 通过查看输出来识别您的 VPN 设备ipconfig。对我来说,这是“本地连接 2”。记住此适配器的 IP 地址。
  2. 打开 regedit.exe 并找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces与您的 VPN 适配器的 IP 地址匹配的密钥。记住此适配器的 GUID。
  3. 转到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage并双击Bind。这将包含适配器的 GUID 列表。将与您的 VPN 设备的 GUID 对应的行剪切并粘贴到列表顶部并保存列表。

这将导致使用您的 VPN 设备的 DNS 条目(并且仅在 VPN 连接处于活动状态时)。您可以根据@brunoqc 的回答进行设置。当您使用它时,您可能还应该添加 openvpn 选项block-outside-dns,以确保 DNS 查询不会泄漏。

这个答案基于这篇非常有用的博客文章


And*_*ite 5

您可以使用批处理脚本来执行此操作,如下所示。它假设您的家庭 DNS 服务器是 1.1.1.1 和 2.2.2.2,而您的 VPN DNS 服务器是 8.8.8.8 9.9.9.9:

vpn-connect.bat:

netsh interface ip set dns "Local Area Connection" static 8.8.8.8

netsh interface ip add dns "Local Area Connection" 9.9.9.9

vpn-disconnect.bat

netsh interface ip set dns "Local Area Connection" static 1.1.1.1

netsh interface ip add dns "Local Area Connection" 2.2.2.2

我打算在这些脚本中包含连接和断开连接的方法,但是我在 OpenVPN 中没有看到通过命令行断开连接的选项。如果您希望自动连接,这应该有效:

C:\Program Files\bin\openvpn.exe C:\Program Files\conf\client.ovpn