如何使用CentOS 7实例配置PPTP VPN服务端到客户端的连接

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何使用CentOS 7实例配置PPTP VPN服务端到客户端的连接。

背景信息

点对点隧道协议(PPTP)是建立在PPP(Point to Point)点对点协议上的VPN隧道技术。当远程用户要访问公司专用网时,可采用PPTP网络接入方式,用户先拨号到PPTP Server建立PPP连接,然后通过PPTP协商建立一条用户到服务器的“隧道”,接着通过PPP协议的NCP协商,为用户分配一个网段内IP,用户可以使用分配到的IP进行局域网内的通信。从而为远程接入虚拟专用网提供一条在公共网络上创建安全连接的途径。

警告

本文档仅用于示例和操作指引,请您根据实际需要操作。使用PPTP服务存在安全隐患,您需要考虑由此产生的影响及问题。更多信息,请参见查看详情

前提条件

  • 已创建一台ECS实例。具体操作,请参见使用向导创建实例

    本文的示例步骤中,使用以下配置的ECS实例。实际操作时,建议您保持操作系统版本一致,避免因操作系统版本问题导致的命令执行报错。

    • 实例规格:ecs.c6.large

    • 操作系统:公共镜像 CentOS 7.2

    • 网络类型:专有网络VPC

    • IP地址:公网IP

  • 在安全组中放行配置PPTP VPN需要使用TCP协议的1723端口。具体操作,请参见添加安全组规则

配置CentOS PPTP服务端

按照如下操作步骤,配置CentOS PPTP服务端。

  1. 远程登录ECS实例。

    具体操作,请参见连接方式概述

  2. 执行如下命令,完成PPTP服务端安装。

    yum install -y ppp pptpd

    回显如下图所示,表示PPTP服务端安装成功。

  3. 配置pptpd文件。

    1. 执行vi /etc/pptpd.conf命令, 编辑配置文件,删除下列两行命令符前面的“#”,使下列两行命令可以执行。输入:wq命令保存退出。

      #localip 192.168.0.1
      #remoteip 192.168.0.234-238,192.168.0.245

      回显如下图所示,表示成功配置pptpd文件。

      说明

      localip和remoteip分别是VPN的网关地址和VPN拨号时获取的地址段。您可以根据需要调整。

    2. 执行vi /etc/ppp/options.pptpd命令,将ms-dns修改为223.5.5.5223.6.6.6。输入:wq命令保存退出。

      #ms-dns 10.0.0.1
      #ms-dns 10.0.0.2
      ms-dns 223.5.5.5
      ms-dns 223.6.6.6
      说明

      IP地址223.5.5.5和223.6.6.6是阿里云的公共DNS服务器地址,您可以根据需要调整为其它公共DNS服务地址。

      回显如下图所示,表示ms-dns修改成功。

    3. 执行vi /etc/ppp/chap-secrets命令,设置pptpd的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照用户名 pptpd 密码 IP地址格式输入,每一项用空格隔开。输入:wq命令保存退出。

      说明

      示例:test pptpd 123456 ,其中“*”表示所有IP。

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

      回显如下图所示,表示pptpd用户和密码设置成功。

    4. 执行vi /etc/ppp/ip-up命令,设置最大传输单元MTU。在命令符[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@”下方添加 ifconfig ppp0 mtu 1472

      /etc/ppp/ip-up. ipv6to4 ${LOGDEVICE}
      [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@”
      ifconfig ppp0 mtu 1472

      回显如下图所示,表示最大传输单元MTU设置成功。

  4. 内核参数设置。

    1. 执行vi /etc/sysctl.conf命令,编辑配置文件,添加net.ipv4.ip_forward = 1配置,输入:wq命令保存退出。

      回显如下图所示,表示配置成功。

    2. 执行sysctl -p命令,使修改后的参数生效。

  5. 添加防火墙规则。

    1. 执行如下命令,添加iptables转发规则。

      iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
    2. 执行如下命令,添加NAT转发规则,其中XXX.XXX.XXX.XXX为您的实例公网IP地址。

      iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source XXX.XXX.XXX.XXX
    3. 执行如下命令,保存设置。

      service iptables save
      • 如果系统显示类似以下信息,则表示已保存成功。

        iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
      • 如果系统显示类似以下信息,则表示命令执行失败。

        The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
        说明

        遇到此问题是因为ECS实例中没有安装iptables服务,因此需要先安装iptables服务后,再执行service iptables save命令。请参考下述步骤进行操作。

  6. (可选)安装及配置iptables服务。

    1. 依次执行以下命令,关闭防火墙。

      systemctl stop firewalld
      systemctl mask firewalld
    2. 执行以下命令,安装iptables服务。

      yum install iptables-services
    3. 执行以下命令,设置iptables服务开机自启动。

      systemctl enable iptables
    4. 执行以下命令,重启iptables服务。

      systemctl restart iptables
    5. 重新执行service iptables save命令,确认保存设置成功。

配置PPTP服务

  1. 执行如下命令,重启PPTP服务。

    说明

    此时PPTP还未成功运行,所以当您重启PPTP服务时,系统会提示Shutting down pptpd [FAILED],并发出警告。您可以忽略提示和警告,再次使用以下命令重启PPTP服务,警告信息就会消失。

    systemctl restart pptpd
  2. 执行如下命令,重启iptables。

    systemctl start iptables
  3. 依次执行如下命令,设置pptpd和iptables自启动。

    systemctl enable pptpd.service
    systemctl enable iptables.service

至此,您的PPTP VPN服务端已安装结束。您可以在Windows客户端的网络和共享中心设置新的连接或网络,即可通过VPN访问网络。

配置CentOS PPTP客户端

  1. 执行如下命令,安装PPTP软件包。

    yum install -y ppp pptp pptp-setup

    回显如下图所示,表示PPTP安装成功。

  2. 执行如下命令, 连接VPN服务端。

    pptpsetup --create test --server [$IP] --username [$User] --password [$Password] --encrypt --start
    说明

    [$IP]、[$User]、[$Password]为VPN服务端的IP地址、用户名和密码。

    回显如下图所示,表示已成功连接VPN服务端。

  3. 当系统提示已经被分配了192.168.0.234的客户端地址时,执行如下命令,可以看到ppp0网卡。

    ifconfig | grep -A 10 ppp

    回显如下图所示,表示命令执行成功。

  4. 执行如下命令,增加默认路由。

    ip route replace default dev ppp0

    回显如下图所示,表示命令执行成功。

  5. 增加路由后,您就可以访问VPN服务器。

常见问题

浏览器无法打开网页

搭建PPTP VPN后,测试可以连接,可以PING通网站域名,但浏览器无法打开网页。一般是MTU设置不正确导致的。请参考以下方案解决问题。

  • 方案一

    1. 登录连接配置VPN的CentOS服务器。

    2. 输入执行ifconfig ppp0 mtu 1472命令。

    3. 通过浏览器测试是否能打开网页。当出现类似如下返回信息时,表示问题已经解决。

      说明

      此方案可以临时生效,如果您需要长期生效的方案,请完成方案二。

  • 方案二

    1. 登录连接配置VPN的CentOS服务器。

    2. 输入执行vi /etc/ppp/ip-up命令,进入/etc/ppp/ip-up文件中。

    3. /etc/ppp/ip-up文件中添加ifconfig ppp0 mtu 1472 命令。

      回显如下图所示,表示命令添加成功。image

    4. 通过浏览器测试是否能打开网页。

      当出现类似如下返回信息时,表示问题已经解决。

获取到错误的IP地址

客户端成功连接VPN后,获取到错误的地址。获取的地址不是VPN服务端分配的地址,而是云服务器ECS实例的内网网卡地址。如果出现这种情况,假设配置的VPN客户端配置名称是testvpn,可以参照如下步骤尝试处理。

操作步骤

  1. 登录连接配置VPN的CentOS服务器。

  2. 输入执行vi /etc/ppp/peers/testvpn命令,进入ppp客户端/etc/ppp/peers/testvpn配置文件中。在如下图位置上添加noipdefault参数。

  3. 执行如下命令重启客户端。重新连接后通常可获取到正确的IP地址。

    poff testvpn
    pon testvpn
    说明

    重启客户端时,noipdefault参数可能会被服务端传递过来的参数覆盖。如果noipdefault参数被覆盖,您需要检查服务端的配置。