应该说N1的VPN是很烂的,特别对比iPhone的VPN。

N1下,包括目前所有的Android ROM,
PPTP的VPN都不太灵光,官方ROM有时候不知道是superboot搞的还是怎么的,/etc/ppp/ip-up-vpn会没有了执行权,需要chmod
755 /etc/ppp/ip-up-vpn后,VPN才能拨上,而且即使连上了,总是过一会儿就不通。

好在CM ROM里加上了OpenVPN的支持,不过配起来也不简单

http://openvpn.net/index.php/open-source/documentation/howto.html
这份HOWTO是教怎么架OpenVPN服务器的,这里不多说。要点是:
a) 协议选tcp,
b) 要push "redirect-gateway", 至于DNS一类的,push了也没用,下面会讲。

主要讲一下在手机上怎么设定:

1. 导入证书:
前面的HOWTO有教怎么生成ca.crt, client.crt, client.key, 可以通过以下命令生成N1可以导入的P12格式
openssl pkcs12 -export -in client.crt -inkey client.key -certfile
ca.crt -out client.p12

把生成的client.p12拷到sdcard根目录下,在设置->位置和安全->从SD卡安装,导入client.p12, 按提示操作

2. 设定VPN连接
这个相信大家知道在哪,要点是,
a) 设置两个证书时都选刚才导入的那个
b) 如果是OpenVPN服务器的一般配置,会有LZO压缩,要在菜单的高级设定里勾上,不然拨上了可能网也不通,
c) 高级里选tcp协议

3. 如果成功拨通,可以试试ping 8.8.8.8 看通吗。可以在市场上安装一个VPN Widget这样就可以从桌面直接进VPN界面

4. 这时候国内的网站应该能上了,但是国外的一些网站还是上不了,原因为DNS被污染了,而目前android上的openvpn并没有支持相应的dns设置,
所以只能在市场上安装一个GScript Lite, 里面建一个叫"Set DNS"的脚本,这么写
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4

5. 每次拨通VPN后,运行"Set DNS"脚本,然后应该就能访问各类网站了。

写得比较简单,希望能帮到一些同好。