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 |
|
编辑pptpd配置文件
1 |
|
去掉注释,localip指的是服务器将使用的内网IP,remoteip自然就是客户端将使用的内网IP,客户端使用的IP是通过DHCP方式获得,我们只需要设置范围就好
编辑pptp设置配置文件
1 |
|
找到
1 |
|
将注释去掉并且改成你想用的DNS地址,例如8.8.8.8
配置PPTP的密码文件
1 |
|
加入一行,很好理解,username是你的用户名,password是你的密码
在上面的注释也说的很明白,client是用户名,server是具体服务,secret指密码,IP addresses处写入*就是使用所有IP来源的意思
配置最大传输单元
1 |
|
加入一行
1 |
|
开启系统转发功能
1 |
|
去掉net.ipv4.ip_forward = 1的注释
使配置生效
1 |
|
防火墙配置
放行1723端口的TCP和UDP
1 |
|
添加转发规则
1 |
|
注意,此处的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 |
|
保存配置,Ubuntu18下保存方式有些特殊
1 |
|
参考资料
PPTPD 服务搭建 – Khazix
VPN practical tips – SME Server
*指通用路由封装(GRE: Generic Routing Encapsulation) 引用于百度百科