strongSwan 是一個開源、跨平台、功能完整且廣泛使用的基於 IPsec 的 VPN (虛擬私人網路) 實現,可在 Linux、FreeBSD、OS X、Windows、Android 和 iOS 上運行。它主要是一個密鑰守護程序,支持 Internet 金鑰交換協議 (IKEv1 和 IKEv2) 來建立兩個對等方之間的安全關聯 (SA)。
本文描述了如何在 Ubuntu 和 Debian 伺服器上使用 strongSwan 建立站點到站點的 IPSec VPN 閘道。這裡的站點到站點是指每個安全閘道後面都有一個子網。此外,對等方將使用預共享金鑰 (PSK) 進行身份驗證。
測試環境
請務必將下面的 IP 替換為您實際的 IP,以配置您的環境。
站點 1 閘道 (tecmint-devgateway)
OS 1: Debian or Ubuntu Public IP: 10.20.20.1 Private IP: 192.168.0.101/24 Private Subnet: 192.168.0.0/24
站點 2 閘道 (tecmint-prodgateway)
OS 2: Debian or Ubuntu Public IP: 10.20.20.3 Private IP: 10.0.2.15/24 Private Subnet: 10.0.2.0/24
步驟 1:啟用核心封包轉發
1. 首先,您需要在兩個安全閘道的 /etc/sysctl.conf 配置文件中添加相應的系統變量,以啟用封包轉發的功能。
$ sudo vim /etc/sysctl.conf
尋找以下行並取消註釋它們,並設置它們的值如下所示 (請參閱文件中的註釋以獲取更多信息)。
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
2. 接下來,通過運行以下命令來加載新設置。
$ sudo sysctl -p

3. 如果您啟用了 UFW 防火牆 服務,您需要在安全閘道的過濾規則之前,將以下規則添加到 /etc/ufw/before.rules 配置文件中。
閘道站 1 (tecmint-devgateway)
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.2.0/24 -d 192.168.0.0/24 -j MASQUERADE COMMIT
閘道站 2 (tecmint-prodgateway)
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE COMMIT
4. 添加防火牆規則後,如下所示重啟 UFW 以應用新變更。
$ sudo ufw disable $ sudo ufw enable
步驟 2:在 Debian 和 Ubuntu 中安裝 strongSwan
5. 在兩個安全閘道上更新您的套件快取,並使用 APT 包管理器 安裝 strongswan 套件。
$ sudo apt update $ sudo apt install strongswan
6. 安裝完成後,安裝程序腳本將啟動 strongswan 服務,並使其在系統啟動時自動啟動。您可以使用以下命令檢查其狀態以及是否已啟用。
$ sudo systemctl status strongswan.service $ sudo systemctl is-enabled strongswan.service
步驟 3:配置安全閘道
7. 接下來,您需要使用 /etc/ipsec.conf 配置文件來配置安全閘道。
閘道站 1 (tecmint-devgateway)
$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig $ sudo nano /etc/ipsec.conf
複製並粘貼以下配置到文件中。
config setup charondebug="all" uniqueids=yes conn devgateway-to-prodgateway type=tunnel auto=start keyexchange=ikev2 authby=secret left=10.20.20.1 leftsubnet=192.168.0.101/24 right=10.20.20.3 rightsubnet=10.0.2.15/24 ike=aes256-sha1-modp1024! esp=aes256-sha1! aggressive=no keyingtries=%forever ikelifetime=28800s lifetime=3600s dpddelay=30s dpdtimeout=120s dpdaction=restart
Site 2 網關 (tecmint-prodgateway)
$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig $ sudo nano /etc/ipsec.conf
複製並粘貼以下配置到文件中。
config setup charondebug="all" uniqueids=yes conn prodgateway-to-devgateway type=tunnel auto=start keyexchange=ikev2 authby=secret left=10.20.20.3 leftsubnet=10.0.2.15/24 right=10.20.20.1 rightsubnet=192.168.0.101/24 ike=aes256-sha1-modp1024! esp=aes256-sha1! aggressive=no keyingtries=%forever ikelifetime=28800s lifetime=3600s dpddelay=30s dpdtimeout=120s dpdaction=restart
以下是每個配置參數的含義:
- config setup – 指定適用於所有連接的 IPSec 的一般配置信息。
- charondebug – 定義應該記錄多少 Charon 調試輸出。
- uniqueids – 指定是否應保持特定參與者 ID 唯一。
- conn prodgateway-to-devgateway – 定義連接名稱。
- type – 定義連接類型。
- auto – 在啟動或重新啟動 IPSec 時如何處理連接。
- keyexchange – 定義要使用的 IKE 協議版本。
- authby – 定義對等方應如何互相驗證。
- left – 定義左側參與者公共網絡接口的 IP 地址。
- leftsubnet – 指定左側參與者後面的私有子網絡。
- right – 指定右側參與者公共網絡接口的 IP 地址。
- rightsubnet – 指定左側參與者後面的私有子網絡。
- ike – 定義要使用的IKE/ISAKMP SA加密/身份驗證演算法列表。您可以添加逗號分隔的列表。
- esp – 定義要用於連接的ESP加密/身份驗證演算法列表。您可以添加逗號分隔的列表。
- aggressive – 指定是使用Aggressive模式還是Main模式。
- keyingtries – 指定應該嘗試多少次來協商連接。
- ikelifetime – 指定連接的金鑰通道應該持續多長時間,然後進行重新協商。
- lifetime – 定義從成功協商到到期的某個特定連接實例應該持續多長時間。
- dpddelay – 指定向對等方發送R_U_THERE消息/INFORMATIONAL交換的時間間隔。
- dpdtimeout – 指定在閒置情況下,經過多長時間後刪除與對等方的所有連接的超時間隔。
- dpdaction – 定義如何使用Dead Peer Detection(DPD)協議來管理連接。
有關上述配置參數的更多信息,請閱讀運行該命令以查看ipsec.conf頁面。
$ man ipsec.conf
步驟4:配置點對點身份驗證的PSK
8. 在配置兩個安全閘道之後,使用以下命令生成一個安全的PSK,供對等方使用。
$ head -c 24 /dev/urandom | base64

9. 接下來,在兩個閘道器的 /etc/ipsec.secrets 檔案中添加 PSK。
$ sudo vim /etc/ipsec.secrets
複製並貼上以下行:
------- Site 1 Gateway (tecmint-devgateway) ------- 10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac=" ------- Site 2 Gateway (tecmint-prodgateway) ------- 10.20.20.3 10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="
10. 重新啟動 IPSec 程式並檢查其狀態以查看連線。
$ sudo ipsec restart $ sudo ipsec status

11. 最後,通過執行 ping 命令 驗證您可以從任何一個安全閘道器訪問私有子網。
$ ping 192.168.0.101 $ ping 10.0.2.15

12. 此外,您可以按照以下方式停止和啟動 IPSec。
$ sudo ipsec stop $ sudo ipsec start
13. 若要了解有關手動建立連線等方面的更多 IPSec 命令,請參閱 IPSec 幫助頁面。
$ ipsec --help
就是這樣!在本文中,我們介紹了如何在 Ubuntu 和 Debian 伺服器上使用 strongSwan 建立站點到站點的 IPSec VPN,其中兩個安全閘道器都配置為使用 PSK 互相驗證。如果您有任何問題或想法要分享,請通過下面的反饋表格與我們聯繫。
Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/