首先推荐使用AWS的EC2, 新开通账号可以获得一定时间的免费t2.micro虚拟服务器使用权限. 大家可以在aws.amazon.com找到相关的信息.
开通aws.amazon.com的账号.
进入ec2的控制面板, 开通实例. 这里实例就代表一个虚拟服务器的解决方案. 我选择的是推荐的免费ec2的t2.micro ubutntu解决方案.
生成一个私钥, 这个用来使用ssh连接你的虚拟服务器. 生成后请妥善保管. 假设我们重命名为aws.pem
chmod 400 aws.pem
ssh -i ~/Desktop/aws.pem ubuntu@public_dns_name_for_your_aws_server. 这里, @后面的需要自己替换为自己控制面板中启用的实例公网dns
登陆后, sudo -s 切换到root, 默认密码为空
安装pptp service.
apt-get update, aptitude install pptpd
编辑pptp配置文件:sudo vim /etc/pptpd.conf在最后一行加上以下代码:
localip 192.168.240.1
remoteip 192.168.240.2-9使用Google Public DNS:sudo vim /etc/ppp/pptpd-options找到包含ms-dns,去掉注释,并修改如下:
ms-dns 8.8.8.8
ms-dns 8.8.4.4但是我这里修改无效, 连接vpn后还是无法ping youtube.com, 后来我手动在vpn的advance设置中添加了8.8.4.4 dns server就可以了. 待续.
配置访问VPN的用户名和密码,将USERNAME和PASSWORD替换为你自己希望的。可以重复添加,分配给不同的用户::
echo “USERNAME pptpd PASSWORD *” | sudo tee -a /etc/ppp/chap-secrets
重启服务:
sudo /etc/init.d/pptpd restart
已经可以连接到pptp,下面配置数据转发。编辑/etc/sysctl.confsudo vim /etc/sysctl.conf将下面一行的注释去掉net.ipv4.ip_forward=1
然后重新加载sudo sysctl -p
网络地址转换
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
其中-o eth0可以不要.
重启pptpd服务 不行的话, 试试iptables –flush, 再执行一遍上面的地址转换.
确保服务器重启后服务可用:sudo vim /etc/rc.local在exit 0上面加一行
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
进入ec2控制台, 修改安全选项, 在inbound 和outbound里面都加入
All TCP, TCP, 1723 0.0.0.0/0
All UDP, UDP, 0-65535 0.0.0.0/0
All IMCP, All, N/A 0.0.0.0/0
在客户端主机上建立VPN连接, 填入虚拟机公网dns地址, 用户名, 密码, 设置vpn的dns.
OK了, 已经可以YOUTUBE了.
在pptp所在的linux服务的iptables的*filter表中加入
1 | -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 |
或者在命令提示符运行
1 | /sbin/iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 |