PPTP-VPN

I don’t Like Firewall of China

Posted by Luyuan on November 7, 2016

“一枝红杏出墙外!”

1.前言

周末雾霾环绕北京城两天,从未离他而去,所以宅在狗屋继续写 Book。The Openstack-ansible这一章节,但很不巧被“某墙”消耗了半天时间,佛挡杀佛,墙挡拆墙?不,我要越墙。既然越墙,那就使用工具,工具种类很多。目前VPN隧道协议有4种:点到点隧道协议PPTP、第二层隧道协议L2TP、网络层隧道协议IPSec以及SOCKS v5。我们这里只介绍点到点隧道协议。英文名叫:Point-to-Point Tunneling Protocol,子(PPTP)。

2.正文

PPTP 是一个快速实现虚拟私人网络的协议,(维基百科第一句话:因为它存在许多问题,所以算是一个快要过时的一种技术)。PPTP使用基于TCP和GRE隧道运营封装PPP数据包来控制通道,可以对封装PPP桢中的负载数据进行加密或压缩,如上即是它的原理。本次搭建使用AWS EM2作为载体。

2.1 Step 1 - PPTP Installation

安装PPTP

rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd

编辑 /etc/pptpd.conf 文件并添加如下参数

localip 10.0.0.1
remoteip 10.0.0.100-200

编辑 /etc/ppp/chap-secrets 文件并添加用户名和密码

[root@lucian~]# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client	server	 secret			IP addresses
superuser *	bigpassword	*
  • Note:注意适应空格键为间隔,client为用户名,server 可以设置未指定服务名,但是在这里建议设置为”,secret建议设置强度较大的密码,IP addrsses 建议设置成*,如果有安全因素方面的考虑,可设置成只允许某IP来访问。

2.2 Step 2 - Add DNS servers to /etc/ppp/pptpd-options

# Google DNS
ms-dns 8.8.8.8
ms-dns 8.8.4.4

现在你可以启动PPTP服务啦:

service pptpd restart

验证服务和端口是否正常

[root@lucian~]# lsof -i:1723
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
pptpd   21270 root    6u  IPv4 13847440      0t0  TCP *:pptp (LISTEN)

2.3 Step 3 - Setup Forwarding

此步骤非常重要,在PPTP服务商启用IP forwarding功能。它的目的是为了允许Public IP和虚拟IP数据之前的转发,编辑 /etc/sysctl.conf 并添加

net.ipv4.ip_forward = 1

为了立即生效,执行sysctl -p

2.4 Step 4 - Create a NAT rule for iptables

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
  • NOTE:需要注意当前服务器Iptables规则设置,如果你使用也是Cloud服务应该在security groups 中允许1723端口允许访问。

2.5 Step 5 - Setup Clients and Connect VPN

MAC 链接 VPN 服务器 打开 Google

3 总结

我们通过在AWS上搭建一套VPN服务,只要你当前设备支持PPTP客户端都可以链接到自己搭建的服务器当中。

后续

计划每周更新两次

—— Luyuan 后记于 2016.11.07