Total Pageviews

Sunday, 15 April 2012

解决挂vpn后仍然打不开某些网站的问题

配置好了vpn,仍然不能连接facebook等国外网站,但是ip显示的是美国或者加拿大,搜寻了一番,终于找到解决办法,首先还是先看下原因吧,

"域名服务器缓存污染(DNS cache poisoning),又名域名服务器快取侵害(DNS cache pollution),是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址(参考维基百科)。我博客里经常提到的GFW DNS污染,就是GFW通过一定手段将你的域名解析到错误的IP的情况,一般我们使用VPN/SSH过程中就可以防止DNS污染,不过如果VPN/SSH配置不当连接VPN/SSH后依然会有DNS污染发生,这样就导致了像twitter这样被DNS污染的网站无法访问,而像我博客igfw.tk这样域名只是被关键词过滤的网站却可以打开的情况发生。"

一、Windows XP系统PPTP/L2TP VPN问题
Windows XP系统连接PPTP VPN或L2TP IPSec VPN后,会发现VPN接口配置的DNS的优先级不够而无法对内部主机进行解析(Windows 7系统不存在此问题)。如果你系统设置的默认DNS服务器是国内DNS服务器,就会导致虽然已经连上了VPN但是无法打开youtube、twitter等网站的现象,这是因为系统默认的DNS还是原来的本地连接的国内DNS,依旧被劫持中。
要解决此问题,请编辑注册表以便将“远程访问服务”连接移至绑定顺序中的最优先位置:
单击“开始”,单击“运行”,在“打开”框中键入 regedit,也就是注册表设置,然后单击“确定”。
单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage
在右窗格中,双击“Bind”。
在“数值数据”框中,选择“\Device\NdisWanIp”项,按 Ctrl+X,单击设备列表的顶部,然后按 Ctrl+V。
单击“确定”,然后退出注册表编辑器。
通过该操作,调整了TCP/IP的绑定序列,将VPN拨号等初级接口的优先级调整为第一。这样,通过该端口得到的TCP/IP属性会被优先使用。重启系统后再连接VPN你就可以打开youtube、twitter等网站了。

二、Windows系统OpenVPN问题
有些openvpn服务商的配置没有充分考虑我国特殊国情,导致openvpn连接上服务器之后DNS解析依然使用本机默认DNS服务器,如果你系统设置的默认DNS服务器是国内DNS服务器,就会导致虽然已经连上了openvpn但是无法打开youtube、twitter等网站的现象。这个问题openvpn服务商是完全可以避免的,即使你已经发生了这种情况也可以很容易地自行解决。解决方法很简单,在你openvpn配置文件(写字板打开.ovpn文件修改)最顶端添加如下两行保存后重连vpn即可
route-method exe
route-delay 2

三、使用chnroutes后的问题
以前有网友反应使用chnroutes自动区分国内国外线路,实现VPN智能云梯后无法打开youtube、twitter等网站,我当时只是说更换本机DNS服务器为国外DNS服务器即可解决,后来我发现是上面说的两种情况在作怪,按照上面的两种做法修改后,一般就不会出现此问题了。不过有时候VPN速度过慢,导致DNS在VPN通道DNS服务器上查询超时,就依然会在本机DNS服务器进行DNS查询,如果你系统设置的默认DNS服务器是国内DNS服务器,就依然会导致虽然已经连上了vpn但是无法打开youtube、twitter等网站的现象。所以如果可能尽量是设置本机DNS服务器为国外DNS服务器,这样不需上述(一、二)两个问题中的设置,就可以打开youtube、twitter等网站了。
以上问题解决的前提是你VPN连接后的确设置了VPN的DNS服务器(至于VPN不能设置其DNS服务器的情况,可以自行设置,PPTP/L2TP VPN直接在VPN拨号连接的Internet协议里设置,OpenVPN可以在配置文件中加入dhcp-option DNS 8.8.4.4 类似设置来设置),且连接VPN后查看IP为国外地址。

No comments:

Post a Comment