本文介紹如何使用CentOS 7執行個體配置PPTP VPN服務端到用戶端的串連。
背景資訊
點對點通道通訊協定(PPTP)是建立在PPP(Point to Point)點對點通訊協定 (PPP)上的VPN隧道技術。當遠端使用者要訪問公司專用網時,可採用PPTP網路接入方式,使用者先撥號到PPTP Server建立PPP串連,然後通過PPTP協商建立一條使用者到伺服器的“隧道”,接著通過PPP協議的NCP協商,為使用者指派一個網段內IP,使用者可以使用分配到的IP進行區域網路內的通訊。從而為遠程接入虛擬私人網路提供一條在公用網路上建立安全連線的途徑。
本文檔僅用於樣本和操作指引,請您根據實際需要操作。使用PPTP服務存在安全隱患,您需要考慮由此產生的影響及問題。更多資訊,請參見查看詳情。
配置CentOS PPTP服務端
遠程登入作為PPTP服務端的ECS執行個體,按照以下操作步驟配置CentOS的PPTP服務端。如何遠程登入ECS執行個體,請參見串連方式概述。
前提條件
建立一台ECS執行個體,關於如何建立ECS執行個體,請參見使用嚮導建立執行個體。
本文樣本步驟中,使用了以下配置的ECS執行個體。實際操作時,建議您保持作業系統版本的一致性,以避免因作業系統版本差異而導致的命令執行錯誤。
執行個體規格:ecs.c6.large
作業系統:公用鏡像 CentOS 7.2
網路類型:Virtual Private Cloud
IP地址:分配公網IP地址
執行個體的安全性群組入方向規則已允許存取1723連接埠和GRE協議,具體操作,請參見管理安全性群組規則。
配置PPTP服務
安裝PPTP服務端。
請在PPTP服務端ECS執行個體中運行以下命令以安裝PPTP服務端。
yum install -y ppp pptpd配置pptpd檔案。
用於為指定PPTP服務端配置分配給用戶端的IP位址範圍,確保每個串連的裝置都能獲得一個唯一的IP地址。
執行
vim /etc/pptpd.conf命令,添加以下配置:localip 192.168.0.1 remoteip 192.168.0.230-238說明localip是指用戶端要串連的VPN服務端的地址,一般建議填寫服務端私網IP。請根據實際情況調整localip。
remoteip是指分配給PPTP用戶端的IP位址範圍。請確保該範圍內沒有其他裝置正在使用這些IP地址,以避免發生IP衝突。請根據實際情況調整remoteip。
添加配置資訊後,檔案內容如下圖所示:

配置DNS。
添加DNS伺服器是為了讓通過PPTP串連的用戶端能夠正確解析網域名稱,實現網路訪問。
執行
vim /etc/ppp/options.pptpd命令,添加以下配置:ms-dns 223.5.5.5 ms-dns 223.6.6.6說明IP地址223.5.5.5和223.6.6.6是阿里雲的公用DNS伺服器位址,您可以根據需要調整為其它公用DNS服務地址。
添加配置資訊後,檔案內容如下圖所示:

建立使用者。
建立的使用者用於串連PPTP服務端時的身分識別驗證,確保只有授權使用者可以通過撥號或網路連接訪問系統。
執行
vim /etc/ppp/chap-secrets命令,添加pptpd的使用者名稱和密碼。根據需要添加帳號,按照使用者名稱 pptpd 密碼 IP地址格式輸入,確保每一項之間用空格隔開,並且每行僅添加一個使用者帳號。說明樣本:test pptpd 123456 ,其中“*”表示所有IP。
test pptpd 123456 *添加配置資訊後,檔案內容如下圖所示:

修改傳輸單元最大值MTU。
設定MTU是為了最佳化網路效能,減少分包,提高資料轉送效率
執行
vim /etc/ppp/ip-up命令,設定傳輸單元最大值MTU。ifconfig ppp0 mtu 1472添加配置資訊後,檔案內容如下圖所示:

啟動PPTP服務。
執行以下命令啟動PPTP服務,並設定開機自動啟動。
systemctl start pptpd systemctl enable pptpd.service
開啟路由轉寄
允許系統進行IP轉寄。
執行以下命令啟用轉寄。
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf添加配置資訊後,檔案內容如下圖所示:

執行
sysctl -p命令,使修改後的參數生效。
配置iptables防火牆
通過使用iptables防火牆,您可以設定規則來控制出入系統的網路流量。例如,可以讓多台電腦共用一個公用IP地址訪問互連網。
關閉防火牆。
systemctl stop firewalld systemctl mask firewalld安裝iptables服務。
yum install -y iptables-services啟動iptables服務,並設定iptables服務開機自啟動。
systemctl start iptables systemctl enable iptables添加允許PPTP串連規則。
# 允許新的TCP串連請求通過1723連接埠進入本機 iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT # 允許GRE協議(IP協議號47) iptables -I INPUT -p gre -j ACCEPT添加iptables轉寄規則,實現源地址偽裝。其中
192.168.0.0/24為分配給用戶端的IP地址所在網段。iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE添加NAT轉寄規則,將來自網段資料包的源IP地址轉換為指定的公網IP地址。其中
192.168.0.0/24為分配給用戶端的IP地址所在網段,XXX.XXX.XXX.XXX為PPTP服務端ECS執行個體公網IP。iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source XXX.XXX.XXX.XXX儲存配置。
service iptables save重啟iptables服務。
systemctl restart iptables
配置PPTP用戶端
CentOS
前提條件
建立一台ECS執行個體,關於如何建立ECS執行個體,請參見使用嚮導建立執行個體。樣本步驟中,使用了以下配置的ECS執行個體。實際操作時,建議您保持作業系統版本的一致性,以避免因作業系統版本差異而導致的命令執行錯誤。
執行個體規格:ecs.c6.large
作業系統:公用鏡像 CentOS 7.2
網路類型:Virtual Private Cloud
IP地址:分配公網IP地址
操作步驟
遠程登入ECS執行個體,如何遠程登入ECS執行個體,請參見串連方式概述。
請在PPTP用戶端ECS執行個體中執行如下命令,安裝PPTP軟體包。
yum install -y ppp pptp pptp-setup執行如下命令, 串連PPTP服務端。
pptpsetup --create test --server [$IP] --username [$User] --password [$Password] --encrypt --start如下圖所示,表示已成功串連PPTP服務端。

當系統提示已經被分配了
192.168.0.234的用戶端地址時,執行如下命令,可以看到ppp0網卡。ifconfig | grep -A 10 ppp如下圖所示,表示命令執行成功。

Windows
前提條件
建立一台ECS執行個體,關於如何建立ECS執行個體,請參見使用嚮導建立執行個體。樣本步驟中,使用了以下配置的ECS執行個體。實際操作時,建議您保持作業系統版本的一致性,以避免因作業系統版本差異而導致的命令執行錯誤。
執行個體規格:ecs.c6.large
作業系統:公用鏡像 Windows Server 2022
網路類型:Virtual Private Cloud
IP地址:分配公網IP地址
操作步驟
遠程登ECS執行個體,如何遠程登入ECS執行個體,請參見串連方式概述。
在中單擊添加 VPN 串連。

在添加 VPN 串連介面添加如下資訊並儲存。
VPN 供應商:Windows(內建)。
串連名稱:自訂VPN串連名稱,例如pptp。
伺服器名稱或地址:填入VPN伺服器的公網IP或者網域名稱
VPN 類型:選擇點對點通道通訊協定(PPTP)。
登入資訊的類型:選擇使用者名稱和密碼。
使用者名稱(可選):填入PPTP服務端中建立的使用者的使用者名稱。
密碼:填入PPTP服務端中建立的使用者的密碼。

在中找到剛建立的VPN串連。

按右鍵該VPN串連,選擇,選擇網際網路通訊協定 (IP)版本 4(TCP/IPv4),單擊屬性。

在快顯視窗中,單擊進階,在IP 設定頁簽取消選中在遠程網路上使用預設閘道,然後單擊確定儲存設定。
重要若未取消選中,撥號連線建立後,將會更改本地的預設閘道設定,從而導致本地無法正常訪問互連網。

在中串連VPN,串連成功後將顯示已串連。

常見問題
瀏覽器無法開啟網頁
搭建PPTP VPN後,測試可以串連,可以PING通網站網域名稱,但瀏覽器無法開啟網頁。一般是MTU設定不正確導致的。請參考以下方案解決問題。
方案一
登入串連配置VPN的CentOS伺服器。
輸入執行
ifconfig ppp0 mtu 1472命令。通過瀏覽器測試是否能開啟網頁。當出現類似如下返回資訊時,表示問題已經解決。
說明此方案可以臨時生效,如果您需要長期生效的方案,請完成方案二。
方案二
登入串連配置VPN的CentOS伺服器。
輸入執行
vi /etc/ppp/ip-up命令,進入/etc/ppp/ip-up檔案。在
/etc/ppp/ip-up檔案中添加ifconfig ppp0 mtu 1472命令。回顯如下圖所示,表示命令添加成功。

通過瀏覽器測試是否能開啟網頁。
當出現類似如下返回資訊時,表示問題已經解決。

擷取到錯誤的IP地址
用戶端成功串連VPN後,擷取到錯誤的地址。擷取的地址不是VPN服務端分配的地址,而是Elastic Compute Service執行個體的內網網卡地址。如果出現這種情況,假設配置的VPN用戶端配置名稱是testvpn,可以參照如下步驟嘗試處理。
操作步驟
登入串連配置VPN的CentOS伺服器。
輸入執行
vi /etc/ppp/peers/testvpn命令,進入ppp用戶端/etc/ppp/peers/testvpn設定檔中。在如下圖位置上添加noipdefault參數。
執行如下命令重啟用戶端。重新串連後通常可擷取到正確的IP地址。
poff testvpn pon testvpn說明重啟用戶端時,
noipdefault參數可能會被服務端傳遞過來的參數覆蓋。如果noipdefault參數被覆蓋,您需要檢查服務端的配置。