Ubuntu搭建PPTP服务器

前言

PPTP服务器不仅需要 开放TCP 端口 1723,还需要上层设备支持GRE协议*

PPTP服务使用TCP端口1723和GRE协议。
在服务器和网关模式下,您的调制解调器应配置为桥接模式并自动将所有流量转发到服务器。

在仅服务器模式下,您的路由器必须配置为将 TCP 端口 1723 转发到您的服务器,并且必须提供对GRE协议的完全支持。请注意,GRE协议不是端口,因此您无法转发它。并非所有路由器都支持此协议,因此 VPN 在此网络安排中并不总是可行的。为了在这种网络安排中建立 pptp 类型的 VPN 连接,路由器规范必须明确说明它可以处理直通 pptp VPN 连接。请注意,用于PPTP连接的远程和本地端的路由器必须能够处理 PPTP 直通,此方案才能正常工作。

仔细检查您的路由器规格。您的日志文件中的错误可能表明您的一台路由器在转发 GRE 数据包时可能存在问题。如果您在日志文件中看到 LCP 超时错误,有很多可能的原因。最有可能的是两端之间某处的防火墙正在阻止/丢弃 GRE 数据包。一些路由器/网关会在需要时通过观察 TCP 端口 1723 上的协商自动转发 GRE。

在任何点对点 VPN 连接中,信号都会通过许多设备,例如公司防火墙、附加路由器/防火墙、软件防火墙/过滤器等。链中的所有这些步骤都必须支持GRE协议,如果有的话链中的设备不支持该协议,则 VPN 连接将不成功。有时这些事情超出了最终用户的控制范围,尤其是在公司情况下,或者在使用低端宽带连接和 ISP 限制功能的家庭用户情况下。

PPTP常见排错方法
检查服务器管理器用户面板中的 VPN 用户是否允许 VPN 访问
检查服务器管理器“远程访问”面板中的“pptp 客户端数量”是否设置为大于零
检查连接是否在 Windows VPN 客户端设置中设置为“协商多链路连接”
检查 VPN 连接/服务是否允许通过 Windows 工作站上的个人防火墙进行访问

搭建

安装相关服务

1
root@VM-16-16-ubuntu:~# apt install ppp pptpd -y

编辑pptpd配置文件

1
root@VM-16-16-ubuntu:~# nano /etc/pptpd.conf


去掉注释,localip指的是服务器将使用的内网IP,remoteip自然就是客户端将使用的内网IP,客户端使用的IP是通过DHCP方式获得,我们只需要设置范围就好

编辑pptp设置配置文件

1
root@VM-16-16-ubuntu:~# nano /etc/ppp/pptpd-options

找到

1
2
#ms-wins 10.0.0.3
#ms-wins 10.0.0.4

将注释去掉并且改成你想用的DNS地址,例如8.8.8.8

配置PPTP的密码文件

1
root@VM-16-16-ubuntu:~# nano /etc/ppp/chap-secrets


加入一行,很好理解,username是你的用户名,password是你的密码
在上面的注释也说的很明白,client是用户名,server是具体服务,secret指密码,IP addresses处写入*就是使用所有IP来源的意思

配置最大传输单元

1
root@VM-16-16-ubuntu:~# nano /etc/ppp/ip-up


加入一行

1
ifconfig ppp0 mtu 1472

开启系统转发功能

1
nano /etc/sysctl.conf

去掉net.ipv4.ip_forward = 1的注释
使配置生效

1
sysctl -p

防火墙配置

放行1723端口的TCP和UDP

1
2
iptables -I INPUT 1 -p tcp --dport 1723 -j ACCEPT
iptables -I INPUT 2 -p udp --dport 1723 -j ACCEPT

添加转发规则

1
2
3
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 15.15.15.15

注意,此处的192.168.1.0对应上面配置的IP段,10.10.2.51一般填写为公网地址,对内网转发的腾讯云同理(腾讯云内网IP10.10.2.51,外网15.15.15.15,那么我们设置为15.15.15.15),但根据需求可以填写内网地址(内网172.16.1.43作为服务器,外网IP111.111.111.111,内网172.16.1.89作为客户端,此时填172.16.1.89(服务器内网IP地址)也是可以的,但此方式并不常用且无法对公网提供服务)

放行pptpd所需的gre协议

1
2
3
iptables -I INPUT 1 -p gre -j ACCEPT

iptables -I OUTPUT 1 -p gre -j ACCEPT

保存配置,Ubuntu18下保存方式有些特殊

1
iptables-save > /etc/iptables

参考资料

PPTPD 服务搭建 – Khazix
VPN practical tips – SME Server

*指通用路由封装(GRE: Generic Routing Encapsulation) 引用于百度百科


Ubuntu搭建PPTP服务器
http://www.evec.cc/2022/03/04/ubuntu-pptp/
作者
前夕
发布于
2022年3月5日
许可协议