
我有一些與 IPsec 的 Linux 核心實作及其用戶空間介面相關的問題。
- 最大的問題是哪一個是 Linux 核心 IPsec 實作的實際官方專案?據我了解,該實作是 Kame 專案的一個分支,但一位朋友說這不是真的。他們的官方網站和倉庫是什麼?
- 在核心文件來源中的哪裡可以找到相關註解?
- 最常使用哪個使用者空間前端? ip-tools 還是 iproute2 軟體包?這兩者是否有相同的方法,或者其中一個的開銷更大?
- 據我所知,iproute2 IPsec 傳輸模式的教學與用於載入設定檔的「setkey」公用程式相關。 「setkey」實際上用於 iproute2 包,還是我被誤導了? 「setkey」是從 ip-tools 黏在「racoon」上的,還是一個用來設定載入的通用應用程式? 「setkey」實際上是做什麼的(我對此感到困惑)?
答案1
- 從 2.6 開始整合在 Linux 核心中的 IPsec 堆疊(NETKEY)最初是基於 KAME 堆疊(至少在 API 方面)。原始碼是核心儲存庫,主要元件可以在該
net/xfrm
資料夾中找到,包括Netlink/XFRM配置介面的實作。替代方案和標準化(但有些擴充)PF_KEYv2 介面實作位於該net/key
資料夾中。 - 沒有太多文檔。但檢查
Documentation/networking
資料夾。 - 如果您手動設定 IPsec SA 和策略(手動金鑰),我建議ip路由2。它使用更強大的 Netlink/XFRM 接口,並且大多數發行版預設安裝該軟體包。但通常您會使用使用者空間提供的自動鍵控IKE守護進程,例如 StrongSwan、Open/libreswan 或 racoon (ipsec-tools),這樣您就不必手動安裝 SA 和策略,並且可以在 IKE 期間獲得透過 Diffie-Hellman 建立的臨時加密/完整性金鑰。也可以定期自動協商新金鑰(稱為重新產生金鑰)。
setkey
是由提供的ipsec工具手動鍵控包,與ip路由2包裹。和ip路由2您可以使用該ip xfrm
命令手動設定 SA 和策略。這兩個命令都直接與 SAD 和 SPD 互動(請參見RFC 4301)在核心中手動管理 IPsec SA 和策略。與其他基於 BSD 的工具setkey
一樣racoon
,使用 PF_KEYv2 接口,因此它的功能不如命令強大ip xfrm
。例如,在 Linux 上無法使用 PF_KEYv2 設定擴充序號或標記。