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即可。
注:
- 如果上面三个窗口没有全部点击“确定”,则配置有可能不生效。
- 本例中“接口跃点数”的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/
发表回复