在Linux系统中搭建PPTP(Point-to-Point Tunneling Protocol)服务器,可以为企业或个人提供安全的远程访问解决方案,PPTP作为一种早期的VPN协议,具有配置简单、兼容性好的特点,尽管在安全性方面已被更现代的协议超越,但在特定场景下仍具有实用价值,本文将详细介绍在主流Linux发行版(以Ubuntu/Debian和CentOS/RHEL为例)上搭建PPTP服务器的完整步骤,包括环境准备、安装配置、用户设置及故障排查等关键环节。

环境准备与系统更新
在开始搭建前,需确保服务器满足基本要求:操作系统为64位Linux发行版,具有root或sudo权限,且已配置稳定的网络连接,首先更新系统软件包列表,确保所有组件为最新版本,对于Ubuntu/Debian系统,执行sudo apt update && sudo apt upgrade -y;对于CentOS/RHEL系统,使用sudo yum update -y或sudo dnf update -y,更新完成后,安装必要的构建工具,如Ubuntu/Debian需安装build-essential,CentOS/RHEL需安装gcc和make。
安装PPTP服务及相关依赖
PPTP服务的实现依赖于pptpd(PPTP守护进程)和ppp(点对点协议)包,在Ubuntu/Debian系统中,可通过以下命令安装:
sudo apt install pptpd ppp -y
安装完成后,系统会自动启动pptpd服务,但此时尚未配置参数,需进行进一步设置,对于CentOS/RHEL系统,需先安装EPEL仓库,再执行安装:
sudo yum install epel-release -y && sudo yum install pptpd ppp -y
安装过程中若提示依赖冲突,可使用yum或dnf的--skip-broken参数跳过问题包,确保核心组件安装成功。
配置PPTP服务器核心参数
PPTP服务器的核心配置文件为/etc/pptpd.conf,需修改以下关键参数:
- 本地IP与客户端IP池:编辑配置文件,取消注释并修改
localip和remoteip参数。localip为服务器VPN接口的IP地址(如168.0.1),remoteip为分配给客户端的IP地址池(如168.0.234-238)。 - DNS服务器配置:在文件末尾添加
ms-dns 8.8.8.8和ms-dns 8.8.4.4,指定客户端使用的DNS服务器。
配置完成后,保存文件并编辑/etc/ppp/pptpd-options,确保以下参数正确设置:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
上述参数强制使用MPPE加密(128位),并禁用弱加密协议,提升连接安全性。

配置VPN用户账号
用户账号信息存储在/etc/ppp/chap-secrets文件中,每行格式为:用户名 服务器名称 密码 IP地址。
user1 pptpd password123 *
user2 pptpd password456 192.168.0.100
表示允许客户端从任何IP连接,指定具体IP则限制访问来源,配置完成后,设置文件权限为600,确保账号信息安全:
sudo chmod 600 /etc/ppp/chap-secrets
配置IP转发与防火墙规则
为使VPN客户端能够访问外部网络,需启用系统的IP转发功能,编辑/etc/sysctl.conf文件,添加net.ipv4.ip_forward=1,然后执行sudo sysctl -p生效,配置防火墙规则:
- Ubuntu/Debian(使用UFW):
sudo ufw allow 1723/tcp # PPTP默认端口 sudo ufw allow gre # GRE协议 sudo ufw reload
- CentOS/RHEL(使用firewalld):
sudo firewall-cmd --permanent --add-port=1723/tcp sudo firewall-cmd --permanent --add-port=47/udp sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --reload
若使用iptables,需手动添加NAT规则:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE(eth0为服务器外网网卡名称),并保存规则。
启动与测试服务
完成所有配置后,启动pptpd服务并设置开机自启:

sudo systemctl start pptpd sudo systemctl enable pptpd
使用systemctl status pptpd检查服务状态,确保无错误信息,客户端测试时,可在Windows系统中新建VPN连接,协议选择PPTP,服务器IP输入服务器公网IP,用户名和密码使用chap-secrets中配置的账号,连接成功后,通过ping 8.8.8.8测试网络连通性,并验证客户端是否能访问内网资源。
常见问题排查
- 连接失败:检查防火墙是否放行1723和GRE端口,确认
pptpd服务状态,查看/var/log/syslog或/var/log/messages中的错误日志。 - 无法上网:确保IP转发已启用,防火墙NAT规则正确,客户端DNS配置无误。
- 加密协议不兼容:部分老旧系统可能不支持MPPE加密,可在
pptpd-options中尝试降低加密强度或添加require-mppe参数。
通过以上步骤,即可成功在Linux服务器上搭建PPTP服务,尽管PPTP在安全性上存在局限,但其配置简便性和广泛兼容性仍能满足基础远程访问需求,若需更高安全性,建议升级至OpenVPN或WireGuard等现代VPN协议。

















