CentOS安裝PPTP的VPN服務
注意本文轉載自阿里雲棲社群,僅供學習交流使用
前提條件
配置 PPTP VPN 需要使用 TCP 1723 通訊埠。您需要 在安全組中放行 TCP 1723 埠。
配置 CentOS PPTP 服務端
安裝軟體
-
使用命令
installationyum install -y ppp pptpd
安裝軟體。
配置 pptpd 檔案
- 執行
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 撥號獲取地址段。您可以根據需要調整。
- 執行
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 服務地址。
-
執行
vi /etc/ppp/chap-secrets
設定 pptpd 的使用者名稱和密碼。根據需要新增賬號,一行只新增一個使用者賬號。按照使用者名稱 pptpd 密碼 IP地址
test pptpd 123456 *
,其中*
表示所有IP。# Secrets for authentication using CHAP
# client server secret IP addresses
test pptpd 123456 *
執行
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
image
修改核心引數設定
-
執行
changecodingvi /etc/sysctl.conf
編輯配置檔案,新增net.ipv4.ip_forward = 1
的配置,儲存後退出。 執行
sysctl -p
使修改後的引數生效。
新增防火牆規則
執行
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
新增 iptables 轉發規則。執行
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 地址。執行
iptables-save
儲存設定。
配置 PPTP 服務
-
執行
systemctl restart pptpd
重啟 PPTP 服務。注意:
此時 PPTP 還未成功執行,所以當您使用重啟 PPTP 服務時,系統會提示Shutting down pptpd [FAILED]
,併發出警告。您可以忽略提示和警告,再次使用以上命令重啟 PPTP 服務,警告資訊就會消失。 執行
systemctl restart iptables
重啟 iptables。-
執行如下命令設定 pptpd 和 iptables 自啟動。
systemctl enable pptpd.service
systemctl enable iptables.service
至此,您的 PPTP VPN 服務端安裝結束了。您可以在 Windows 客戶端的 網路和共享中心 設定新的連線或網路,即可通過 VPN 訪問網路。
配置 CentOS PPTP 客戶端
此處以 CentOS 7.4 為例配置 PPTP 客戶端。
-
執行
installation installationyum install -y ppp pptp pptp-setup
安裝軟體包。 -
執行
pptpsetup --create test --server IP --username 使用者名稱 --password 密碼 --encrypt --start
連線 VPN 服務端。注意:
您需要填寫實際配置 VPN 服務端的 IP 地址、使用者名稱和密碼。 -
當系統提示已經被分配了 192.168.0.234 的客戶端地址時,執行
performcodingifconfig | grep -A 10 ppp
可以看到 ppp0 網絡卡。 -
執行
newdefaultrouteip route replace default dev ppp0
增加預設路由。
增加路由後,您就可以訪問 VPN 伺服器了。
常見問題
瀏覽器無法開啟網頁
-
現象:搭建 PPTP VPN 後,測試可以連線,可以 ping 通網站域名,但瀏覽器無法開啟網頁。
unsbletoopenweb 分析:一般是 MTU 設定不正確導致的。
-
方案A:在配置 VPN 的 CentOS 伺服器中執行
performcodingifconfig ppp0 mtu 1472
。注意:
上述解決方案可以臨時生效,如果您需要長期生效的方案,參考方案 B。 -
方案B:
-
執行
vi /etc/ppp/ip-up
在 /etc/ppp/ip-up 檔案中增加ifconfig ppp0 mtu 1472
。/etc/ppp/ip-up. ipv6to4 ${LOGDEVICE}
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "[email protected]"
ifconfig ppp0 mtu 1472
-
-
測試:
testing
獲取到錯誤的 IP 地址
-
現象:客戶端成功連線上 VPN 後,獲取到錯誤的地址。獲取的地址不是 VPN 服務端分配的地址,而是雲伺服器 ECS 的內網網絡卡地址,如圖:
IpAddress 分析:如果出現這種情況,假設配置的 VPN 客戶端配置名稱是 testvpn,可以參照如下步驟嘗試處理。
-
方案:
-
在 ppp 客戶端配置檔案 /etc/ppp/peers/testvpn 中新增 noipdefault 引數。
Reason 使用如下命令重啟客戶端。重新連線後通常可獲取到正確的 IP 地址。
poff testvpn
pon testvpn
-
注意:
重啟客戶端時,noipdefault
引數可能會被服務端傳遞過來的引數覆蓋掉。如果noipdefault
被覆蓋,您需要檢查服務端的配置。