前几天在面包的虚拟机上一直测试VPN,经常出现错误619拨号错误,查询了很多资料,发现与IPTABLES防火墙设置有关系,本想研究IPTABLES防火墙设置,但是用PPTUY无法连接到面包的虚拟机,所以作罢,只能另寻他处,经过面包的建议,选择了EC2重新架设VPN,下面是如何架设VPN的步骤:
– 安装 PPTPD
sudo apt-get install pptpd
-修改PPTPD的配置
vi /etc/pptpd.conf
在里面我是选择了recommended
Localip
192.168.0.1
Remoteip
192.168.0.234-238
修改完成,保存
然后继续修改/etc/ppp/pptpd-options,改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
当然你可以选择Amazon的DNS 172.16.0.23(我是比较喜欢用google的DNS)
修改完成,保存
接着修改/etc/ppp/chap-secrets,这里存放在VPN的用户名和密码,里面的第一列是用户名,第二列是服务器名(默认pptpd),第三列是密码,第四列是IP限制(如果没有任何的IP限制,就填*即可)
– 修改/etc/pptpd.conf
找到logwtmp语句,并且注释
– 重新启动pptpd
sudo /etc/init.d/pptpd restart
– 开启ipv4 forward
修改/etc/sysctl.conf,然后找到如下语句并取消注释
net.ipv4.ip_forward=1
使新配置生效:
sudo sysctl -p
– 安装IPTABLES
sudo apt-get intall iptables
– 修改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
因为PPTPD采用TCP 1723端口,所以在EC2的左边Navigation选择NETWORK & SECURITY -> Security Groups, 然后选择和INSTANCE匹配的Security Group, 在Inbound里面建立一个新RULE, 选择Custom TCP rule, Port range里面填写1721-1723, Source里面填写0.0.0.0,然后点击Add Rule, 最后是Apply rule changes
这样操作后,客户端机器应该就可以上网了。
但是,只是这样,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:
sudo iptables-save > /etc/iptables-rules
然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:
pre-up iptables-restore < /etc/iptables-rules