1. 程式人生 > >CentOS安裝PPTP的VPN服務

CentOS安裝PPTP的VPN服務

注意本文轉載自阿里雲棲社群,僅供學習交流使用

前提條件

配置 PPTP VPN 需要使用 TCP 1723 通訊埠。您需要 在安全組中放行 TCP 1723 埠

配置 CentOS PPTP 服務端

安裝軟體

  1. 使用命令 yum install -y ppp pptpd 安裝軟體。

    8263107-71881f30b53d7f5e..jpg installation

配置 pptpd 檔案

  1. 執行 vi /etc/pptpd.conf 編輯配置檔案,刪除下列兩行命令符前面的 #,儲存後退出。
    1.  `#localip 192.168.0.1`
    2.  `#remoteip 192.168.0.234-238`
8263107-8b68269e80d702f1..jpg 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`
8263107-3c0322eb9ba5d64c..jpg 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 *
    8263107-383d15678fc1249b..jpg newuser
  2. 執行 vi /etc/ppp/ip-up 設定最大傳輸單元 MTU,在命令符 [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “[email protected] 後面新增 ifconfig ppp0 mtu 1472

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

修改核心引數設定

  1. 執行 vi /etc/sysctl.conf 編輯配置檔案,新增 net.ipv4.ip_forward = 1 的配置,儲存後退出。

    8263107-d352a4549e402b31..jpg 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 服務,警告資訊就會消失。

    8263107-f92fc952b8e7e4c5..jpg 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 安裝軟體包。

    8263107-a97d8825e4273959..jpg installation 8263107-31a51f44a38685a3..jpg installation
  2. 執行 pptpsetup --create test --server IP --username 使用者名稱 --password 密碼 --encrypt --start 連線 VPN 服務端。

    注意:
    您需要填寫實際配置 VPN 服務端的 IP 地址、使用者名稱和密碼。

    8263107-aed79b165c4b2951..jpg connectVPN
  3. 當系統提示已經被分配了 192.168.0.234 的客戶端地址時,執行 ifconfig | grep -A 10 ppp 可以看到 ppp0 網絡卡。

    8263107-60fa95dac2f665b4..jpg performcoding
  4. 執行 ip route replace default dev ppp0 增加預設路由。

    8263107-76bf20da02add5c6..jpg newdefaultroute

增加路由後,您就可以訪問 VPN 伺服器了。

常見問題

瀏覽器無法開啟網頁

  • 現象:搭建 PPTP VPN 後,測試可以連線,可以 ping 通網站域名,但瀏覽器無法開啟網頁。

    8263107-8e8dd14b8e42d087..jpg unsbletoopenweb
  • 分析:一般是 MTU 設定不正確導致的。

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

    8263107-699c1142baae611d..jpg 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 "[email protected]"
      3. ifconfig ppp0 mtu 1472
      8263107-6b479b346cbd4ac7..jpg newcoding
  • 測試

    8263107-cf222e30e34a53d1..jpg testing

獲取到錯誤的 IP 地址

  • 現象:客戶端成功連線上 VPN 後,獲取到錯誤的地址。獲取的地址不是 VPN 服務端分配的地址,而是雲伺服器 ECS 的內網網絡卡地址,如圖:

    8263107-b710bcc492f0f12f..png IpAddress
  • 分析:如果出現這種情況,假設配置的 VPN 客戶端配置名稱是 testvpn,可以參照如下步驟嘗試處理。

  • 方案

    1. 在 ppp 客戶端配置檔案 /etc/ppp/peers/testvpn 中新增 noipdefault 引數。

      8263107-0998db4f00620687..png Reason
    2. 使用如下命令重啟客戶端。重新連線後通常可獲取到正確的 IP 地址。

    1. poff testvpn
    2. pon testvpn

注意
重啟客戶端時,noipdefault 引數可能會被服務端傳遞過來的引數覆蓋掉。如果 noipdefault 被覆蓋,您需要檢查服務端的配置。