pptp 部署

注意:国内运营商对 pptp 有诸多限制,可能会有封杀的情况发生

环境:阿里云轻量应用服务器
系统:centos7.3

一、安装 PPTP
1. 安装 pptp 及相关依赖

[root@system ~]# yum install kernel-devel ppp pptpd net-tools iptables-services
// 修改主配置文件
[root@system ~]# vim /etc/pptpd.conf
localip 10.0.1.1
remoteip 10.0.1.10-238,10.0.1.254
// 分别是 pptp 服务的虚拟网段网关,及分配给客户端的地址范围
2. 编辑 pptp 配置文件 /etc/ppp/options.pptpd

[root@system ~]# vim /etc/ppp/options.pptpd
name pptpd #自行设定的 VPN 服务器的名字,可以任意
#refuse-pap #拒绝 pap 身份验证
#refuse-chap #拒绝 chap 身份验证
#refuse-mschap #拒绝 mschap 身份验证
require-mschap-v2 #为了最高的安全性,我们使用 mschap-v2 身份验证方法
require-mppe-128 #使用 128 位 MPPE 加密
ms-dns 223.5.5.5 #设置 DNS
ms-dns 8.8.8.8
proxyarz #启用 ARP 代理,如果分配给客户端的 IP 与内网卡同一个子网
#debug #关闭 debug
lock
nobsdcomp
novj
novjccomp
#nologfd #不输入运行信息到 stderr
logfile /var/log/pptpd.log #存放 pptpd 服务运行的的日志
// 如果服务主机是海外服务器,建议使用谷歌的 dns
3. 设置 pptpd 服务用户名和密码,配置文件 /etc/ppp/chap-secrets

[root@system ~]# vim /etc/ppp/chap-secrets
user pptpd 123456 *
// 每行一套帐号,以空格分隔的 4 个字段
// 第 1、3 是用户名密码,2 是服务名,4 是连接 IP 地址
4. 开启允许 ip 转发内核,配置文件 /etc/sysctl.conf

[root@system ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
5. 使用 iptables 配置网络

注意:iptables 配置,配置虚拟网段 NAT 支持。如果 pptp 客户端不需要上网,可以忽略本步骤。

// 开启 iptables 防火墙
[root@system ~]# systemctl enable iptables
[root@system ~]# systemctl start iptables
// 配置虚拟网段 NAT 支持
[root@system ~]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
//eth0 是本机网卡设备名,按实际情况修改;或按虚拟网段设置 NAT
[root@system ~]# iptables -t nat -I POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE
// 开放 pptp 端口 1723,允许转发
[root@system ~]# iptables -I INPUT 7 -m state –state NEW -p tcp –dport 1723 -j ACCEPT
[root@system ~]# iptables -P FORWARD ACCEPT
// 保存 iptables 规则
[root@system ~]# service iptables save
[root@system ~]# systemctl restart iptables
6. 阿里云 ECS 可能需要特别配置

如果 windows 下连接 pptp,如果遇到 519 错误,是因为缺少内核模块 ip_nat_pptp,运行 modprobe ip_nat_pptp 即可加载,但最好设置开机自动加载:新建文件 /etc/modules-load.d/ip_nat_pptp.conf 内容为如下

[root@system ~]# vim /etc/modules-load.d/ip_nat_pptp.conf
ip_nat_pptp
可能需要重建 ppp 文件

[root@system ~]# rm /dev/ppp
[root@system ~]# mknod /dev/ppp c 108 0
阿里云机器还要修改 mtu:修改文件 /etc/ppp/ip-up,在 exit 0 前加入一行

[root@system ~]# vim /etc/ppp/ip-up
ifconfig $1 mtu 1500
注意:阿里云控制台里的安全组需要放行相应的端口

7. 启动服务,加载相关匹配文件等

// 使系统配置更改生效
[root@system ~]# sysctl -p
// 启动服务
[root@system ~]# systemctl start pptpd
[root@system ~]# systemctl enable pptpd
注意 :pptpd 默认日志存放为系统日志 /var/log/messages,可在系统配置中加入 logfile /var/log/pptpd.log 使其生效

二、排错
问题排查
1. 看日志
2.status pptpd 服务状态

如果执行信息不是如下,则系统可能不支持 PPTP

// 检查当前系统是否支持 PPTP
[root@system ~]# modprobe ppp-compress-18 && echo success
success
// 是否开启 TUN/TAP
[root@system ~]# cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state
// 是否开启 PPP
[root@system ~]# cat /dev/ppp
cat: /dev/ppp: No such device or address
windows 无法连接

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
1
另外,某些个别的 Windows 系统禁用了 IPsec 加密,此时也会导致连接失败。要重新启用它,可以运行以下命令
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v ProhibitIpSec /t REG_DWORD /d 0x0 /f
1
其他连接问题参考地址如下: