美文网首页Linux大全
CentOS安装PPTP的VPN服务

CentOS安装PPTP的VPN服务

作者: Belmode | 来源:发表于2018-03-16 12:32 被阅读674次

    注意本文转载自阿里云栖社区,仅供学习交流使用

    前提条件

    配置 PPTP VPN 需要使用 TCP 1723 通信端口。您需要 在安全组中放行 TCP 1723 端口

    配置 CentOS PPTP 服务端

    安装软件

    1. 使用命令 yum install -y ppp pptpd 安装软件。

      installation

    配置 pptpd 文件

    1. 运行 vi /etc/pptpd.conf 编辑配置文件,删除下列两行命令符前面的 #,保存后退出。
        1.  `#localip 192.168.0.1`
        2.  `#remoteip 192.168.0.234-238`
    
    delete#
    > localip 192.168.0.1 和 remoteip 192.168.0.2-200 分别是 VPN 的网关地址和 VPN 拨号获取地址段。您可以根据需要调整。
    
    1. 运行 vi /etc/ppp/options.pptpd 将 ms-dns 修改为 223.5.5.5 和 223.6.6.6。保存后退出。
        1.  `#ms-dns 10.0.0.1`
        2.  `#ms-dns 10.0.0.2`
        3.  `ms-dns 223.5.5.5`
        4.  `ms-dns 223.6.6.6`
    
    delete#
    > IP 地址 223.5.5.5 和 223.6.6.6 是阿里云的公共 DNS 服务器地址,您可以根据需要调整为其它公共 DNS 服务地址。
    
    1. 运行 vi /etc/ppp/chap-secrets 设置 pptpd 的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照 用户名 pptpd 密码 IP地址 的格式输入,每一项用空格隔开。保存后退出。示例:test pptpd 123456 *,其中 * 表示所有IP。

      1. # Secrets for authentication using CHAP
      2. # client server secret IP addresses
      3. test pptpd 123456 *
      newuser
    2. 运行 vi /etc/ppp/ip-up 设置最大传输单元 MTU,在命令符 [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@” 后面添加 ifconfig ppp0 mtu 1472

    1.  /etc/ppp/ip-up. ipv6to4 ${LOGDEVICE}
    2.
    3.  [  -x /etc/ppp/ip-up.local  ]  &&  /etc/ppp/ip-up.local  "$@"
    4.
    5.  ifconfig ppp0 mtu 1472
    
    image

    修改内核参数设置

    1. 运行 vi /etc/sysctl.conf 编辑配置文件,添加 net.ipv4.ip_forward = 1 的配置,保存后退出。

      changecoding
    2. 运行 sysctl -p 使修改后的参数生效。

    添加防火墙规则

    1. 运行 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 添加 iptables 转发规则。

    2. 运行 iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source XXX.XXX.XXX.XXX 添加 NAT 转发规则,其中 XXX.XXX.XXX.XXX 为您的实例公网 IP 地址。

    3. 运行 iptables-save 保存设置。

    配置 PPTP 服务

    1. 运行 systemctl restart pptpd 重启 PPTP 服务。

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

      rebootPPTP
    2. 运行 systemctl restart iptables 重启 iptables。

    3. 运行如下命令设置 pptpd 和 iptables 自启动。

      1. systemctl enable pptpd.service
      2. systemctl enable iptables.service

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

    配置 CentOS PPTP 客户端

    此处以 CentOS 7.4 为例配置 PPTP 客户端。

    1. 运行 yum install -y ppp pptp pptp-setup 安装软件包。

      installation installation
    2. 运行 pptpsetup --create test --server IP --username 用户名 --password 密码 --encrypt --start 连接 VPN 服务端。

      注意:
      您需要填写实际配置 VPN 服务端的 IP 地址、用户名和密码。

      connectVPN
    3. 当系统提示已经被分配了 192.168.0.234 的客户端地址时,运行 ifconfig | grep -A 10 ppp 可以看到 ppp0 网卡。

      performcoding
    4. 运行 ip route replace default dev ppp0 增加默认路由。

      newdefaultroute

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

    常见问题

    浏览器无法打开网页

    • 现象:搭建 PPTP VPN 后,测试可以连接,可以 ping 通网站域名,但浏览器无法打开网页。

      unsbletoopenweb
    • 分析:一般是 MTU 设置不正确导致的。

    • 方案A:在配置 VPN 的 CentOS 服务器中运行 ifconfig ppp0 mtu 1472

      performcoding

      注意
      上述解决方案可以临时生效,如果您需要长期生效的方案,参考方案 B

    • 方案B

      1. 运行 vi /etc/ppp/ip-up 在 /etc/ppp/ip-up 文件中增加 ifconfig ppp0 mtu 1472

        1. /etc/ppp/ip-up. ipv6to4 ${LOGDEVICE}
        2. [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
        3. ifconfig ppp0 mtu 1472
        newcoding
    • 测试

      testing

    获取到错误的 IP 地址

    • 现象:客户端成功连接上 VPN 后,获取到错误的地址。获取的地址不是 VPN 服务端分配的地址,而是云服务器 ECS 的内网网卡地址,如图:

      IpAddress
    • 分析:如果出现这种情况,假设配置的 VPN 客户端配置名称是 testvpn,可以参照如下步骤尝试处理。

    • 方案

      1. 在 ppp 客户端配置文件 /etc/ppp/peers/testvpn 中添加 noipdefault 参数。

        Reason
      2. 使用如下命令重启客户端。重新连接后通常可获取到正确的 IP 地址。

      1. poff testvpn
      2. pon testvpn

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

    相关文章

      网友评论

        本文标题:CentOS安装PPTP的VPN服务

        本文链接:https://www.haomeiwen.com/subject/whblqftx.html