為什麼 IPSec 傳輸模式僅限於主機到主機通信,或網關僅充當主機的主機到網關?
僅允許在兩個終端主機之間使用傳輸模式;當至少一個端點是“安全網關”(實現 IPsec 功能的中間系統,例如路由器)時,需要隧道模式。但如果所有地址都是公共的並且可擴展性不是問題,為什麼傳輸模式 IPsec SA不能在兩個安全網關之間使用?
從 RFC 4301 更新。仔細閱讀 RFC 4301 後,我發現了正確的說明:
“在安全網關之間或安全網關與主機之間使用傳輸模式的情況下,傳輸模式可用於支持 IP 內隧道(例如,IP-in-IP$$ Per96 $$或通用路由封裝 (GRE) 隧道$$ FaLiHaMeTr00 $$或動態路由 $$ ToEgWa04 $$) 通過傳輸模式 SA。為了澄清,中間系統(例如,安全網關)使用傳輸模式僅在應用於源地址(對於出站數據包)或目標地址(對於入站數據包)是屬於中間系統的地址的數據包時才被允許本身。作為 IPsec 重要組成部分的訪問控制功能在這種情況下受到很大限制,因為它們不能應用於通過以這種方式使用的傳輸模式 SA 的數據包的端到端標頭。因此,這種使用運輸方式的方式在用於特定環境之前應仔細評估。"
這是因為 IPsec 傳輸模式重用了相同的 IP 標頭作為“外部標頭”(即出現在加密 IPsec 數據包前面的 IP 標頭)和“內部標頭”(即 IP 標頭)。明文包)。
假設 Alice 想向 Bob(可能是安全網關)發送一個加密數據包;該數據包必須有一個以 Bob 的 IP 地址作為目標的 IP 標頭(因為如果沒有,網路將不會將數據包轉發給 Bob)。然後,Bob 解密數據包;如果他(和 Alice)使用傳輸模式,他會保留 IP 標頭。因此,解密後的數據包仍將以 Bob 的地址作為目的地。那麼,如果 Bob 是一個安全網關,他會將解密的數據包轉發給誰?好吧,數據包說 Bob 是目的地,所以 Bob 是目的地(即使 Bob 決定忽略該規則,他也不知道真正的目的地應該是誰)。
現在,實際上,這並不完全正確。有一個解決方法。我見過 Alice 和 Bob 在兩者之間使用隧道協議的案例。在這種情況下,您確實可以使用 IPsec 傳輸模式。Bob 要做的是,一旦他解密了數據包,就會刪除隧道報頭,這可能會暴露真正的明文 IP 報頭。然後,Bob 知道將解密(和去隧道)的數據包轉發給誰。這行得通;恕我直言,這實際上只是隧道模式的一個微小變化,但顯然它在某些情況下確實具有某種優勢……