1. 程式人生 > >剖析NAT-T【新任幫主】

剖析NAT-T【新任幫主】

mod 開始 描述 size 不為 什麽 mar quic esp

技術分享圖片
nat-t技術主要是針對pat來說的 ,當IPsec 建立在防火墻的兩邊時 ,並且穿越pat設備的時候將會出現問題;

現在來描述整個IPsec建立的過程來引出問題的所在。大家都知道ipsec ***隧道建立的過程中要經歷六個包的main mode 和 3個包的 quick mode ,當我們啟用nat-t的時候

①  首先在main mode的1,2兩個包中會協商有沒有nat-t的能力;此階段,我把它叫做nat-t能力協商(針對nat-t來說)
技術分享圖片
此處可以看出,運營商代碼(vendor id)13 代表了此處支持nat-t的技術;

① 那麽,我們怎麽知道防火墻有沒有做pat能,R1,R2是怎樣感知的呢,此時在main mode的3,4個包中會在vendor id 13 中攜帶兩個hash值,這個hash的原料是分別是源端的地址和端口號,目的端的ip地址和端口號 ;此階段,我把它叫做試探nat

技術分享圖片
如果對端發過來的源hash和目的hash相同說明沒有做nat,否則說明做了nat

① 此處我是做了nat的 ,所以hash值是不一樣的,當ipsec站點發現存在nat,就會改變數據包報頭,插入udp的報頭封裝IPsec(ESP),此包格式更改是從main mode的5,6個包開始,一直到數據的加密全過程;此處有一個疑問,為什麽檢查到有nat就要改變報頭格式呢?
技術分享圖片
解釋:當IPsec 隧道感知nat的存在時,在穿越pat設備的時候將不改變源端口號,因為有的時候ike在實施的過程中將不會處理源端口號不為500的數據包,那麽pat的設備本身就是靠源端口號來進行地址復用的,現在不改變源端口號,固然會出現問題 。所以此時我們要盡可能改變源端口號,讓pat設備轉換,如上圖udp源和目的端口號均為4500(ipsec-nat-t),此後所有的數據包都在udp 4500中傳輸;

技術分享圖片

剖析NAT-T【新任幫主】