CentOS7搭建PPTP服务

至于为什么要搭建,这个就不好说明了,都懂得,总之可以说是突然来了兴趣,每天晚上抽半小时研究,三天才弄好啊!
主要是掉进了一个坑里没出来……其实搭建还是很简单的,我也就记录一下简单的搭建方法,避免日后再进坑
使用的是腾讯云的云主机,毕竟是练手嘛….CentOS7.2 的系统

或者你可以使用一键安装脚本,比如:https://github.com/userrory/centos7-pptp

检查是否支持

终端输入:modprobe ppp-compress-18 && echo yes
返回 yes 表示支持 pptp


若你使用 XEN 架构的 VPS,下面的步骤不用执行 ,腾讯云是 XEN ….
检测PPP是否开启:cat /dev/ppp
开启成功的标志:
cat: /dev/ppp: No such file or directory 或者 cat: /dev/ppp: No such device or address,可以继续

安装组件

运行下面的命令安装 iptables、ppp、pptpd :
yum install ppp iptables pptpd
没什么好说的,如果没有那就尝试换个源或者用 rpm 包。

补充

官方如果没有提供可以先安装 epel 源:

1
2
yum install epel-release
yum install pptpd

可用性自行测试


在 CentOS 6 X64 上可以用:

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

没测试过,不知道能不能用

配置组件

编辑pptpd.conf

编辑 pptpd.conf 这个文件:vim /etc/pptpd.conf
找到下面的两行,并且去掉注释:

1
2
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

第一行的意思是VPN连接成功后,VPN server(就是你启动 pptpd 服务)的地址,就是说通过这个地址来找到 VPN server。
第二行是分配给客户端的 ip 范围。
remoteip最好不用和VPN client本身所在的局域网的ip冲突,默认即可

编辑options.pptpd

终端输入:vim /etc/ppp/options.pptpd
其他的一般保持默认即可,主要是设置下 DNS:

1
2
ms-dns 8.8.8.8
ms-dns 8.8.4.4

同样是去掉注释,然后修改,一般设置个 DNS 就可以了,或者根据需要设置其他,给个栗子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
name pptpd                        #自行设定的VPN服务器的名字,可以任意
#refuse-pap #拒绝pap身份验证
#refuse-chap #拒绝chap身份验证
#refuse-mschap #拒绝mschap身份验证
require-mschap-v2 #为了最高的安全性,我们使用mschap-v2身份验证方法
require-mppe-128 #使用128位MPPE加密
ms-dns 8.8.8.8 #设置DNS
ms-dns 8.8.4.4
proxyarp #启用ARP代理,如果分配给客户端的IP与内网卡同一个子网
#debug #关闭debug
lock
nobsdcomp
novj
novjccomp
#nologfd #不输入运行信息到stderr
logfile /var/log/pptpd.log #存放pptpd服务运行的的日志

其实大部分默认都给配置好了

设置账号密码

终端输入: vim /etc/ppp/chap-secrets
格式上面有提示,就是:用户名 pptpd 密码 *
* 表示的是随机分配 ip

修改内核

输入:vim /etc/sysctl.conf
如果没有这个文件就自己创建一个吧,在文件的最后写入一行:
net.ipv4.ip_forward=1
这条命令的意思是使内核支持转发,还需要下面一条命令来使修改生效:
sysctl -p

添加转发规则

XEN架构:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
OpenVZ架构:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source VPS公网IP

腾讯云是 XEN 架构,阿里云是 OpenVZ


但是添加转发规则后重启就会失效,Centos 6 系统可以使用 service iptables save 保存配置,但 Centos 7 不支持,我们需要将配置写入 rc.local 文件中,开机自动设置:

1
2
chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local

编辑 rc.local 文件在最后写入上面的转发规则就可以了

补充

可以使用 iptables -X -t nat 清除转发规则(iptables -F);
iptables -t nat -L 可以查看 NAT 表是否已经生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#带行号查看当前所有规则 
iptables -L -n --line-numbers
#清除所有规则
iptables -F
#删除指定行号(以下命令中的“5”为指定行号)规则
iptables -D 5
#保存当前配置;相当于旧版/etc/init.d/iptables save
service iptables save
#重启iptables;相当于旧版本/etc/init.d/iptables restart
service iptables restart
#注册iptables服务;相当于旧版 chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service

这应该很全了,ipdables 配置文件位于 /etc/sysconfig/iptables

启动服务

关于启动服务的命令,网上有几种,用 /etc/init.d/pptpd start 、用 service pptpd start ….
我测试是都不行,在 centOS 7+ 中,他会提示让你使用 systemctl ,所以启动应该是:
systemctl start pptpd
下面的命令应该会让 pptpd 开机启动(未测试):
systemctl enabled pptpd

连不上VPN

检查是否开放了 1723 端口,一般是因为这个原因吧,其他错误见参考的连接

查看VPS的架构

首先安装一个软件:yum install virt-what
装好后使用命令 virt-what 即可查看 linux 下 VPS 的架构了

打不开网页

这真是个坑,我搞了好长时间,原来是 MTU 的原因,值太小了!
可以在服务器端使用:ifconfig ppp0 mtu 1472 设置,但是这样不持久。

阿里云、腾讯云设置 MTU :
vim /etc/ppp/ip-up
exit 0 前写入 : ifconfig $1 mtu 1500
这样就解决无法访问网页的问题了!

主要就是 MTU,具体的原因参考:http://blog.sandy1890.com/2016/10/23/pptpd_iptables/
关于这个深深感到知识不够,看不明白,等以后在来补充吧


MAC 系统需要设置下网卡:wifi—>高级—->硬件—->默认是1500,修改为1472

参考

http://www.jianshu.com/p/12f7b66d1cab
http://www.wanghailin.cn/centos-7-pptp/
http://blog.sandy1890.com/2016/10/23/pptpd_iptables/

喜欢就请我吃包辣条吧!

评论框加载失败,无法访问 Disqus

你可能需要魔法上网~~