為什麼ESP能夠穿越NAT,而AH則不能
嚴格地說,只能是隧道模式下的ESP才能穿越NAT。
首先需要了解的是IPSEC的作用,即資料的機密性、完整性、認證性。機密性就是保證資料包的原始內容不被看到;完整性即保證資料包的內容不會被修改;認證性保證資料來自被信任的客戶端。IPSEC中的封裝格式有2種(AH和ESP), AH在IP資料包中插入了一個包頭,其中包含對整個資料包內容的校驗值;ESP使用者加密整個資料包內容,同時也可以對資料包進行認證。
IPSec有2 種不同的模式:傳輸模式和隧道模式。
一種是傳輸模式,主要用於主機到主機之間的直接通訊。
另一種是隧道模式主要用於主機到閘道器或閘道器到閘道器之間。傳輸模式和隧道模式主要在資料包封裝時有所不同。
無論傳輸模式還是隧道模式,AH都會認證整個資料包。並且AH還會認證位於AH頭之前的IP 頭。當NAT 裝置修改了IP 頭之後,IPSec 就會認為這是對資料包完整性的破壞,從而丟棄資料包。因此AH是不可能和NAT 在一起工作的。
而ESP在傳輸模式時會保護TCP/UDP頭,但是並不保護IP 頭,因此修改IP 地址並不會破壞整個資料包的完整性。但是如果資料包是TCP/UDP資料包,NAT裝置就需要修改資料包的校驗值,而這個校驗值是被ESP 所保護的,這樣卻會導致完整性校驗失敗。 所以最終可能和NAT一起工作的只能是隧道模式下的ESP。