为了更好的浏览国外的网站,笔者购买了一个vps服务器,50一个月。通过socks代理和vpn都能成功达到目的,过程记录如下:
- socks代理。ssh的实现,譬如openssh或者putty都已经包含了这个功能。使用它们,一句命令1或者是一点设置2就能构造一个socks代理。ssh通过动态端口转发来实现socks代理,同时也支持本地和远端的端口转发服务3
- 根据2中的配置,为什么还不能浏览诸如facebook这种网站?因为默认浏览器将dns解析放在本地来做,导致dns被G-F-W劫持,现象如下:
- 当使用ISP的域名服务器时,解析facebook这类被墙网址,会返回一个server failed的answer包
- 当将域名服务器指向8.8.8.8(google提供的域名服务器),或者是自己架设的caching dns server4,5的时候,一个query包会返回两个answer包,其中一个 answer为指定的域名服务器返回的包,另一个为G-F-W制造的假数据,指向一个无法访问的ip6
- 解决方法:将DNS解析放在代理端来完成,socksa4以上的协议都支持这个功能。FireFox可以通过配置network.proxy.socks_remote_dns参数来达到目的,其他浏览器暂时无此功能。可以通过sockcap这类软件来解决。
- OpenVPN:socks代理能用,但是有点麻烦,特别是对于IE类浏览器。笔者对OpenVPN的理解还比较肤浅,还有待深化。服务端配置参照7,8,客户端可以使用OpenVPN GUI9
参考文章