好,假设我们认为你已经有了个amazon的帐号,你需要登录到amazon的后台console,选择上边的EC2的tab,然后注意选择左上角的大区,这取决于你的server位于哪个大陆,我们这里选择的是tokyo东京。
我们要申请一个EC2的实例,这里推荐的是ubuntu11.04 32位的系统(RHEL5.x,6.x的tiny instance也是收费的,慎用)。这里面有一系列的步骤,之需要选择最低配置即可,中间会有一个生成安全私钥的过程,会直接下载的本地电脑中,假设这个密钥是sec.pem。我们保存好这个文件,之后的ssh,scp等操作都需要用这个文件。
启动你的console。并设置安全拦截(Security groups)放行443,1194(openvpn)和1723(pptp)
-----------------------------
22 (SSH)0.0.0.0/0
443 (HTTPS)0.0.0.0/0
1194 0.0.0.0/0
1723 0.0.0.0/0
-----------------------------
ssh:ssh -i sec.pem ubuntu@{dynamic_Dns_name}连接到你启动的ubuntu实例。ssh成功后,查看一下虚拟主机的配置,是613M内存,8G硬盘空间;
安装pptpd,apt-get install pptpd;
修改一下/etc/pptpd.conf 打开localip和remoteip选项;
修改/etc/ppp/pptpd-options, 设置dns ms-dns 8.8.8.8 ms-dns 8.8.4.4;
修改/etc/ppp/chap-secrets 设置客户端的用户名密码 pptpd * pptpd *;
重启pptpd:pptpd restart;
修改/etc/sysctl.conf,打开注释的net.ipve.ip_forward=1,然后运行sudo sysctl -p
修改iptables,设置网络地址翻译:sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;/sbin/iptables -A INPUT -p gre -j ACCEPT
设置到/etc/rc.local避免重启丢失:在exit 0之前添加:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;iptables –table nat –append POSTROUTING –jump MASQUERADE;
好,上面的一系列步骤帮助 你设置好了一个pptp的server,下面要在ubuntu的环境下设置client。
首先create一个pptp连接,pptpsetup --create pptpd --server ec2_dynamic_DNS --username [帐号] --password [密码] --encypt,以后连接和取消vpn执行pon pptpd和poff pptpd即可;
ppp/peers/下建立了一个vpn_name的连接,info如下:
----------vpn_name--------
# written by pptpsetup
pty "pptp xxx.xxx.xx.xxx --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name xxx
remotename pptpd
ipparam pptpd
require-mppe-128
--------------------------------
最后一行表示使用mppe128位加密;(即--encypt)
执行sudo pon即可拨号,这里有一个debug模式,命令是:pon xxx debug dump logfd 2 nodetach (xxx为你设置的vpn名称)
拨号成功后,可以通过增加路由策略实现有选择的翻墙;
增加一个路由策略:route add -net 199.59.0.0/16 dev ppp0,即可把twitter加入到vpn策略中。
错误分析:
如果在debug模式下出现多行sent [LCP ConfReq ...] 这时说明你的GRE协议穿透有问题;你需要重点关注协议在哪一方被拦截了;
可以通过抓包来判断,分别在server和client对1723端口抓包,可以轻易的判别是server拦截了GRE还是client端的环境拦截了GRE。server你需要配置好防火墙规则,client你需要检查你的网络防火墙设置。
====PPTP结束====