OpenVPN连接后, nslookup或ping不正确导致海外网站无法访问的解决方法

OpenVPN连接后, nslookup或ping不正确导致海外网站无法访问的解决方法

现象

有时候,我们会遇到openVPN成功连接后,浏览器访问某海外域名无法访问的情况。

这时,我们通过nslookup和ping测试域名,可能得到结果类似下图:

可见nslookup使用的DNS服务器,的确是openVPN下发的10.185.179.1,返回的google.com的服务器IP为172.217.161.174;

而实际ping google.com,或者tracert –d google.com,访问的google.com的IP,却并不是openVPN解析得到的IP,而是另一个IP 172.217.27.142。

还有一种情况,是openVPN成功连接后,nslookup、ping或者tracert,走的都是本地互联网,全部没有走openVPN。

分析

openVPN的连接,本质上是新建了一个虚拟网卡,让流量优先走到这个网卡上,才能实现通过openVPN加速的效果。

在powershell中执行如下指令,可以看到各个网卡的优先级

Get-NetIPInterface | select ifindex,*int*

我们主要看 InterfaceMetric这一列,数值越小代表优先级越高。

如果openVPN虚拟网卡的优先级不足够高,就可能发生如下情况:

  • nslookup的DNS解析走到了openVPN虚拟网卡,但是ping和浏览器访问的实际流量,还走之前的无线网卡/有线网卡
  • nslookup的DNS解析,和ping都走之前的无线网卡/有线网卡

解决方法

解决方法的核心思路就是提高openVPN虚拟网卡的优先级。

windows访问:控制面板\网络和 Internet\网络连接

找到已启用的TAP-Windows Adapter V9这个openVPN使用的虚拟网卡

右键单击属性

双击“Internet协议版本4(TCP/IPv4)”

点击“高级”

取消勾选“自动跃点”,然后在“接口跃点数”处输入数字5。

然后上面的三个窗口一定要全部点击“确定”,逐一关闭刚刚打开的弹窗。

配置完毕。

之后,为了避免openVPN软件运行权限导致的问题,我们用管理员权限去运行openVPN软件。

操作方法如下:

首先,如果openVPN软件已经打开,我们先关闭openVPN软件,如下图。

然后找到openVPN软件图标快捷方式,右键点击“以管理员身份运行”。

然后再正常连接openVPN即可。

注:

  1. 如果上面三个窗口没有全部点击“确定”,则配置有可能不生效。
  2. 本例中“接口跃点数”的5是一个比较保险的、优先级比较高的数字。您可以根据自己的情况选择合适的数字。

正常的话,不用重启电脑,配置会立即生效。

此时您可以再试一下nslookup和ping的IP是否相同,以及浏览器访问是否正常可达了。

【注意】刚刚完成修改后,之前浏览器可能有缓存导致依旧无法马上访问,这时,可以手动清除浏览器缓存,或者更换一个浏览器软件进行尝试。

针对这个问题,我曾阅读并参考过如下两个链接,这里附上,供扩展阅读:

https://superuser.com/questions/966832/windows-10-dns-resolution-via-vpn-connection-not-working

https://windowsreport.com/nslookup-works-but-ping-fails/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注