centos 安装 PPTP VPN 服务

1 安装前检查系统

在安装之前查看系统是否支持PPTP VPN:
modprobe ppp-compress-18 && echo ok
如果输出 ok,表示系统支持。

2 安装软件包

yum install ppp
yum install pptpd

3 配置pptpd

vim /etc/pptpd.conf ,去掉 localipremoteip 前的 # 号,并根据服务器网络配置ip,我的配置如下:

localip 10.0.0.254 # 设置pptp虚拟网卡接口IP地址(注意:不是服务器的公共IP)
remoteip 10.0.0.100-200 # 为拨入vpn的用户动态分配的IP地址池

vim /etc/ppp/options.pptpd ,找到 ms-dns 部分,做如下修改:

ms-dns 8.8.8.8  #添加主DNS服务器地址
ms-dns 8.8.4.4  #添加备DNS服务器地址

接下来添加VPN用户及密码:
vim /etc/ppp/chap-secrets,添加测试账号:

# Secrets for authentication using CHAP
# client    server    secret            IP addresses
user_test1       pptpd   123456                 *
user_test2       pptpd   123456                 *

4 开启IP转发

vim /etc/sysctl.conf,修改 net.ipv4.ip_forward = 0net.ipv4.ip_forward = 1,执行 sysctl -p

5 配置防火墙

以下是我测试的完整iptables规则,根据自身配置自行修改(注意nat表规则要置于filter表之前,否则无法上网):

# Generated by iptables-save v1.4.7 on Tue Sep  4 17:07:07 2018
*nat
# 10.0.0.0/24 是用户的动态ip地址段,此条表示nat转发
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE 
COMMIT
# Completed on Tue Sep  4 17:07:07 2018
# Generated by iptables-save v1.4.7 on Tue Sep  4 17:07:07 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [343:40989]
# vpn相关开始
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT 
-A INPUT -p gre -j ACCEPT 
-A INPUT -p udp -m udp --dport 53 -j ACCEPT 
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -s 10.0.0.0/24 -j ACCEPT
-A FORWARD -d 10.0.0.0/24 -j ACCEPT
# vpn相关结束
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Tue Sep  4 17:07:07 2018

如果是firewalld,则需要先添加pptpd.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<service>
       <short>pptpd</short>
       <description>PPTP</description>
       <port protocol="tcp" port="1723"/>
</service>

然后,执行下面的命令:

firewall-cmd --permanent --zone=public --add-service=pptpd
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --zone=public --add-port=47/tcp
firewall-cmd --permanent --zone=public --add-port=1723/tcp
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT

重新启动防火墙 systemctl restart firewalld.service

6 开启服务

分别执行 service iptables restartservice pptpd restart

由于 MacOS Sierra 不支持 PPTP,所以可尝试在服务器安装 L2TP/IPsec,GitHub上有人写了一键安装脚本(链接),本人亲测有效。但这个方案也存在一个缺点,同一局域网内只能一个账号连接。

标签: pptpd, ppp, vpn, iptables, nat

添加新评论