Centos7 搭建PPTP-VPN 服务
· 技术积累 · Linux Centos7 VPN

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或者内网ip地址
remoteip 192.168.0.10-20  #自定义分配给客户端的网段和地址池

[root@VM_centos ~]# vim /etc/ppp/options.pptpd
#修改下ms-dns,和添加一个日志文件,其他默认都开启的不用动即可

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    * 123456 *

# 用户密码组合复杂性例子
feifei    *    "!QAZxsw2#EDC"    *
Tx2022    *    "TX@xxx66"      *

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添加入站规则,1723端口和gre协议(默认INPUT是允许所有的,可以不加)
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后上网

#注意这里网段和上面配置文件(/etc/pptpd.conf)网段子网一致,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服务

总结(有问题请先对照文章内容步骤和文章注释说明,然后再参考下面的问题说明)
此篇文章是以PPTP VPN涉及到哪些文件和需要改动的配置进行搭建,需要有一定linux基础知识和理解
写此篇文章是为了记录下,方便以后用到好找,并不是教程文章,参考过程中有问题就请多 百度|谷歌|搜狗|360|bing ?
如果觉得麻烦或者完全不懂的建议去网上找一键脚本安装的

1:安装ppp和pptp包
2:安装iptables防火墙用于转发
3:修改配置文件:
/etc/pptpd.conf
/etc/ppp/options.pptpd
/etc/ppp/chap-secrets
/etc/sysctl.conf
/etc/ppp/ip-up

连接问题:
4:确认以上的配置文件无误
5:确认pptpd服务和iptables启动正常
6:确认用户名密码常正确
7:确认服务端和客户端正确配置了连接参数
8:确认你服务端的pptp vpn的协议和端口没有被运营商封掉
9:确认放行使用到的tcp端口(云安全组|外网防火墙等安全策略)

上网问题:
10:确认iptables转发规则无误
11:确认系统打开ipv4转发和脚本修改的mtu值

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

本文最后更新时间 2023-05-30
文章链接地址:
https://me.jinchuang.org/archives/517.html
本站文章除注明[转载|引用|原文]出处外,均为本站原生内容,转载前请注明出处


留言列表

  1. 小江
    小江 Android 10 QQ 浏览器 · 中国广东省东莞市电信 ·

    谢谢,博主,还给私发邮件,我是pptp类型的vpn

    1. J.C
      J.C Windows 10 Google Chrome · 中国上海市联通 ·

      确实只有pptp出现这个问题,其他类型都没见过这个错误

  2. 小江
    小江 Android 10 QQ 浏览器 · 中国广东省东莞市电信 ·

    博主在不,请教你一个问题,在同一个网络环境,win7拔vpn没有问题,但win10家庭版或专业版拔vpn时,提示无法建立远程连接,此端口己关闭

    1. J.C
      J.C Windows 10 Google Chrome · 中国上海市联通 ·

      这个错误,我也遇到得有,但是没找到解决的办法。我是换个网络环境就可以连上

  3. 董二
    董二 Windows 10 Google Chrome · 中国上海市电信 ·

    博主你好。
    使用虚拟机搭建完成后,虚拟机windows7是可以连得,我本机也是可以连上的,但是上不了网。让分公司的同事连了一下也连不上,ping不通,配置都没问题,是虚拟机的原因吗,另IPtables规则怎么清空呢

  4. 小编
    小编 Windows 10 Google Chrome · 中国上海市联通IDC机房 ·

    vim /etc/pptpd.conf 这个是啥意思??博主

    1. J.C
      J.C Windows 10 Google Chrome · 中国天津市联通 ·

      修改pptp的主配置文件,主要修改本地的ip地址和分配给客户端的ip地址段

      1. 小编
        小编 Windows 10 Google Chrome · 中国上海市联通IDC机房 ·

        -bash: vim: 未找到命令 我输入的时候他提示的是这个

        1. J.C
          J.C Windows 10 Google Chrome · 中国天津市联通 ·

          你没有安装vim命令,安装命令:yum install vim -y

          1. 小编
            小编 Windows 10 Google Chrome · 中国上海市电信 ·

            vim 修改了 咋保存呀

            1. J.C
              J.C Windows 10 Google Chrome · 中国上海市电信 ·

              :wq 或者 :x 保存退出, 这些命令操作建议你百度搜搜怎么用的。

  5. 小晃晃
    小晃晃 Windows 10 Google Chrome · 中国广东省深圳市电信 ·

    博主,有没有支持安卓和苹果手机的vpn搭建方法,最好是l2tp ipsec的

    1. J.C
      J.C Windows 10 Google Chrome · 中国上海市电信 ·

      l2tp vpn、openvpn都支持安卓和苹果,不过openvpn比较麻烦,l2tp/ipsec vpn搭建:L2TP+IPsec vpn搭建

  6. 咸鱼王
    咸鱼王 Windows 10 Google Chrome · 中国上海市电信 ·

    博主你好,请问连接VPN提示“不能建立到远程计算机的链接,因此用于此连接的端口已关闭”这个是哪里出现了问题吗?

    1. J.C
      J.C Windows 10 Google Chrome · 中国天津市联通 ·

      这个问题我认为是网络或者上网的设备的原因造成的,我也有遇到这个问题,客户端怎么修改都连不了
      我本地用联通和电信两个不同带宽都连不上,这2条带宽都从一个路由器出去的。
      如果用电脑连接手机4G热点,然后再连vpn,瞬间连上。但是切换为本地的有线或wifi,就是连不上

      1. aa
        aa Windows 10 Google Chrome · 中国广东省东莞市电信 ·

        同样的状况,不过后来咨询客服,发现华为路由上有一个PPTP的传输,把它勾选了就连上了

      2. 咸鱼王
        咸鱼王 Windows 10 Google Chrome · 中国上海市电信 ·

        好的,谢谢,很奇怪,我在你的另一个帖子里 使用L2TP的方法就能正常连接

        1. J.C
          J.C Windows 10 Google Chrome · 中国天津市电信IDC机房 ·

          嗯,我有问题那个电脑也是的,用l2tp是正常的,就是连不上PPTP,毕竟他们用到的协议不同

  7. 小象
    小象 Windows 10 Google Chrome · 中国天津市联通 ·

    按照步骤来的,但是在另一台电脑上连上我的vpn的时候,显示没有网络,防火墙也关了。百度了一下也没找到原因

    1. J.C
      J.C Windows 10 Google Chrome · 中国上海市电信 ·

      连上后不能上网 可能是iptables转发的问题。iptables关了话转发就不生效的

      1. 小象
        小象 Windows 10 Google Chrome · 中国天津市联通 ·

        重新启动了iptables 也还是不行,方便留个联系方式不,有偿

        1. J.C
          J.C Windows 10 Google Chrome · 中国上海市电信 ·

          点我网站上面的QQ图标链接就可以联系我了,不需要有偿

  8. 小白
    小白 Windows 10 Firefox · 中国上海市电信 ·

    systemctl start pptpd 提示unit not found

    1. J.C
      J.C Windows 10 Google Chrome · 中国上海市松江区电信 ·

      你pptpd服务没有安装,你的yum源没有添加epel源?

      1. 小白
        小白 Windows 10 Firefox · 中国天津市联通 ·

        一直显示 ”未进行远程连接,因为远程访问服务器的名称问题没有解决“ 是什么问题啊

      2. 小白
        小白 Windows 10 Firefox · 中国天津市联通 ·

        好了,我在添加vpn的时候,那个ip应该放哪一个,还有账号和密码

        1. J.C
          J.C Windows 10 Google Chrome · 中国上海市松江区电信 ·

          哪个ip? 如果是localip 后面这个ip,就写你服务器的ip地址,如果是云服务器就写内网ip地址
          账号密码话的 就在chap-secrets文件里面按格式添加就可以了

          1. 小白
            小白 Windows 10 Firefox · 中国天津市联通 ·

            搞定了 还是感谢博主的耐心回答

留言已关闭