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

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服务


商业转载请联系作者获得授权,非商业转载请注明出处,谢谢合作。


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


已有 11 条评论

  1. 33 33   Windows 10 x64 Edition Google Chrome 83.0.4103.106

    操作一遍,连上了,但是没网络

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

      如果连上了,ping下vpn网段其他主机是否通,检查下iptables的转发,可能是转发的问题

      1. 33 33   Windows 10 x64 Edition Google Chrome 83.0.4103.116

        我是在自己电脑的虚拟机上的 centos 装的。

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

          你用本机的虚拟机不行,你虚拟机就是通过本机网络上网的,你vpn再连接到虚拟机后,虚拟机也不能上网了,所以你用本机虚拟机不行,你vpn服务端换到其他机器再用本机去连接测试。

      2. 33 33   Windows 10 x64 Edition Google Chrome 83.0.4103.116

        iptables 规则也都清空并且重新配置了。还是不行。是不是哪里操作错了 icon_surprised.png

      3. 33 33   Windows 10 x64 Edition Google Chrome 83.0.4103.116

        客户端连上了V P N,还连接的 WiFi。但是ip还是本地的(感觉V P N没有生效)。WiFi断开后,客户端的V P N也跟着断开了。

  2. JY JY   Windows 10 x64 Edition Google Chrome 70.0.3538.25

    博主请教您一个问题,按照这个教程配置,最后两台win10电脑A和B都连上了服务器,A和服务器能互ping,B和服务器也能互ping,但A和B不能互Ping,这是什么原因?

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

      检查下A和B是否开启防火墙了,查看下本机的路由网段看看,这个问题我也不能给你准确说哪的问题

  3. 十分感谢此篇教程,按照这篇指引(80%)+其他零零散散的资料,最终在腾讯云centos7.6上面部署成功了,我没使用iptables,直接默认的firewalld一路走到底,绕了不少弯,连上vpn无法连接外网,vpn本身所在的服务器的网站却能秒开...,后面莫名其妙弄好了

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

      有帮助就行,vpn这个东西多搞搞就熟悉了,刚开始我弄也是不少问题

  4. 举个栗子 举个栗子    U

    不错

📬 评论留言

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

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