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

  • A+
所属分类:Linux
高性能企业级服务器首台5折

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

前提条件

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

配置 CentOS PPTP 服务端

安装软件

  1. 使用命令 
    1
    yum install -y ppp pptpd

     安装软件。installation

配置 pptpd 文件

  1. 运行 
    1
    vi /etc/pptpd.conf

     编辑配置文件,删除下列两行命令符前面的 

    1
    #

    ,保存后退出。

    1. 1
      <span class="com"><span class="hljs-meta">#</span><span class="bash">localip 192.168.0.1</span></span>
    2. 1
      <span class="com"><span class="hljs-meta">#</span><span class="bash">remoteip 192.168.0.234-238</span></span>

    delete#

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

  2. 运行 
    1
    vi /etc/ppp/options.pptpd

     将 ms-dns 修改为 223.5.5.5 和 223.6.6.6。保存后退出。

    1. 1
      <span class="com"><span class="hljs-meta">#</span><span class="bash">ms-dns 10.0.0.1</span></span>
    2. 1
      <span class="com"><span class="hljs-meta">#</span><span class="bash">ms-dns 10.0.0.2</span></span>
    3. 1
      <span class="pln">ms</span><span class="pun">-</span><span class="pln">dns </span><span class="lit">223.5</span><span class="pun">.</span><span class="lit">5.5</span>
    4. 1
      <span class="pln">ms</span><span class="pun">-</span><span class="pln">dns </span><span class="lit">223.6</span><span class="pun">.</span><span class="lit">6.6</span>

    delete#

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

  3. 运行 
    1
    vi /etc/ppp/chap-secrets

     设置 pptpd 的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照 

    1
    用户名 pptpd 密码 IP地址

     的格式输入,每一项用空格隔开。保存后退出。示例:

    1
    test pptpd 123456 *

    ,其中 

    1
    *

     表示所有IP。

    1. 1
      <span class="com"><span class="hljs-meta">#</span><span class="bash"> Secrets <span class="hljs-keyword">for</span> authentication using CHAP</span></span>
    2. 1
      <span class="com"><span class="hljs-meta">#</span><span class="bash"> client server secret IP addresses</span></span>
    3. 1
      <span class="pln">test pptpd </span><span class="lit">123456</span> <span class="pun">*</span>

    newuser

  4. 运行 
    1
    vi /etc/ppp/ip-up

     设置最大传输单元 MTU,在命令符 

    1
    [ -x /etc/ppp/ip-up.local ] &amp;&amp; /etc/ppp/ip-up.local “$@”

     后面添加 

    1
    ifconfig ppp0 mtu 1472

    1. 1
       <span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">ppp</span><span class="pun">/</span><span class="pln">ip</span><span class="pun">-</span><span class="pln">up</span><span class="pun">.</span><span class="pln"> ipv6to4 $</span><span class="pun">{</span><span class="pln">LOGDEVICE</span><span class="pun">}</span>
    2. 1
       
    3. 1
       <span class="pun">[</span> <span class="pun">-</span><span class="pln">x </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">ppp</span><span class="pun">/</span><span class="pln">ip</span><span class="pun">-</span><span class="pln">up</span><span class="pun">.</span><span class="kwd">local</span> <span class="pun">]</span> <span class="pun">&amp;&amp;</span> <span class="str">/etc/</span><span class="pln">ppp</span><span class="pun">/</span><span class="pln">ip</span><span class="pun">-</span><span class="pln">up</span><span class="pun">.</span><span class="kwd">local</span> <span class="str">"$@"</span>
    4. 1
       
    5. 1
      <span class="pln"> ifconfig ppp0 mtu </span><span class="lit">1472</span>

    newcoding

修改内核参数设置

  1. 运行 
    1
    vi /etc/sysctl.conf

     编辑配置文件,添加 

    1
    net.ipv4.ip_forward = 1

     的配置,保存后退出。changecoding

  2. 运行 
    1
    sysctl -p

     使修改后的参数生效。

添加防火墙规则

  1. 运行 
    1
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

     添加 iptables 转发规则。

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

     保存设置。

配置 PPTP 服务

  1. 运行 
    1
    systemctl restart pptpd

     重启 PPTP 服务。

    注意
    此时 PPTP 还未成功运行,所以当您使用重启 PPTP 服务时,系统会提示 

    1
    Shutting down pptpd [FAILED]

    ,并发出警告。您可以忽略提示和警告,再次使用以上命令重启 PPTP 服务,警告信息就会消失。

    rebootPPTP

  2. 运行 
    1
    systemctl restart iptables

     重启 iptables。

  3. 运行如下命令设置 pptpd 和 iptables 自启动。
    1. 1
      <span class="pln">systemctl enable pptpd</span><span class="pun">.</span><span class="pln">service</span>
    2. 1
      <span class="pln">systemctl enable iptables</span><span class="pun">.</span><span class="pln">service</span>

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

配置 CentOS PPTP 客户端

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

  1. 运行 
    1
    yum install -y ppp pptp pptp-setup

     安装软件包。installation

    installation

  2. 运行 
    1
    pptpsetup --create test --server IP --username 用户名 --password 密码 --encrypt --start

     连接 VPN 服务端。

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

    connectVPN

  3. 当系统提示已经被分配了 192.168.0.234 的客户端地址时,运行 
    1
    ifconfig | grep -A 10 ppp

     可以看到 ppp0 网卡。performcoding

  4. 运行 
    1
    ip route replace default dev ppp0

     增加默认路由。newdefaultroute

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

常见问题

浏览器无法打开网页

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

    performcoding

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

  • 方案B
    1. 运行 
      1
      vi /etc/ppp/ip-up

       在 /etc/ppp/ip-up 文件中增加 

      1
      ifconfig ppp0 mtu 1472

      1. 1
        <span class="str">/etc/</span><span class="pln">ppp</span><span class="pun">/</span><span class="pln">ip</span><span class="pun">-</span><span class="pln">up</span><span class="pun">.</span><span class="pln"> ipv6to4 $</span><span class="pun">{</span><span class="pln">LOGDEVICE</span><span class="pun">}</span>
      2. 1
        <span class="pun">[</span> <span class="pun">-</span><span class="pln">x </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">ppp</span><span class="pun">/</span><span class="pln">ip</span><span class="pun">-</span><span class="pln">up</span><span class="pun">.</span><span class="kwd">local</span> <span class="pun">]</span> <span class="pun">&amp;&amp;</span> <span class="str">/etc/</span><span class="pln">ppp</span><span class="pun">/</span><span class="pln">ip</span><span class="pun">-</span><span class="pln">up</span><span class="pun">.</span><span class="kwd">local</span> <span class="str">"$@"</span>
      3. 1
        <span class="pln">ifconfig ppp0 mtu </span><span class="lit">1472</span>

      newcoding

  • 测试testing

获取到错误的 IP 地址

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

      注意
      重启客户端时,

      1
      noipdefault

       参数可能会被服务端传递过来的参数覆盖掉。如果 

      1
      noipdefault

       被覆盖,您需要检查服务端的配置。

 

发表评论

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