CentOS搭建PPTP服务端
背景信息
点对点隧道协议(PPTP)是建立在PPP(Point to Point)点对点协议上的VPN隧道技术。当远程用户要访问公司专用网时,可采用PPTP网络接入方式,用户先拨号到PPTP Server建立PPP连接,然后通过PPTP协商建立一条用户到服务器的"隧道",接着通过PPP协议的NCP协商,为用户分配一个网段内IP,用户可以使用分配到的IP进行局域网内的通信。从而为远程接入虚拟专用网提供一条在公共网络上创建安全连接的途径。
注意
本文档仅用于示例和操作指引,请您根据实际需要操作。使用PPTP服务存在安全隐患,您需要考虑由此产生的影响及问题。更多信息,请参见查看详情。
注意事项
注意
本协议属于VPN,因此如果您部署的是云服务器,请确保服务商是否允许搭建或提前咨询服务商说明用途,避免产生误解。本文章只提供搭建此VPN教程。
云服务器部署要求
- 支持开放TCP:1723端口(必须)
- 支持CentOS 7 系统(必须)
一、安装PPTP
1. 安装PPTP服务
终端输入指令
sudo yum install -y ppp pptpd
回显如下图所示,表示PPTP服务端安装成功。
2. 设置网关和IP范围
执行vi /etc/pptpd.conf命令,编辑配置文件,删除命令前面的"#",使下列两行命令可以执行。输入:wq命令保存退出。
sudo vi /etc/pptpd.conf
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
相关信息
localip和remoteip分别是VPN的网关地址和VPN拨号时获取的地址段。请确保修改符合规定,注意网关和分配地址应当处于同一个IP段。
3. 修改DNS(可选)
执行vi /etc/ppp/options.pptpd命令,找到ms-dns并修改为223.5.5.5和223.6.6.6。删除命令前面的"#"。输入:wq命令保存退出。
sudo vi /etc/ppp/options.pptpd
提示
IP地址223.5.5.5和223.6.6.6是阿里云的公共DNS服务器地址,您可以根据需要调整为其它公共DNS服务地址。
4. 创建用户
执行vi /etc/ppp/chap-secrets命令,设置pptpd的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照用户名 pptpd 密码 IP地址格式输入,每一项用空格隔开。输入:wq命令保存退出。
sudo vi /etc/ppp/chap-secrets
提示
"*"代表分配此用户的IP,如果需要固定此用户IP可以输入具体IP。否则将代表自动分配,并且支持多用户同时连接。请注意如果自动分配的IP可能会随时变动。
5. 设置MTU(建议)
本人测试如果不设置MTU也能正常打开网页,但是为了不出其它情况建议进行设置。
执行vi /etc/ppp/ip-up命令,设置最大传输单元MTU。在命令符[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
下方添加ifconfig ppp0 mtu 1472。
- 终端输入
sudo vi /etc/ppp/ip-up
- 添加命令
ifconfig ppp0 mtu 1472
6. 开启内核网络转发
执行vi /etc/sysctl.conf命令,编辑配置文件,添加net.ipv4.ip_forward = 1配置,输入:wq命令保存退出。
- 终端输入
sudo vi /etc/sysctl.conf
- 添加命令
net.ipv4.ip_forward = 1
- 执行sysctl -p命令,使修改后的参数生效
sudo sysctl -p
二、安装并配置防火墙及NAT
1. 安装防火墙(如有无需执行)
sudo yum install iptables-services
2. 配置NAT规则
以下命令中的IP,如果修改过地址段,也需要同步修改
2.1 设置MASQUERADE规则
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
2.2 设置SNAT规则(可选)
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source <外网网卡IP>
相关信息
外网网卡IP可以输入 ifconfig
查看。大部分云服务器采用VPC网络,一般服务器网卡显示的为内网IP,同时这条规则就是将VPN网址转发至外网网卡以确保VPN用户可以联网。
2.3 保存设置
sudo service iptables save
2.4 客户端之间互相通信(可选)
sudo iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
三、重启PPTP
如果对PPTP配置文件做修改包括增加用户,必须重启才可以生效,绝大部分用户后期连不上都是因为没有重启PPTP。
sudo systemctl restart pptpd
四、设置开机自启
依次执行如下命令,设置pptpd和iptables自启动。
sudo systemctl enable pptpd.service
sudo systemctl enable iptables.service
已知问题
1. yum安装pptpd提示没有软件包
源的问题,需要换源
步骤1:进入yum源目录
cd /etc/yum.repos.d
步骤2:安装wget
sudo yum install wget -y
步骤3:下载新的CentOS-Base.repo文件
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
步骤4:清除缓存并生成新缓存
sudo yum clean all
sudo yum makecache
步骤5:下载epel库
sudo yum install -y epel-release
步骤6:再次更新缓存
sudo yum clean all
sudo yum makecache
相关信息
以上教程转载此处,编写时有改动。
文章创作说明
相关信息
文章转载此处,编写时有改动。
客户端连接
一、CentOS连接
步骤1:安装PPTP软件包
sudo yum install -y ppp pptp pptp-setup
步骤2:连接VPN服务端
pptpsetup --create test --server <IP> --username <用户名> --password <密码> --encrypt --start
提示
显示此内容代表连接成功
当系统提示已经被分配了192.168.0.234的客户端地址时,执行如下命令,可以看到ppp0网卡。
ifconfig | grep -A 10 ppp
步骤3:增加默认路由(可选)
增加路由后,您就可以访问VPN服务器。
sudo ip route replace default dev <PPTP连接名称>
相关信息
以上内容来源此处,编写时有改动
二、Windows10以上连接
进入设置-网络-VPN-添加VPN-选择以下信息
提示
不出意外就可以连接成功,无其它设置
三、安卓连接
注意
由于安卓13以后本体已砍掉PPTP连接,所以大部分新款安卓手机和苹果手机均无PPTP连接协议,暂无解决方案。
目前已知鸿蒙系统还有此连接协议
设置-更多连接-VPN-添加VPN网络-类型选择PPTP-切记勾上加密PPP
四、已知问题
相关信息
确保账号密码正确前提下
1.【Windows】连接失败
1.1 如果点击连接后立马显示错误,一般是由于配置PPTP后没有重启
1.2 如果还是连不上,请检查pptpd服务是否运行以及检查配置是否正确
2.【Windows】连接后一直卡在正在连接
2.1 请确保云服务器安全组已放通TCP:1723
2.2 请确保系统防火墙是否已放通(防火墙默认是全放通)
3.【安卓】连接后显示断开
3.1 确认勾选加密PPP连接
3.2 多次尝试连接,可能是协议兼容问题,本人发现有时候无法一次性连接成功,一般第二次再次连接即可成功。
3.3 如果还是无法连接可能是其它问题,目前无解。