本文為您介紹ECS的Ubuntu系統中如何配置VPN。
前提條件
本文內容適用於Ubuntu 18.04、Ubuntu 20.04及Ubuntu 22.04。
本文以在作業系統版本為Ubuntu 18.04的ECS執行個體中搭建VPN為例。關於如何建立ECS執行個體,請參見自訂購買執行個體。
執行個體的安全性群組入方向規則已允許存取1723連接埠和GRE協議,訪問來源為VPN用戶端的公網IP。具體操作,請參見管理安全性群組規則。
配置VPN服務端
遠程登入作為PPTP服務端的ECS執行個體,按照以下操作步驟配置Ubuntu的PPTP服務端。如何遠程登入ECS執行個體,請參見串連執行個體(Linux)。
配置PPTP服務
執行如下命令,安裝pptpd。
sudo apt-get update sudo apt-get -y install pptpd配置pptpd檔案。 用於為指定PPTP服務端配置分配給用戶端的IP位址範圍,確保每個串連的裝置都能獲得一個唯一的IP地址。
執行
sudo vim /etc/pptpd.conf命令,添加以下配置:localip 192.168.0.1 remoteip 192.168.0.234-238說明localip是指用戶端要串連的VPN服務端的地址,一般建議填寫服務端私網IP。請根據實際情況調整localip。
remoteip是指分配給PPTP用戶端的IP位址範圍。請確保該範圍內沒有其他裝置正在使用這些IP地址,以避免發生IP衝突。請根據實際情況調整remoteip。
添加配置資訊後,檔案內容如下圖所示:

配置DNS。
執行
sudo vim /etc/ppp/pptpd-options命令,添加以下配置:ms-dns 223.5.5.5 ms-dns 223.6.6.6說明IP地址223.5.5.5和223.6.6.6是阿里雲的公用DNS伺服器位址,您可以根據需要調整為其它公用DNS服務地址。
添加配置資訊後,檔案內容如下圖所示:

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

開啟路由轉寄
執行以下命令啟用轉寄。
sudo echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf執行如下命令,載入系統參數。
sudo sysctl -p "/etc/sysctl.conf"
配置iptables防火牆轉寄規則
由於在Ubuntu中,直接執行iptables規則會在ECS重啟後丟失,因為預設情況下這些規則是臨時的。這裡使用iptables-persistent包來儲存iptables規則,並在系統啟動時自動載入。
運行以下命令安裝
iptables-persistent。sudo apt-get install iptables-persistent -y安裝過程中會詢問是否儲存當前的規則,選擇
yes即可。添加iptables規則。
sudo iptables -A INPUT -p gre -j ACCEPT sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT sudo iptables -t nat -A POSTROUTING -s 192.168.0.234/29 -o eth0 -j SNAT --to-source XXX.XXX.XXX.XXX說明其中
192.168.0.234/29指的是VPN用戶端的私人IP位址範圍,請根據實際情況修改;XXX.XXX.XXX.XXX為您的ECS執行個體公網IP。儲存iptables規則。
sudo netfilter-persistent save(可選)查看iptables規則。
# 查看詳細規則 sudo iptables -L -v # 查看 nat 表的規則 sudo iptables -t nat -L -v
重啟PPTP服務
sudo /etc/init.d/pptpd restart
sudo systemctl enable pptpd.serviceVPN用戶端配置
執行如下命令,安裝PPTP用戶端軟體。
sudo apt-get update sudo apt-get -y install pptp-linux執行如下命令,初始化一個名為test的VPN串連通道。
sudo pptpsetup --create test --server [$IP] --username [$User] --password [$Password] --encrypt --start串連成功之後會提示如下內容:
Using interface ppp0 Connect: ppp0 <--> /dev/pts/1 CHAP authentication succeeded MPPE 128-bit stateless compression enabled local IP address 192.168.0.234 remote IP address 192.168.0.1