如何在 Debian 和 Ubuntu 上使用 Strongswan 設置基於 IPsec 的 VPN

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
Load Sysctl Kernel Settings

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
Generate PSK Key

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
View IPSec Connection Status

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

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. 此外,您可以按照以下方式停止和啟動 IPSec。

$ sudo ipsec stop
$ sudo ipsec start

13. 若要了解有關手動建立連線等方面的更多 IPSec 命令,請參閱 IPSec 幫助頁面。

$ ipsec --help

就是這樣!在本文中,我們介紹了如何在 UbuntuDebian 伺服器上使用 strongSwan 建立站點到站點的 IPSec VPN,其中兩個安全閘道器都配置為使用 PSK 互相驗證。如果您有任何問題或想法要分享,請通過下面的反饋表格與我們聯繫。

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/