使用strongSwan在Ubuntu和Debian伺服器上設定站點到站點的IPSec VPN

更新時間

strongSwan是一個開源、跨平台、功能齊全且廣泛使用的基於IPsec的VPN(虛擬私人網路)實現,能夠在Linux、FreeBSD、OS X、Windows、Android和iOS上運行。它主要是一個金鑰守護程序,支援網際網路金鑰交換協定(IKEv1和IKEv2),以在兩個對等方之間建立安全關聯(SA)。

本文將介紹如何在Ubuntu和Debian伺服器上使用strongSwan設定網站到網站的IPSec VPN閘道。這裡的站點到站點意味著每個安全網關後面都有一個子網路。此外,對等方將使用預先共用金鑰(PSK)相互認證。

測試環境

請記得用您實際的IP位址取代以下IP,以設定您的環境。

站點1網關(tecmint-devgateway)
作業系統:Debian或Ubuntu
公共IP:10.20.20.1
私有IP:192.168.0.101/24
私有子網路:192.168.0.0/24

站點2網關(tecmint-prodgateway)
作業系統:Debian或Ubuntu
公共IP:10.20.20.3
私有IP:10.0.2.15/24
私有子網路:10.0.2.0/24

第一步:啟用內核資料包轉發

  1. 首先,您需要透過在兩個安全網關的/etc/sysctl.conf設定檔中新增適當的系統變數來啟用封包轉送。 bash sudo vim /etc/sysctl.conf 找到以下行,取消註釋並設定其值,如下所示(有關更多信息,請閱讀文件中的註釋)。 plaintext 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. 接下來,透過執行以下命令載入新設定。 bash sudo sysctl -p

  3. 如果您啟用了UFW防火牆服務,您需要在任一安全閘道的/etc/ufw/before.rules設定檔中,在過濾規則之前新增下列規則。

站點1網關(tecmint-devgateway) plaintext *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) plaintext *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE COMMIT

  1. 新增防火牆規則後,透過以下命令重新啟動UFW以套用新變更。 bash sudo ufw disable sudo ufw enable

第二步:在Debian和Ubuntu安裝strongSwan

  1. 在兩個安全網關上更新您的軟體包緩存,並使用APT套件管理器安裝strongswan套件。 bash sudo apt update sudo apt install strongswan

  2. 安裝完成後,安裝程式腳本將啟動strongswan服務,並使其在系統啟動時自動啟動。您可以使用以下命令檢查其狀態及是否已啟用。 bash sudo systemctl status strongswan.service sudo systemctl is-enabled strongswan.service

第三步:設定安全網關

  1. 接下來,您需要使用/etc/ipsec.conf設定檔來設定安全閘道。

站點1網關(tecmint-devgateway) bash sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig sudo nano /etc/ipsec.conf 將以下配置複製並貼上到文件中。 plaintext 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

站點2網關(tecmint-prodgateway) bash sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig sudo nano /etc/ipsec.conf 將以下配置複製並貼上到文件中。 plaintext 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

  1. 這裡是每個配置參數的意思:
  2. config setup – 指定適用於所有連線的IPSec通用配置。
  3. charondebug – 定義應記錄多少偵錯輸出。
  4. uniqueids – 指定特定參與者ID是否應保持唯一。
  5. conn prodgateway-to-devgateway – 定義連線名稱。
  6. type – 定義連線類型。
  7. auto – 在IPSec啟動或重新啟動時如何處理連線。
  8. keyexchange – 定義要使用的IKE協定版本。
  9. authby – 定義對等方如何相互認證。
  10. left – 定義左側參與者的公共網路介面IP位址。
  11. leftsubnet – 說明左側參與者後方的私有子網路。
  12. right – 指定右側參與者的公用網路介面IP位址。
  13. rightsubnet – 說明右側參與者後面的私有子網路。
  14. ike – 定義要使用的IKE/ISAKMP SA加密/認證演算法清單。
  15. esp – 定義要用於連線的ESP加密/認證演算法清單。
  16. aggressive – 指定是否使用攻擊模式或主模式。
  17. keyingtries – 指定應嘗試協商連線的次數。
  18. ikelifetime – 指定連線的金鑰通道在重新協商之前應持續多久。
  19. lifetime – 定義連線的特定實例應持續多長時間,從成功協商到過期。
  20. dpddelay – 指定發送R_U_THERE訊息/訊息交換的時間間隔。
  21. dpdtimeout – 指定逾時間隔,在此期間如果沒有活動,則刪除與對等方的所有連線。
  22. dpdaction – 定義如何使用死對等偵測(DPD)協定來管理連線。

第四步:配置PSK以進行對等認證

  1. 配置兩個安全閘道後,使用下列指令產生用於對等方的安全PSK。 bash head -c 24 /dev/urandom | base64

  2. 接下來,在兩個網關的/etc/ipsec.secrets檔案中加入PSK。 bash sudo vim /etc/ipsec.secrets 複製並貼上以下行。 ```plaintext ------- 站點1網關(tecmint-devgateway) -------

    10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

    ------- 站點2網關(tecmint-prodgateway) -------

    10.20.20.3 10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac=" ```

  3. 重新啟動IPSec程式並檢查其狀態以查看連線。 bash sudo ipsec restart sudo ipsec status

  4. 最後,透過執行ping指令驗證您是否可以從任一安全閘道存取私有子網路。 bash ping 192.168.0.101 ping 10.0.2.15

  5. 此外,您可以透過以下方式停止和啟動IPSec。 bash sudo ipsec stop sudo ipsec start

  6. 要了解更多有關IPSec命令的信息,請手動啟動連接等,請查看IPSec幫助頁面。 bash ipsec --help

總結

本文介紹如何在Ubuntu和Debian伺服器上使用strongSwan設定站點到站點的IPSec VPN,兩個安全網關配置為使用PSK相互認證。如果您有任何問題或想法,請透過下面的回饋表與我們聯絡。


希望這篇文章對您有幫助!如果您有其他問題,歡迎隨時提問。

更新時間