天天看點

技術點詳解---IPSec穿越NAT

引用自http://www.h3c.com.cn/Service/Channel_Service/Operational_Service/ICG_Technology/201006/677319_30005_0.htm

技術點詳解---IPSec穿越NAT

IPSec在NAT環境中的部署是VPN的熱門難點技術之一,本專欄針對該問題進行原理性探讨,為後續VPN部署方案做下鋪墊。

IPSec VPN穿越NAT會遇到哪些問題

技術點詳解---IPSec穿越NAT

IPSec VPN穿越NAT遇到的問題主要有2個:

1.   穿越NAT後的身份确認:在IP網絡中IP位址是最好的身份辨別,IPSec VPN中标準身份辨別也是IP位址,如上圖所示,從前幾期專欄的介紹中我們可以得知,NAT處理過程中會改變IP位址,是以IPSec的身份确認機制必須能夠适應IP位址變化;目前解決此問題的方法主要有兩種,第一種是使用數字證書替代IP位址作為身份辨別,第二種是使用字元串取代IP位址作為身份辨別;我國内市場範圍内,第二種方法更為常見,部署也更為簡單,是以本期主要對第二種方法着重進行介紹。

2.   IP位址複用: 從上期專欄中,IPSec由AH和ESP兩個協定組成,其中AH無法穿越NAT,ESP從理論上可以穿越NAT,但是ESP的IP協定号是50,并不是基于UDP和TCP的協定,是以當NAT網關背後存在多個ESP應用端時,無法隻根據協定号進行反向映射,為了使ESP能夠在NAT環境中進行位址複用,ESP必須做出改變。

IKE身份确認及野蠻(激進)模式協商

IPSec的身份确認最常見是通過IKE協定代勞,IKE支援的身份認證機制有兩種:

1.   數字證書方式,通過CA數字證書體系确認身份,是最為安全、可靠的方式。

2.   身份辨別+預共享密鑰方式,通過發起方和響應方預先配置相同的密鑰,如bigtree,完成雙方對彼此身份的認證,這是最為常見的方式;在預共享秘密鑰認證機制中,身份辨別則可以分為幾類:

a)   指定IP位址,使用IP位址作為身份辨別,是IKE的預設方式,響應方隻允許指定IP位址發起協商,安全性比較高;

b)   指定IP位址範圍,這種方式依然使用IP位址作為身份辨別,由于發起方必須要指定IP位址,否則無法發起協商,指定IP位址範圍是響應方特性,如響應方可以指定2.0.0.0/8範圍内的位址都可以發起協商,而不是隻允許2.1.1.2發起協商,能夠減少配置,但安全性略有下降;

c)   什麼都不指定,也是使用IP位址作為身份辨別,但允許任意IP位址發起協商,隻要預共享密鑰一緻,雙方就能夠通過身份确認,通常适用于發起方動态擷取公網位址,如PPPoE接入網際網路方式,還适用于發起方衆多,而響應方不想單獨為每個發起方單獨指定預共享密鑰,這種方式雖然不是非常安全,但是可以簡化配置,安全性再次下降;

d)   指定對端名字,發起方和響應方都預先配置好本端名字,使用該名字作為身份辨別,與指定IP位址類似,通過指定對端名字方式,即使雙方預共享密鑰一緻,隻要對端名字不合法,立即中斷協商,由于名字未與IP位址進行綁定,而且名字在網絡中明文傳遞,估安全性不如指定IP位址方式高,但這種身份辨別方式可以穿越NAT。

技術點詳解---IPSec穿越NAT

在上圖中,發起方Spartucus和響應方Crixus都是用CA頒布的數字證書作為身份辨別,通過數字證書體系檢驗對方身份的真僞,由于數字證書中的身份資訊并不包含IP位址資訊,是以使用數字證書是可以輕松穿越NAT的。

技術點詳解---IPSec穿越NAT

在預共享密鑰身份确認體系中,使用名字作為身份辨別,也能穿越NAT,由于該方式不需要搭建CA伺服器,在穿越NAT的應用場景中,該方式使用較廣。

技術點詳解---IPSec穿越NAT

如果要使用名字作為身份辨別,那麼IKE協商就必須要使用一種特殊的協商方式——野蠻模式(Aggressive Mode)或者叫激進模式:

1.   發起方協商的第一條資訊就包含身份資訊,并且是明文顯示,是以有身份洩露的隐患;

2.   響應方根據發起方的身份資訊進行确認,并使用預共享密鑰資訊計算hash;

3.   發起方根據響應方的身份資訊也進行hash計算,與響應方提供的hash進行比較,如果一緻則身份确認通過,進行IKE SA密鑰種子确認,如果不一緻則雙方協商結束;

4.   IKE SA協商完畢之後,利用該SA協商IPSec SA,從第三條封包開始都是加密的,但雙方身份資訊都使用明文傳送。

在上一期專欄中,我們介紹了正常的IKE協商方式,稱為主模式(Main Mode),它正常情況下需要6條封包協商出IKE SA,預共享認證方式隻能使用IP位址作為身份辨別;而野蠻模式隻需要3條封包就能實作,預共享認證中既可以使用IP位址也可以使用名字方式作為身份辨別。主模式穿越NAT隻能使用數字證書認證方式。

IKE協商IPSec SA的過程稱為快速模式(Quick Mode),和野蠻模式一樣隻需要3條封包即可協商完成,在我們的專欄中,為了介紹簡便,通常隻畫出2條封包互動的示意。

IPSec UDP封裝穿越NAT

從前面幾期專欄的反複介紹可以得知,基于UDP、TCP的應用可以在NAT出口進行複用,不會有麻煩,那麼在IPSec中是否如此呢?IPSec是一個架構協定,直接建構在IP層之上,具體協定由AH和ESP組成,ESP協定号50,AH協定号51,它們都沒有類似于UDP/TCP端口号的概念,是以也就沒有NAT複用辨別,ESP要穿越NAT還需要想其它辦法,而AH則因為保護源IP位址的關系,在NAT穿越中屬于天生無法支援。

技術點詳解---IPSec穿越NAT

ESP穿越NAT其實很簡單,通過借用UDP的方式,巧妙地實作了NAT位址複用,它使用的是UDP端口500(IKE協商協定ISAKMP所使用端口),ESP在什麼時候會進行UDP封裝呢?它是通過IKE協商時檢測出來的:

1.   發起方Spartacus在協商封包中攜帶自己的WAN口IP位址資訊192.168.1.2;

2.   Spartacus的協商封包經過NAT處理後其源IP位址變成了2.1.1.2;

3.   響應方Crixus接收到協商封包後發現源位址2.1.1.2和協商封包中的IP位址資訊192.168.1.2不一緻,即判斷中間經過了NAT裝置,并告知Spartacus,雙方要使用UDP封裝;如果Crixus沒有檢測到NAT轉換,那麼繼續使用原生的非UDP封裝模式。

本期專欄主要介紹了IPSec在NAT環境中的變化,為下一期IPSec VPN部署方案介紹做預熱,敬請期待第15期專欄。

繼續閱讀