靳闯博客 记录是一种习惯,分享是一种态度
  • 波浪
  • 波浪
  • 波浪
  • 波浪
Centos7 搭建PPTP-VPN 服务
发表于: | 分类: 技术积累 | 标签: Linux Centos7 VPN | 评论: 25 | 阅读: 9322

PPTP点对点隧道协议(PPTP,Point-to-Point Tunneling Protocol)是一种协议(一套通信规则),它允许企业通过私人“隧道”在公共网络上扩展自己的企业网络。注意:苹果手机从ios10起不支持pptp vpn了


PPTP以通用路由封装(GRE)协议向对方作一般的点对点传输。通过TCP1723端口来发起和管理GRE状态。因为PPTP需要2个网络状态,因此会对穿越防火墙造成困难。很多防火墙不能完整地传递连接,导致无法连接。 在Windows或Mac OS平台,通常PPTP可搭配MSCHAP-v2或EAP-TLS进行身份验证 ,也可配合微软点对点加密(MPPE)进行连接时的加密。


搭建清单:
Centos7 (我这里使用腾讯云的服务器)
ppp和pptpd 包
iptables (我这里使用iptables)
win10客户端(连接测试使用)


1、查看是否支持

[root@VM_centos ~]# modprobe ppp-compress-18 && echo yes
yes

[root@VM_centos ~]# cat /dev/ppp
cat: /dev/ppp: 没有那个设备或地址

2、禁用firewalld防火墙和安装需要的包

#停止和禁用firewalld
[root@VM_centos ~]# systemctl stop firewalld
[root@VM_centos ~]# systemctl disable firewalld

#增加epel yum源
[root@VM_centos ~]# yum install epel-release -y

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

3、修改配置文件pptpd.conf option.pptpd

[root@VM_centos ~]# vim /etc/pptpd.conf
#找到此处去掉前面注释
localip xxx.xxx.xxx.xxx  #内网ip地址(云服务器的eth0网卡地址,不是服务器公网地址)
remoteip 192.168.0.10-20  #自定义分配给客户端的网段

[root@VM_centos ~]# 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

4、修改用户认证配置文件chap-secrets

[root@VM_centos ~]# vim /etc/ppp/chap-secrets
#添加用户格式:用户名 pptpd 密码 *

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

5、打开系统ipv4转发 sysctl.conf

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

#应用生效
[root@VM_centos ~]# sysctl -p

6、启动pptpd服务

[root@VM_centos ~]# systemctl start pptpd

7、开放需要的端口(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

#保存规则
[root@VM_centos ~]# service iptables save
#重启生效
[root@VM_centos ~]# systemctl restart iptables

PTVPN2.png


8、增加转发规则,和修改mtu的大小,为了可以连上vpn后上网

#注意这里网段和上面配置文件网段一致,eth0和本机网卡名称一致(本机只有eth0和lo)
[root@VM_centos ~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

#保存规则
[root@VM_centos ~]# service iptables save
#重启生效
[root@VM_centos ~]# systemctl restart iptables

#修改MTU默认值1396为1500,在exit 0前面加一句
[root@VM_centos ~]# vim /etc/ppp/ip-up
.......
ifconfig $1 mtu 1500

exit 0

#重启下pptpd服务
[root@VM_centos ~]# systemctl restart pptpd

pptp7.png


9、win10客户端连接测试(连接后所有上网流量都通过vpn服务器)

win10客户端pptp vpn主要配置参数

pptp6.png


win10客户端连接后的信息,上公网和访问内网机器

pptp1.png
pptp2.png
pptp3.png
pptp4.png
pptp5.png


10、(2020.6.16更新)如果想用本地网络上网,又可以访问连接vpn服务器的网络(连接后上网流量还是通过本地网络)

pptp1.png
ptp2.png


系统环境总是有些差别,出些错误也正常,我在连接中遇到的错误解决办法:

1,检查1723端口是否开放和gre协议是否开放
2,各项配置文件参数是否有误
3,客户端的配置是否正确
4,连接后不能上公网,重置清空iptables所有规则,然后重新添加上面的iptables规则。
5,修改MTU的数值 CentOS7搭建PPTP服务

类似博文:

L2TP+IPsec vpn搭建
Centos7搭建Open VPN服务


商业转载请联系作者获得授权,非商业转载请注明出处 本文地址:https://me.jinchuang.org/archives/517.html

如果这篇文章帮助到了你,我感到十分荣幸!


已有 25 条评论

  1. hopeking hopeking Windows 10 x64 Edition  Google Chrome 74.0.3729.169

    您好,我在客户端进行连接时提示“不能建立远程计算机的连接,因此用于此连接的端口已关闭 ”

    1. J.C J.C Windows 10 x64 Edition  Google Chrome 71.0.3578.98

      检查下服务对应的端口是否开放,还有防火墙或者安全组都是否允许访问,1723和47端口(GRE)

  2. tis tis Windows 10 x64 Edition  Google Chrome 79.0.3945.79

    为什么按照文档没有出现ppp0 和 ppp1 网卡

    1. J.C J.C Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      这2个网卡是连接了2个客户端,如果没有连客户端连上来是没有这个网卡的

  3. it民工 it民工 Windows 10 x64 Edition  Google Chrome 78.0.3904.108

    按照教程搭建了,用两个windows服务器分别拨号连上了vpn,都能ping通服务器,但是这两个客户端相互不能ping也不嫩访问,我看服务器上产生了2个ppp(ppp0和ppp1),请问是哪里的配置有问题?

    1. J.C J.C Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      我这边做了测试,两台win10连上后(防火墙都关闭),互相ping从vpn获取到的ip地址可以通的,其中一台安装的nginx服务,另一台访问是可以访问到的。

    2. J.C J.C Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      检查下两个机器的防火墙是否关闭,客户端是否可以通过vpn服务器代理上网。服务器上2个ppp是有两个客户端连上的,默认相互ping分配的vpn ip地址默认是可以通的

      1. it民工 it民工 Windows 10 x64 Edition  Google Chrome 78.0.3904.108

        清空iptables规则以后重新添加,现在可以上网可以ping通了

        还有一个问题,如果客户端A是一个支持pptp的路由器,底下连接一个电脑B,我的另一个pptp客户端C怎样可以访问这个电脑B?
        1. J.C J.C Windows 10 x64 Edition  Google Chrome 71.0.3578.98

          那就打通A和C之间的vpn,路由器之间可以建立多个vpn隧道

  4. hawen hawen Windows 10 x64 Edition  Google Chrome 84.0.4147.105

    你好,连接上以后A和B能相互ping通 但B无妨访问A开启的http页面服务,A的防火墙是关闭全部状态,服务器防火墙打开或者关闭都试过 不行这个是什么问题

    1. J.C J.C Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      连上后AB互通,B访问不了A的http服务的话,应该是哪里还有限制的,不可能默认只通一个icmp协议,看下不能访问报的什么错误,

  5. hawen hawen Windows 10 x64 Edition  Google Chrome 83.0.4103.106

    拔上后获取的Ip地址不是设定给的ip192.168.30.0/24,而是192.168.1.1 icon_question.png

    1. J.C J.C Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      获取到不是指定的网段ip,应该是你没有配置好,检查下配置文件里面

📬 评论留言

icon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.png2018new_aini_org.png2018new_baobao_thumb.png2018new_erha_org.png2018new_kuxiao_thumb.png2018new_yun_thumb.png2018new_hufen_thumb.png2018new_gui_org.png2018new_xiaoerbuyu_org.png2018new_heixian_thumb.png2018new_wabi_thumb.png2018new_tianping_thumb.png

站点地图 网站地图 RSS Feed
豫ICP备17003270号-1 | Copyright © 2016-2020 靳闯博客
Typecho🍹Sgreen
TOP