2009年6月25日星期四

OpenVPN翻墙

其实blogger很早之前就被屏蔽了,由于太忙,想大不了有什么想写的写在豆瓣日记里呗,所以就没有积极的考虑翻墙。最近google reader和www.google.com终于也被屏蔽了,越想越气,这人还怎么活。开始积极的思考翻墙。

首先想到的是tor。tor确实好配置,不过龟速实在难以忍受,于是想到了OpenVPN。目前找到了两个免费的OpenVPN服务,分别是ultravpn和alonweb。首先到alonweb的官方网站下载必要的文件,解压到家目录中。然后把解压出的alonweb.conf中的"redirect-gateway"改为"redirect-gateway def1"(如果你自己是处于一个LAN网络中已经有一个default gateway的话)。

modprobe tun,然后sudo openvpn --config alonweb.conf --ca alonweb.crt就可以启动openvpn了,不要忘了先要安装openvpn这个软件,和在alonweb的官网上注册。

然后就可以测试了,ping xxx.xxx.0.1(这是启动openvpn时提示信息最后几行中显示的),如果能ping通,就成功了一半。至此,就建立了自己的电脑到远程vpn服务器的一个隧道。如果启动openvpn时把"redirect-gateway"注释掉的话,使用route命令查看一下本地的路由表,会发现只有到xxx.xxx.0.1的连接会通过新建立的隧道,而其它通信还是通过原来的网关。但是我们用vpn的目的就是用来翻墙,所以必须要进行一些额外的配置。其第一步,就是在配置文件中设置redirect-gateway def1(刚才我们已经完成了),接下来还有2步:
1. sudo sysctl -w net.ipv4.ip_forward=1,允许内核进行ip forward
2. 设置iptables:
iptables -t nat -A POSTROUTING -s xxx.xxx.xxx.0/24 -o eth0 -j MASQUERADE
/etc/rc.d/iptables save
/etc/rc.d/iptables start
注意这里的xxx.xxx.xxx.0/24是你自己所处的实际内网的网段,与OpenVPN的输出信息完全无关。我就是在这里纠结了好长一段时间,后来想想,这里的含义应该是:由于我处于这个内网,我的所有访问必然会经过这个内网,所以只要把与这个内网的所有通信都route到隧道就可以了。

经过以上的设置,本机所有的网络通信都通过隧道进行,这显然不是最合理的。至于如何精细调节,可能就要在iptables或route上下功夫了,不在本文讨论之列。经测试,速度还是可以忍受的,比tor要快得多。

最后ps一下:alonweb是有广告的(ultraweb还没试),不过这对于我来说反而是一种安慰——自由软件事业还是需要大家的支持。

没有评论: