本文翻译自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

By charlie

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注