以下是基于Amazon EC2/Ubuntu搭建PPTPD服务提供VPN连接的过程记录。至于为什么要搞VPN,大家都懂的。。。而我主要是要访问Python的一些网站以及使用我非常喜欢的Google docs。
PPTP采用TCP 1723端口,因此在Amazon EC2的防火墙配置中,必须打开这个端口,否则client端无法接入。(网上有文章说也需要打开47端口(GRE端口),我在Amazon EC2上试验的结论是不需要特别设置。)
step1: 安装pptpd
很简单的命令:sudo apt-get install pptpd
step2: 修改pptpd的配置
有三个文件需要修改:
(1)修改/etc/pptpd.conf,添加以下内容(原文件中可能已经有这些内容,确认即可)
localip 192.168.0.1
remoteip 192.168.0.100-110
localip是指VPN建立后,client可以用这个地址访问VPN server。
remoteip就是指分配给client的地址。
(2)修改/etc/ppp/pptpd-options文件,增加以下内容:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
这个配置是使用Google的DNS解析。至于原因,你也懂的。。。
(3)修改/etc/ppp/chap-secrets文件,设置客户机登录的帐号和密码:
# client server secret IP addresses
yxh * 1234 *
“client”是用户名,“server”是服务器地址,”secret”是登录密码,”IP addresses”是分配的地址,如果指定*,则由系统自动分配。
step3: 重起PPTPD服务:sudo service pptpd restart
step4:配置IP转发
修改/etc/sysctl.conf文件,打开以下的注释:
net.ipv4.ip_forward=1
step5: 重新加载IP转发配置
sudo sysctl -p
step6: 修改Iptables,设置网络地址翻译
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
上述设置在重起后悔丢失,因此需要修改 /etc/rc.local文件, 在exit 0之前添加以下语句:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
step7: 配置DDNS
Amazon EC2每次重起都会变换地址,因此我们需要配置DDNS来获取动态域名解析。在这一步之前,需要在DynDNS上申请一个免费的域名。国内类似的服务商是“花生壳”,我没有进行过测试,不知道“花生壳”是否也适合以下配置。
申请到DynDNS帐号后,下载并安装ddclient:
sudo apt-get install ddclient
安装过程中, 会有简单的界面进行配置, 设置dyndns的相关帐户即可。设置完成后, 配置信息会自动写入/etc/ddclient.conf文件。
完成上述步骤后,就可以在windows客户端拨号建立VPN连接了。
以上资料主要参考一篇国外有人的blog:http://www.dikant.de/2010/10/08/setting-up-a-vpn-server-on-amazon-ec2/
最后说一下Amazon EC2。国内有几篇很不错的翻译可以参考,不过最好的资料还是Amazon本身提供的GettingStarted文档,虽然是英文的,不过非常简单明了:http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide