Redhat

libreswan 為 ipsec 流量配置虛擬介面

  • April 15, 2021

描述:

我正在學習如何使用 libreswan 配置 ipsec。我想在兩台主機之間建立一個主機到主機的 vpn。我希望每個主機都為其 ipsec 隧道使用虛擬介面。

問題:

我用 RSA 設置了我的 ipsec 配置,並啟動了隧道,但是沒有建構虛擬介面。

系統:

(2) RHEL 8.2 虛擬機

我不清楚什麼

  • 如何啟動隧道?我知道我執行了ipsec auto --up mytunnel,但是該命令需要同時在兩個系統上執行還是先在右側然後在左側執行?
  • 我的“左”和“右” ip 是在可以相互路由的介面上配置的 ip 地址。它是否正確?
  • 我覺得我在這裡錯過了一步,比如配置介面並設置 libreswan 以使用它?

故障排除:

  • 我按照這些說明如何設置 ipsec 隧道。
  • 我用 netstat 確認,似乎所有介面都在監聽 500 和 4500。
  • 執行了一個ip a,我看到沒有創建虛擬介面。
  • 為了啟動我執行的隧道systemctl restart ipsec.service,然後ipsec auto --up mytunnel,最後ipsec auto --up mytunnel,我看到了這個輸出
181 "mytunnel" #1: initiating IKEv2 IKE SA
181 "mytunnel" #1: STATE_PARENT_I1: sent v2I1, expected v2R1
182 "mytunnel" #2: STATE_PARENT_I2: sent v2I2, expected v2R2 {auth=IKEv2 cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=DH19}
002 "mytunnel" #2: IKEv2 mode peer ID is ID_FQDN: '@west'
003 "mytunnel" #2: Authenticated using RSA with IKEv2_AUTH_HASH_SHA1
002 "mytunnel" #2: negotiated connection [10.10.10.111-10.10.10.112:0-65535 0] -> [10.10.10.111-10.10.10.112:0-65535 0]
004 "mytunnel" #2: STATE_V2_IPSEC_I: IPsec SA established transport mode {ESP=>0xe25ebdee <0x3d8ac123 xfrm=AES_GCM_16_256-NONE NATOA=none NATD=none DPD=passive}

我的 ipsec 配置:

conn mytunnel
   auto=add
   leftid=@west
   left=10.10.10.111
   leftrsasigkey=0sAwEAAbqd ... blqu1K0=
   rightid=@east
   right=10.10.10.112
   rightrsasigkey=0sAwEAAboA ... NEJbLk=
   authby=rsasig

編輯 修復了我的日誌輸出。

EDIT2 我了解到 ipsec 不會自行設置虛擬介面。這需要通過 IPIP、GRE 或其他方法完成。

  • 是有關設置 VPN 路由的不同方式的有用連結。
  • 是關於如何設置 IPIP 的一個很好的連結。

IPsec 不一定使用虛擬介面。

相反,您有一個 IPsec 策略數據庫(setkey -DP顯示目前內容),這些策略在數據包通過堆棧時應用於數據包。

當您不希望額外分配額外地址並確保它們與其他用途沒有衝突時,這很有用。

正如您配置的那樣,傳輸模式甚至在數據包中沒有空間用於附加地址。像您這樣的策略說“從 10.10.10.111 到 10.10.10.112 的任何數據包都需要加密然後正常路由”,但是如果您沒有使用這些地址的任何介面,則不會生成這樣的數據包。

我並不完全清楚為什麼日誌文件中的地址與配置中的地址不同。

根據日誌,您擁有的 IPsec 設置將加密 10.104.8.109 和 10.104.8.108 之間的數據包。如果您從另一台 ping 這些主機中的一個,ping 數據包應該被封裝,具有數據包結構 IP - ESP - ICMP,任何不擁有密鑰的人只能看到 ESP 而無法分辨其中傳輸了什麼內部協議。

對於隧道,存在兩種主要方法:將 IPsec 策略應用於未加密的隧道,以及連接兩個無論如何都將通過同一介面路由的網路。

未加密的隧道將使用 GRE 或 IPIP 創建數據包結構 IP - IP - ICMP,然後加密策略(在傳輸模式下)將環繞內部 IP 標頭以獲得 IP - ESP - IP - ICMP。隧道提供 IP 地址綁定到的虛擬介面。

網路連結方法使用隧道模式 IPsec,但仍然不會創建介面。在這裡,數據包從內部網路介面到達並被定址到不在內部介面上的目的地,因此它們被路由到預設路由。IPsec 策略將整個數據包包裝在一個傳輸數據包中,將其帶到另一端,在那裡它被解包並正常路由到那裡的內部介面。中間的路由器看不到內部地址,因此它們可以在私有範圍內。對於這種方法,也不需要虛擬網路設備,路由器也不需要遠端網路的路由條目。

引用自:https://serverfault.com/questions/1060372