0%

利用AWS搭建自己的VPN服务器

首先推荐使用AWS的EC2, 新开通账号可以获得一定时间的免费t2.micro虚拟服务器使用权限. 大家可以在aws.amazon.com找到相关的信息.

  1. 开通aws.amazon.com的账号.

  2. 进入ec2的控制面板, 开通实例. 这里实例就代表一个虚拟服务器的解决方案. 我选择的是推荐的免费ec2的t2.micro ubutntu解决方案.

  3. 生成一个私钥, 这个用来使用ssh连接你的虚拟服务器. 生成后请妥善保管. 假设我们重命名为aws.pem

  4. chmod 400 aws.pem

  5. ssh -i ~/Desktop/aws.pem ubuntu@public_dns_name_for_your_aws_server. 这里, @后面的需要自己替换为自己控制面板中启用的实例公网dns

  6. 登陆后, sudo -s 切换到root, 默认密码为空

  7. 安装pptp service.

    apt-get update, aptitude install pptpd

  8. 编辑pptp配置文件:sudo vim /etc/pptpd.conf在最后一行加上以下代码:

    localip 192.168.240.1
    remoteip 192.168.240.2-9

  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就可以了. 待续.

  10. 配置访问VPN的用户名和密码,将USERNAME和PASSWORD替换为你自己希望的。可以重复添加,分配给不同的用户::

    echo “USERNAME pptpd PASSWORD *” | sudo tee -a /etc/ppp/chap-secrets

  11. 重启服务:

    sudo /etc/init.d/pptpd restart

  12. 已经可以连接到pptp,下面配置数据转发。编辑/etc/sysctl.confsudo vim /etc/sysctl.conf将下面一行的注释去掉net.ipv4.ip_forward=1

    然后重新加载sudo sysctl -p

  13. 网络地址转换

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    其中-o eth0可以不要.

    重启pptpd服务 不行的话, 试试iptables –flush, 再执行一遍上面的地址转换.

  14. 确保服务器重启后服务可用:sudo vim /etc/rc.local在exit 0上面加一行

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

  15. 进入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

  16. 在客户端主机上建立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