樊子牛,向 宏,陳建國,李曉彤
(1. 四川外語學院,重慶 400031;2. 重慶大學,重慶 400030)
IPSec與NAT兼容性的研究與改進
樊子牛1,向 宏2,陳建國1,李曉彤1
(1. 四川外語學院,重慶 400031;2. 重慶大學,重慶 400030)
IPSec是構建VPN(Virtual Private Network 虛擬專用網)的常用技術,但在實際的應用中,IPSec技術與用于解決IPv4地址匱乏的NAT技術存在嚴重的不兼容性[1,2]。這一不兼容性已經嚴重地限制了NAT和IPSec的應用范圍,特別是對校外用戶訪問校內網絡資源造成很大的不便。而目前的情況是,大量的寬帶用戶的終端是使用NAT方式接入互聯網的。
IPSec與NAT不兼容的問題是多方面的, 主要有以下幾點:
1)IPSec AH和NAT[6]
AH利用消息摘要算法對整個IP數據包產生一個加密后的散列值,接收方利用該散列值認證收到的IP數據包。但NAT將會改變數據包地址字段的值,導致消息完整性認證失效。
2)校驗和和NAT[6]
IP數據包中封裝的上一層協議(TCP或者UDP)的協議頭中都有一個校驗和字段,在NAT的處理中會重新計算并修改這個校驗和字段,這樣的IP包就會被對方的IPSec丟棄。對于隧道模式,不存在這個問題。
3)IKE中IP地址作身份標識符和NAT[6]
在IKE中,主模式(階段1)、快速模式(階段2)用IP地址作為通信雙方的身份標識符,雙方用身份載荷(ID Payload)交換IP地址的HASH值驗證對方的身份。NAT對IP源、目的地址的修改將造成身份載荷與IP地址不相符。
4)固定的IKE端口和NAPT端口[6]
NAPT的工作原理是通過不同的端口號來區分不同的連接。在IKE協商時,進行的UDP通信的端口號是一般是固定的(一般是500),這會出現問題。
5)重疊的SPD項和NAT[6]
RFC2401規定了安全策略選擇符允許值,其中包括目的IP地址、源IP地址、名字(用戶ID和系統名)、數據敏感級別、傳輸層協議、源和目的端口等,如果其中某些值無法確定,可以用特殊值(Wildcard)代替。根據這個規定,假設服務器1.2.3.4為用戶提供FTP服務,用戶子網1和用戶子網2內的IP地址均為192.168.50.25的主機都想使用這個FTP服務,而公司對這兩臺主機訪問FTP服務的安全策略是不同的。這種情況下,在服務器上對兩臺主機的安全策略配置(不考慮數據敏感級別)如圖1所示。

當服務器向外發送數據包時,需要查找安全策略庫確定對這個數據包安全保護的安全關聯,因為兩個策略的查找鍵值是相同的,服務器就不能正確的用安全策略選擇符定位這個數據包應該使用的安全關聯。
6)NAT無法多路傳輸IPSec數據流[6]
在隧道模式中,ESP保護的IPSec流量沒有包含可見的TCP或UDP報頭,TCP或UDP端口號無法將流量多路傳輸到不同的內部網絡的主機。對于NAT端的多個IPSec會話,其IPSec ESP數據流的傳入流量的目標IP地址是相同的。為了將一個IPSec ESP數據流與另一個區分開,目標IP地址和SPI必須得到跟蹤并映射到某個內部網絡的IP地址和SPI。
7)動態NAT問題[6]
如前所述,動態NAT的地址綁定可能隨時間變化。如果在一個安全關聯的生存期內,IP地址發生變化,IPSec將不能正常的通信。
8)應用層協議中的IP和NAT[6]
NAT必須對應用透明,保證NAT在網絡中的快速部署、應用。但是,在用IPSec ESP通信中,應用層數據是被加密傳輸的,因此,某些應用(如FTP)在IPSec和NAT存在的環境中不能正常的應用。
RSIP[3~5](Realm Specific IP)是指在不同地址域通信的主機自己能處理跨越不同地址域的地址變換問題。私有網絡中主機在和公共網絡中主機通信前,獲取跨越不同地址域需要的地址映射信息,然后按照地址映射來封裝數據包,使數據報能穿越不同的地址域。
RSIP的特點:從對IPSec的支持性角度來說,RSIP較UDP封裝更為優越,因為RSIP的實施無須對現有IPSec實現進行修改。
RSIP的不足:協議復雜,同時涉及對客戶機的修改、服務器的部署、服務器的修改等問題,因此實施費用相對較大,是一項長期的工作。NAT網關已廣泛應用于各個領域,將現有的NAT網關升級為RSIP網關必然是耗費巨大的。
用UDP協議封裝IPSec。協議數據單元方法實質是在通信實體之間建立一個UDP隧道,用UDP隧道來穿越NAT設備。基本的原理是:在IPSec協議頭前面加上一個UDP協議頭,在通信中間系統上看到傳輸的是UDP數據包,IPSec數據包作為UDP協議的用戶數據。
UDP封裝的特點:NAT不需要作任何的修改,就可以和IPSec協同工作,對目前的NAT應用和聯網結構沒有任何影響。對系統其它的部件干擾較小,因為,UDP本身就是TCP/IP協議的一部分,大多數程序能正確處理UDP數據包。
UDP封裝的不足:UDP協議本身存在安全缺陷;要增加8個字節UDP協議頭的通信開銷;對某些高層協議不能有效支持;協商IPSec SA過程的時間明顯增加;對多用戶接入時無法支持細粒度的安全服務。
在IETF的UDP封裝方案的基礎上,文獻[9]、文獻[10]和文獻[11]分別提出了不同的改進方案。主要目的是要解決文獻[7]中提到的兩個關于多用戶接入時的問題(問題描述見1.4節)。
改進方案實際上也就是建立另一層隧道來傳輸IPSec包,用中間層封裝的IP包作為區分會話的參數。文獻[9]在隧道的選取上采用了L2TP+PPP,文獻[10]在隧道的選取上采用了L2TP,文獻[11]在隧道的選取上采用了PPPoE。
UDP封裝改進方案的特點:解決了IETF的UDP封裝方案在處理多用戶接入時的問題。
UDP封裝改進方案的不足:需要隧道網關的支持與部署;比原UDP封裝方案多增加了一層隧道,處理效率相對來說也就下降了;沒有形成統一標準,需要用戶自主設計開發,要求較高;依然存在原UDP封裝方案的安全問題。
在文獻[7]中提到的兩個無法解決的問題,這也是大多數校外師生用VPN接入校園網時所最到的問題。

圖2 重疊SPD問題
在UDP封裝隧道模式下(圖2),兩臺不同NAT設備下的內部主機與IPSec網關通信,如果兩臺主機使用相同的內部地址(如:10.1.2.3),則IPSec網關上會建立兩個SA與10.1.2.3關聯,這樣導致IPsec網關無法正確轉發外部流入SGW的數據包。
當同一NAT設備下多臺內部主機與IPsec網關采用UDP封裝傳輸模式通信時(圖3),如果多臺內部主機申請的安全服務不同,則會產生沖突和SPD重疊。采用UDP封裝隧道模式可避免此問題的出現,但不能提供更加靈活的安全策略。傳統的UDP封裝方案中沒有解決多用戶接入時支持細粒度的安全服務,而UDP封裝改進方案雖然解決多用戶接入的問題,但也帶來新問題,如需要更多硬件與部署,性能降低等。

圖3 同一NAT后多用戶接入問題
本文提出的基于X.509證書的UDP封裝方案主要思路是嘗試解決多用戶接入時的細粒度問題,并不會產生另外的硬件成本與部署要求。

圖4 服務器的安全策略庫
工作原理:考慮將IPSec協議和PKI體系進行結合,IPSec可以保障雙方的通信安全,X.509[8]證書來確認隧道連接雙方的身份。這樣做不但能提高VPN網關的數據通信安全,而且可以解決之前IETF的RFC3984中提到的兩個問題。如圖4所示,將原來選擇符中的源地址(圖1)更改為X.509中的DN,即可滿足以上要求。RFC2401規定了安全策略選擇符的允許值范圍,其中可以包含名字,名字可設置為X.509的Distinguished Name,如:C = US, SP = MA,O = GTE Internetworking, CN= Stephen T. Kent。DN名可以唯一地區別計算機或用戶,所以上圖中策略1、2的選擇符可根據DN的不同來加以區分。這樣就避免了由于源地址相同而產生的混淆問題。
封裝方案的特點:解決了IETF的UDP封裝方案在處理多用戶接入時的問題,并不產生額外的硬件部署要求;性能上與IETF提出的UDP封裝方案一致,比國內的UDP封裝的改進方案在性能、資金投入和部署方面更為優越。
封裝方案的不足:目前沒有實現此方法的軟件系統,所以需要修改現有系統的源代碼。
將本方案與已有的IPSec和NAT兼容性方案進行比較,結果如表1所示:

表1 IPSec和NAT兼容性方案比較
如上表所示,RSIP的實施無須對現有的IPSec實現進行修改,從對IPSec的支持角度來說,所以RSIP比UDP封裝法更為優越。然而,從易操作性、費用成本和向后兼容性來看,UDP封裝方案似乎是最佳選擇。在UDP方案中,傳統的UDP方案沒有解決重疊SPD問題,即提供多用戶接入時的細粒度安全服務,UDP改進方案雖然解決了這個問題,但需要額外的硬件投入,同時系統性能也在下降。
基于X.509證書的UDP封裝方案具有以下特點:
1)綜合傳統UDP封裝方案和UDP改進方案的優點,避免兩者在多用戶接入問題的不足。
2)可部署性好。基于X.509證書的UDP封裝穿越NAT方案比由IPv4升級到IPv6要更加簡單,更容易在短時期內實現。由于不需要對現有NAT設備進行重新部署,所需費用較低。
3)使用X.509技術來實現VPN中的身份安全認證,安全性較已有兼容性方案有所提高。
4)遠程訪問的支持度好。可以支持移動用戶以IPSec隧道模式安全地連接目標網絡并實現NAT穿越。
5)具有良好的擴展性,可以部署在大規模遠程訪問的環境中。
6)互操作性好。基于X.509證書的UDP封裝穿越NAT方案可以和現有的IPSec實現互操作,并可以達到向后兼容性的要求。
7)防火墻的兼容性好。網絡管理員只需要在防火墻原有配置的基礎上打開500和4500端口就可以對穿越NAT的IPSec數據流給予支持。
[1]祝之梅,李之棠.NAT與IPSec協議兼容性問題及解決方案[J].計算機應用,2004,24(3).
[2]歐陽星明,朱尚文.IPSec與NAT的沖突問題及其解決方案研究[J].華中科技大學學報.2005,33(2).
[3]M.Borella,J.Lo.RFC 3102.October 2001.Realm Specific IP:Framework.IETF.
[4]M.Borella,D.Grabelsky,J.Lo,K.Taniguchi.RFC3103. October 2001. Realm Specific IP:Protocol Specification.IETF.
[5]G.Montenegro, M.Borella.RFC 3104.October 2001.RSIP Support for End-to-end IPsec.IETF.
[6]B.Aboba,W.Dixon.RFC 3715. March 2004. IPsec Network Address Translation(NAT)Compatibility Requirements.IETF.
[7]A. Huttunen, B.Swander,V.Volpe.RFC 3948. January 2005.UDP Encapsulation of IPsec ESP Packets.IETF.
[8]R.Housley,W.Polk.RFC 2528. March 1999.Internet X.509 Public Key Infrastructure.IETF.
[9]潘登,徐佩霞.一種新的IPSec穿越NAT方案[J].小型微型計算機系統,2005,26(2).
[10]魏臻,楊海潮.一種改進的IPSec穿越NAT方案[J].計算機技術與發展,2006,16(8).
[11]陳熊貴,曹珍富,郭圣.IPSec穿越NAT多用戶的一種實現方案[J].計算機工程,2006,32(20).
Analysis and improvement of compatibility of IPSec with NAT
FAN Zi-niu1, XIANG Hong2, CHEN Jian-guo1, LI Xiao-tong1
通過對目前多種IPSec與NAT兼容性方案的研究與分析,提出了用X.509證書來進行身份認證的IPSec與NAT兼容性方案。在保持靈活設置安全策略能力和進一步提高安全性的前提下,能很好地解決多用戶接入的并發性問題。
IPSec;NAT;X.509;SPD
樊子牛(1972-),云南昆明人,網絡工程師,碩士,研究方向為教育技術輔助外語教學、雙語教學、網絡技術。
TP391
B
1009-0134(2010)06-0104-04
10.3969/j.issn.1009-0134.2010.06.35
2010-03-30