如何使用 CentOS 6 实例配置 PPTP VPN 连接

  • A+
所属分类:Linux

说明
本文以 CentOS 实例为例配置 PPTP VPN,仅用于示例和操作指引,请您根据实际需要操作。使用 PPTP 服务存在安全隐患,点击查看详情,您需要考虑由此产生的影响及问题。

前提条件

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

配置 CentOS PPTP 服务端

安装软件

  1. 使用命令 yum install -y ppp pptpd 安装软件。如何使用 CentOS 6 实例配置 PPTP VPN 连接

配置 pptpd 文件

  1. 运行 vi /etc/pptpd.conf 编辑配置文件,删除下列两行命令符前面的 #,保存后退出。
    1. #localip 192.168.0.1
    2. #remoteip 192.168.0.234-238

    如何使用 CentOS 6 实例配置 PPTP VPN 连接

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

  2. 运行 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

    如何使用 CentOS 6 实例配置 PPTP VPN 连接

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

  3. 运行 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 *

    如何使用 CentOS 6 实例配置 PPTP VPN 连接

  4. 运行 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. [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
    3. ifconfig ppp0 mtu 1472

    如何使用 CentOS 6 实例配置 PPTP VPN 连接

修改内核参数设置

  1. 运行 vi /etc/sysctl.conf 编辑配置文件,添加 net.ipv4.ip_forward = 1 的配置,保存后退出。如何使用 CentOS 6 实例配置 PPTP VPN 连接
  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 服务,警告信息就会消失。

    如何使用 CentOS 6 实例配置 PPTP VPN 连接

  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如何使用 CentOS 6 实例配置 PPTP VPN 连接
  2. 运行 pptpsetup --create test --server IP --username 用户名 --password 密码 --encrypt --start 连接 VPN 服务端。

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

    如何使用 CentOS 6 实例配置 PPTP VPN 连接

  3. 当系统提示已经被分配了 192.168.0.234 的客户端地址时,运行 ifconfig | grep -A 10 ppp 可以看到 ppp0 网卡。如何使用 CentOS 6 实例配置 PPTP VPN 连接
  4. 运行 ip route replace default dev ppp0 增加默认路由。如何使用 CentOS 6 实例配置 PPTP VPN 连接

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

常见问题

浏览器无法打开网页

  • 现象:搭建 PPTP VPN 后,测试可以连接,可以 ping 通网站域名,但浏览器无法打开网页。如何使用 CentOS 6 实例配置 PPTP VPN 连接
  • 分析:一般是 MTU 设置不正确导致的。
  • 方案A:在配置 VPN 的 CentOS 服务器中运行 ifconfig ppp0 mtu 1472如何使用 CentOS 6 实例配置 PPTP VPN 连接

    注意
    上述解决方案可以临时生效,如果您需要长期生效的方案,参考方案 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

      如何使用 CentOS 6 实例配置 PPTP VPN 连接

  • 测试如何使用 CentOS 6 实例配置 PPTP VPN 连接

获取到错误的 IP 地址

  • 现象:客户端成功连接上 VPN 后,获取到错误的地址。获取的地址不是 VPN 服务端分配的地址,而是云服务器 ECS 的内网网卡地址,如图:如何使用 CentOS 6 实例配置 PPTP VPN 连接
  • 分析:如果出现这种情况,假设配置的 VPN 客户端配置名称是 testvpn,可以参照如下步骤尝试处理。
  • 方案
    1. 在 ppp 客户端配置文件 /etc/ppp/peers/testvpn 中添加 noipdefault 参数。如何使用 CentOS 6 实例配置 PPTP VPN 连接
    2. 使用如下命令重启客户端。重新连接后通常可获取到正确的 IP 地址。
      1. poff testvpn
      2. pon testvpn

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

 

admin
阿里云云服务器ECS-全民云计算/通用版/入门级/个人建站
网站定制/网站建设一条龙/不满意全额退款/云·企业官网
阿里邮箱 企业邮箱标准版 5账号
网站建设/快速仿站/千套模板/配阿里云空间/云·速成美站

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: