本文翻译自digitalocean的指南How To Setup Your Own VPN With PPTP并做了一些补充,原文地址:https://www.digitalocean.com/community/tutorials/how-to-setup-your-own-vpn-with-pptp
你可以选用openvpn或者pptp搭建属于你自己的vpn,显然openvpn会比pptp更安全,不过pptp更快并且占用更少的CPU资源。
第一步:安装pptp
在CentOS 6 x64上
rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm yum -y install pptpd
如果你的机子是其它类型,可以在http://sourceforge.net/projects/poptop/files/pptpd/ 上找到pptpd相应的源码进行源码安装
安装完后需要编辑 /etc/pptpd.conf 文件,添加以下两行代码:
localip 10.0.0.1 remoteip 10.0.0.100-200
localip是你服务器的ip,remoteip是pptpd用来分配给客户端的ip地址。这些不是你服务器的真实地址,请使用未被使用的私网地址。
接下来你需要配置用户跟密码,把他们加到/etc/ppp/chap-secrets文件里面就可以了,像这样:
# Secrets for authentication using CHAP # client server secret IP addresses username pptpd password *
*表示用户可以在任意ip连过来。
第二步:添加 DNS 服务器 到 /etc/ppp/pptpd-options
ms-dns 8.8.8.8 ms-dns 8.8.4.4
这部分不是必须做的,你也可以不使用pptpd-options文件,而直接把这两行信息写到/etc/pptpd.conf 文件里。
现在你可以启用pptp了
service pptpd restart
当我运行这命令的时候,系统提示我使用
service pptpd restart-kill
用来干掉所有pptp实例,这是有必要的,重启pptp请使用restart-kill命令。但如果你的pptp没有运行,使用
service pptpd start
就可以了。
启动后,你可以通过如下命令,确认pptp正在运行中
netstat -alnp | grep :1723
第三步:设置转发
这个很重要。请修改/etc/sysctl.conf文件,补充或者修改如下条目:
net.ipv4.ip_forward = 1
为了确保更改生效,请运行如下命令:
sysctl -p
第四步:设置iptables的NAT规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
注意这里的eth0网卡,请确保它是你的外网出口,之前因为没注意到我的服务器又外网跟内网两个网卡,结果写错了,导致连上VPN后无法访问外网。
如果你需要你的客户端之间可以相互通信,请补充下面这些规则:
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT iptables --append FORWARD --in-interface eth0 -j ACCEPT
现在你的PPTP也充当路由的功能了。
firewalld配置:
firewalld端口转发只要执行
firewall-cmd --add-port=1723/tcp firewall-cmd --add-masquerade
就可以了,如果需要永久生效,可以执行
firewall-cmd --permanent --add-port=1723/tcp firewall-cmd --permanent --add-masquerade
如果发现打开防火墙后一直连不上,可能是因为防火墙阻止了GRE验证,执行以下命令就好了
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p gre -j ACCEPT
到这里,你已经部署好了属于自己的PPTP服务器了。
下面是PPTP客户端的安装。
第五步:安装客户端
客户端可以通过yum安装
yum -y install pptp
或者从http://sourceforge.net/projects/pptpclient/files/ 下载源码安装
第六步:添加配置文件
modprobe ppp_mppe
新建一个文件在/etc/ppp/peers/下面,比如/etc/ppp/peers/pptpserver,添加如下信息
pty "pptp 198.211.104.17 --nolaunchpppd" name box1 password 24oiunOi24 remotename PPTP require-mppe-128
其中192.168.104.17是你的服务器的地址,box1是登陆用户名,24oiunOi24是对应的密码。保存完成后就可以连接了。
pppd call pptpserver
这时,你可以通过以下命令查看连接的情况:
tail -f /var/log/syslog
为了顺利地使用vpn通道,还需要配置本地的路由
route add -net 10.0.0.0/8 dev ppp0 route add -host 10.0.0.100 dev ppp0
ppp0是你连上vpn后,系统新开的虚拟网卡,可以通过ifconfig命令查看该网卡的状态
配置路由是linux的工作,如果你是在Winows下通过网络连接连上VPN的,系统已自动配置好了全局路由。
另外pptp client安装后,会包括包括开启、关闭脚本,可以将它们复制到sbin文件夹方便使用。
cp /usr/share/doc/ppp-2.4.4/scripts/poff /usr/sbin/ cp /usr/share/doc/ppp-2.4.4/scripts/pon /usr/sbin/ chmod +x /usr/sbin/pon /usr/sbin/poff
其实ppp-2.4.4视你安装的版本而定,复制好后,可以使用下面的命令方便地开启、关闭VPN。
pon pptpserver poff pptpserver