本文介绍了如何在 CentOS 7 下,通过使用 yum 软件仓库的 pptpd 守护进程架设自己的 PPTP VPN 服务器。
VPS
我用的是 Vultr VPS,所以文中的操作都是我基于 Vultr VPS 进行的,经测试我的 VPN 也是正常连接的。不同 VPS 提供商的设置可能有所区别,仅供参考。
架设 VPN 服务器
安装所需的包
yum install -y pptpd iptables-services
配置 PPTP 的设置。”ppp”配置文件对 pptpd
很重要。首先,如下配置 /etc/ppp/options.pptpd
文件,可以根据需要更改 DNS 服务器。
# Network and Routing
# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients. The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
下一步,通过编辑 /etc/ppp/chap-secrets
文件添加VPN服务器的用户。即连接 VPN 所用的用户名和密码。client为帐号,server是pptpd服务,secret是密码,*表示是分配任意ip。只需修改账号和密码就可以。
# Secrets for authentication using CHAP
# client server secret IP addresses
vultr1 pptpd P@$$w0rd2 *
vultr2 pptpd P@$$w0rd2 *
通过编辑 /etc/pptpd.conf
配置 pptpd
守护进程。下面的配置一般不需要修改,也可以根据用户数量需要修改 IP 地址范围。
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
下面编辑 /etc/sysctl.conf
,末尾添加一行 net.ipv4.ip_forward = 1
保存,来启用IP转发(IP forwarding)。之后运行 sysctl -p
命令使内核修改生效。
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1
我想用 iptables 作为防火墙,用下面的命令停止并隐藏 CentOS 7 中的默认防火墙服务 firewalld
systemctl stop firewalld
systemctl mask firewalld
由于开始时已经安装了 iptables,直接运行下面的命令启用 iptables
systemctl enable iptables
向 filter 表的 INPUT 链以及 nat 表的 POSTROUTING 链添加规则
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
保存规则
service iptables save
最后,重启一下pptpd服务和iptables服务
systemctl restart iptables
systemctl restart pptpd
这样 PPTP VPN 服务器就搭建完成了。可以通过 PC 或移动设备连接。