我在 Linux 服务器上设置了 OpenVPN。我的所有互联网流量都通过该服务器的 VPN。我在家里运行 Windows 7。我在 Wireshark 中注意到 DNS 查询没有通过加密隧道,而是直接发送到我的 ISP 指定的 DNS 服务器。
为了解决这个问题,我尝试将 OpenVPN 的 DNS 从服务器推送到我的计算机,并在无线适配器的配置选项中输入 DNS 地址。这似乎已经防止了 DNS 泄漏,但这是正确的解决方法吗?如果我没有将 DNS 地址从服务器推送到客户端,而只是在客户端的无线适配器中设置 DNS,那么我就无法访问任何网站。如果我只是推送 DNS 但没有在适配器中设置它,那么一些 DNS 请求仍然会泄漏到 ISP 的 DNS 服务器。
答案1
VPN 非常适合加密数据,但它的另外两个主要功能是假设另一个 IP 地址和更改国籍以访问受位置限制的内容。它之所以有效,是因为 VPN 允许您选择备用出口服务器,它会假装您确实位于该服务器,并通过该服务器路由您的数据。
然而,WebRTC 等安全漏洞可以绕过 VPN 的位置更改功能。这在所谓的泄漏中很明显。您可以通过使用 IP 地址工具或网站在连接到 VPN 之前和之后检查您的 IP 地址来判断是否存在泄漏,例如:
如果 IP 地址与 VPN 目标服务器的 IP 匹配,则一切正常。要发现是否存在 DNS 泄漏,更直接、更可靠的方法是:
该网站还提供了如何手动正确修复 DNS 泄漏的说明,并提供了可下载的工具来自动修复 DNS 泄漏。它的工作原理是自动执行查找和修复泄漏所需的手动步骤。
只需下载并安装免费的 DNS 修复工具到 VPN 文件夹即可。请记住在安装时暂时关闭防病毒软件,因为某些 AV 程序会阻止其正确安装。正确安装后,它可以与 OpenVPN 和大多数其他 VPN 完美配合。该工具可在此处找到:
https://www.dnsleaktest.com/how-to-fix-a-dns-leak.html
下面进一步解释如何防止 DNS 泄漏:
https://www.bestvpn.com/blog/5184/4-ways-to-prevent-a-dns-leak-when-using-vpn/
答案2
您说所有流量都经过 VPN,您能检查 udp 流量是否经过 VPN 吗?DNS 查询是通过 UDP 而不是 TCP 完成的。我认为 OpenVPN 路由 UDP,但我不知道您的配置,所以可能是这样。您可以通过查询其他名称服务器(如 4.2.2.2 或 8.8.8.8)并查看它是否经过 VPN 来检查这一点。
根据 VPN 另一端的位置,您可能无法从另一端查询 ISP 的 DNS 服务器,许多解析 DNS 服务器会阻止来自其自己网络之外的任何内容的查询。
答案3
我使用 freevpn.me 服务。我也遇到了 DNS 请求泄漏的问题。但是,我总是通过 TCP 连接,因为 UDP 对我来说根本不起作用。即使我打开了路由器上的所有端口。
对于我来说,使用 socks 代理可以正确防止 DNS 泄漏。
这对我有用(一步一步): 在我的 Windows 系统(客户端)上
- 安装 Firefox 并禁用 WebRTC 检测。
- 为 Firefox 安装 Foxyproxy
- 强制 Firefox 仅接受来自带有(Comodo Free)防火墙的 VPN 适配器的数据,如果您的 VPN 崩溃,则这是一个永久性的终止开关。
- 从互联网收集 socks 代理信息并配置 foxyproxy。==> 我使用“xroxy (dot) com”来过滤和查找“socks 代理”,并使用 www.sockslist.net 检查代理是否有效。这样,您应该已经更改了 DNS,并增加了一层安全保护。
当你想要下载种子时这也有效:
您可以将 Vuze 设置为仅接受来自 VPN 适配器(IP 绑定)的数据,并将其设置为也使用 socks 代理。这样,您就可以确保 Vuze 不使用来自路由器的 DNS。如果 VPN 中断,Vuze 将无法下载,因为 IP 绑定,类似于防火墙终止开关。
如果 Socks 代理失败,Firefox 会停止工作,如果 Vuze 无法正常工作,它会将绿色代理图标(位于底部)更改为黄色/红色。这样您就可以停止 torrent 并为此目的寻找新的代理。