PPTP 实践篇

今天开篇来说说VPN的事,大家知道VPN就是virtual private network就是为大家提供端到端的隧道的一系列协议对于PPP的隧道协议有PPPOE L2TP PPTP,ethernet over MPLS的有VPLS VPWS, ip over MPLS的有MPLS VPN基于MP-BGP 的VPNv4的地址空间, ethernet over IP的有OTV VXLAN NVGRE等,今天主要来和大家分享下PPTP的搭建,后续会有相关实现分析放出,为了效果我们需要找一台广域网的机器做PPTP server

  • 广域网上一台能访问的server
  • 在这台server配置PPTP VPN server
  • 这台server和我们的主机之间要有足够的带宽和较低延时

能在广域网上访问的server

这样的server不少,但是要有信誉价格又优惠的可能就不多了,所以第一个想到的就是amazon的AWS EC2,没问题立马去申请一个instance。
这边我不太确定是不是所有的SP的网络都能访问AWS,有些可能不行,那就只能哭了或先用公司的账号VPN一把AWS。

EC2 里面其实有很多不同AMI(amazon machine image)给不同的os,windows,ubuntu, suse, redhat等主流的都有,我这边挑选ubuntu纯属个人喜好,接下来选定ubuntu的 image以后,要选则VM的配置,这边的话大家可以嗨翻天了因为有个免费的instance type
1vcpu + 1G memory
可以较好的完成server的任务,并且一年内不要钱,做实验最好了。
基本上一路launch以后就完成安装了,然后用ssh private key的方式进行登入,其中的aws.perm就是动态由EC2生成的private key。

To access your instance:
Open an SSH client. (find out how to connect using PuTTY)
Locate your private key file (aws-japan.pem). The wizard automatically detects the key you used to launch the instance.

Your key must not be publicly viewable for SSH to work. Use this command if needed:
chmod 400 aws.pem
Connect to your instance using its Public DNS:
ec2-52-68-169-204.ap-northeast-1.compute.amazonaws.com
Example:
ssh -i “aws.pem” [email protected]

SSH上去以后就发现悲剧了,这个界面卡的比视频还悲惨,已程序员最基本的判断来看,这样的网速要做点其他网络相关的服务基本就是做梦了。
所以不进行下配置直接把这台机器terminate掉。

server所在region的选择

对于AWS来说必然不会把鸡蛋放在一个篮子里面,前面SSH之所以这么慢,原因是因为IDC是在美国的,其实AWS的IDC有几个不同的site可以选择,试过美国的几个基本都不能忍受,还有Singapore和Tokyo,Ireland等,最后试下来Tokyo的延时还可以的,所以同学们在试的时候可以多在几个不同的IDC site里面build 各自的VM然后通过看SSH的速度基本就能判定网络连接的速度了。

PPTP 配置

首先在安全组里面要加一条规则放行1723端口,这个做过网关的同学都会知道是个类似port forwarding的规则。

PPTP采用TCP 1723端口,必须打开这个端口,否则client端无法接入

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
不设置的用的默认的dns的话,计算能ip可达youtube,但是youtube对应的ip get不到。
(3)修改/etc/ppp/chap-secrets文件,设置客户机登录的帐号和密码:
# client server secret IP addresses
adambynes * 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

经过以上配置PPTP的VPN server就配置好了。
在windows里面测试的时候发现有一段时间后VPN会断,把
lcp-echo-interval and lcp-echo-failure comment掉就ok了
两个参数在/etc/ppp/options

实测的话两个终端连接看480p的视屏是不会卡的,手机4G实测速度也飞快。所有client的PPTP连接都不需要额外装APP,三个系统都自带配置VPN的,具体方法大家bing下就知道了。
有了以上操作的实践后续我会再写个两三篇文章来把其中的原理给大家说清,以后大家就可以自己设计个VPN了 XD

BTW:其实amazon的 EC2有很多种计费方法 on demand/reserve isntance/spot instance/dedicated hw 总有一款适合你的,并且在去年EC2有推出一个叫t2.nano的instance type比免费版的t2.micro资源更少价格只有一半,所以基本算下来就算一天24小时都开着价格也和便宜。

你可能感兴趣的:(networking,cloud)