W3CAPI 在线教程 | 菜鸟教程_LOGO
文档目录
文档目录
我的书签
 

CentOS

Centos7 VPN服务器搭建 之 PPTP

我们在日常运维中,可能会遇到需要搭建VPN服务器用来将企业资料进行本地共享化,实现在各个区域或城市的员工访问公司内部资料本地化,私有化,更加高效的提高企业办公效率。让企业内部网能在世界的任何角落进行安全快速的访问。

W3CAPI
1
2020-08-16 21:43:21

Centos7 服务器搭建 PPTP-VPN 完全教程

读者须知

  • 服务器需要支持GRE协议,如果是租用的第三方服务器需要检查是否支持GRE协议(阿里云的ECS可以进入安全策略配置界面开启GRE协议)
  • windows系统可以使用pptp的vpn协议进行连接
  • iPhone的ios系统从ios10起不再支持pptp的vpn连接协议了

工具配备

  • 装有Centos7系统的服务器一台 (此处使用阿里云的香港ECS)
  • yum 软件包管理器(用来安全ppp和pptpd)
  • iptables或者firewalld (此处使用firewalld)
  • 装有win10系统PC一台(测试连接使用)

详细步骤

1、检查服务器是否支持PPTP协议

[root@izj6c5d84aus1k307cz62iz ~]# modprobe ppp-compress-18 && echo ok
ok

2、检测是否安装firewalld防火墙,如果没有安装则查看《CentOs7安装firewall防火墙》

[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --state
running

3、安装PPTP相关软件包

#安装第三方yum源EPEL,获得 RHEL 的高质量、高性能、高可靠性、方便易用、免费的软件包更新功能
[root@izj6c5d84aus1k307cz62iz ~]# yum install epel-release -y

#安装需要的包
[root@izj6c5d84aus1k307cz62iz ~]# yum install ppp ppp-devel pptpd -y

4、分别修改PPTP的配置文件:pptpd.conf option.pptpd

[root@izj6c5d84aus1k307cz62iz ~]# vim /etc/pptpd.conf
#找到此处去掉前面注释  
localip 192.168.0.1 #内网ip地址(服务器的eth0网卡地址,不是服务器公网地址)
remoteip 192.168.0.234-238,192.168.0.245 #自定义分配给客户端的网段
[root@izj6c5d84aus1k307cz62iz ~]# vim /etc/ppp/options.pptpd
#找到相关参数对照修改,或者直接覆盖成下面的参数
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 114.114.114.114
proxyarp
lock
nobsdcomp 
novj
novjccomp
nologfd
logfile /var/log/pptpd.log

5、在PPTP的用户认证配置文件:chap-secrets 中添加登录账号

[root@izj6c5d84aus1k307cz62iz ~]# vim /etc/ppp/chap-secrets
#在文件的末尾行添加自己的登录账号,添加登录账号的格式:用户名 pptpd 密码 *

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

6、修改系统参数文件:sysctl.conf,打开ipv4转发功能

[root@izj6c5d84aus1k307cz62iz ~]# vim /etc/sysctl.conf
#有下列项的话修改数值为1 没有的新添加一条
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

#执行命令使系统参数修改立即生效
[root@izj6c5d84aus1k307cz62iz ~]# sysctl -p

7、配置防火墙,开启数据路由(关键的一步,不配置防火墙,无法实现网络访问)

[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -i eth0 -p tcp --dport 1723 -j ACCEPT
[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter POSTROUTING 0 -t nat -o eth0 -j MASQUERADE
[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT
[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT
[root@izj6c5d84aus1k307cz62iz ~]# firewall-cmd --reload

8、配置服务器提供商主机的安全策略,此处使用的是阿里云的ECS,需要配置相关的安全策略,其他服务商请自行检查

  • 开启TCP的1723端口
  • 开启GRE协议

9、启动pptpd,开启VPN服务

[root@izj6c5d84aus1k307cz62iz ~]# systemctl start pptpd

10、使用win10作为客户端进行连接测试(连接后所有上网流量都通过vpn服务器)








错误解决

1、连不上VPN:检查是否开放在防火墙和服务商安全策略中开启了 TCP的1723端口
2、能连上VPN上不了网:
一、网卡MTU 的值设置过小,可以在服务器端使用:ifconfig ppp0 mtu 1500 进行临时设置,永久生效需要修改配置文件,如下:
执行命令:vim /etc/ppp/ip-up
在 exit 0 前写入 : ifconfig $1 mtu 1500
重启下pptpd服务:systemctl restart pptpd
二、重置清空firewall的所有规则,然后重新添加上面的firewall防火墙规则

扩展知识

1、PPTP点对点隧道协议(PPTP,Point-to-Point Tunneling Protocol)是一种协议(一套通信规则),它允许企业通过私人“隧道”在公共网络上扩展自己的企业网络。
2、PPTP以通用路由封装(GRE)协议向对方作一般的点对点传输。通过TCP的1723端口来发起和管理GRE状态。因为PPTP需要2个网络状态,因此会对穿越防火墙造成困难。很多防火墙不能完整地传递连接,导致无法连接。在Windows或Mac OS平台,通常PPTP可搭配MSCHAP-v2或EAP-TLS进行身份验证 ,也可配合微软点对点加密(MPPE)进行连接时的加密。
3、EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。
4、一键安装脚本:https://github.com/HiSun001/centos7-pptp
5、使用iptables防火墙如何配置,执行如下命令:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT  
iptables -A INPUT -p tcp --dport 443 -j ACCEPT    
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE #数据转发规则,适用于腾讯云服务器,这里的IP地址需要和pptpd.conf配置文件中的IP保持一个网段
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 服务器公网IP地址 #数据转发规则,适用于阿里云服务器

#保存规则并重启防火墙
service iptables save 
systemctl restart iptables
注意:添加转发规则后系统重启就会失效,Centos 6 系统可以使用 service iptables save 保存配置,但 Centos 7 不支持,我们需要将配置写入 rc.local 文件中,开机自动设置:
chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local
编辑 rc.local 文件在最后写入上面的转发规则就可以了。
相关提问
敬请期待