IPSec與和NAT兼容性研究論文
時(shí)間:2022-03-12 10:19:00
導(dǎo)語(yǔ):IPSec與和NAT兼容性研究論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。
摘要網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)(NAT)與ipsec在因特網(wǎng)上都是得到廣泛應(yīng)用的技術(shù),但是它們之間卻是不兼容的。該文首先分別介紹了nat和IPSec兩種協(xié)議的基本原理,分析了兩者的不兼容性,然后討論了解決該問(wèn)題必須滿(mǎn)足的要求,最后給出了利用UDP封裝法實(shí)現(xiàn)NAT透明穿透的解決方案。
關(guān)鍵詞IPSec;NAT;IKE;UDP封裝
1引言
基于IP技術(shù)的虛擬專(zhuān)用網(wǎng)(VirtualProfessionalNetwork,簡(jiǎn)稱(chēng)VPN)是通過(guò)Internet平臺(tái)將局域網(wǎng)擴(kuò)展到遠(yuǎn)程網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)用戶(hù)的一種成本效益極佳的方法。隨著網(wǎng)絡(luò)安全技術(shù)的飛快發(fā)展,越來(lái)越多大型企業(yè)利用互聯(lián)網(wǎng)采用IPSec技術(shù)建立VPN網(wǎng)絡(luò),IPSec已逐漸成為VPN構(gòu)建的主流技術(shù)。IP安全協(xié)議(IPSecurityProtocol,簡(jiǎn)稱(chēng)IPSec)是由互聯(lián)網(wǎng)工程工業(yè)組(InternetEngineeringTaskForce,簡(jiǎn)稱(chēng)IETF)1998年底規(guī)劃并制定的網(wǎng)絡(luò)IP層標(biāo)準(zhǔn)。IPSec不僅可以為IP協(xié)議層以上所有的高層協(xié)議和應(yīng)用提供一致性的安全保護(hù),而且除了可用于IPv4之外,也可用于下一代IP協(xié)議IPv6。
另外,NAT(NetworkAddressTranslation)技術(shù)通過(guò)改變進(jìn)出內(nèi)部網(wǎng)絡(luò)的IP數(shù)據(jù)包的源和目的地址,把無(wú)效的內(nèi)部網(wǎng)絡(luò)地址翻譯成合法的IP地址在Internet上使用。該技術(shù)一方面可以把私有IP地址隱藏起來(lái),使外界無(wú)法直接訪(fǎng)問(wèn)內(nèi)部網(wǎng)絡(luò),對(duì)內(nèi)部網(wǎng)絡(luò)起到保護(hù)作用;另一方面,它可以緩解由于IPv4先天設(shè)計(jì)上的不足,而導(dǎo)致的IP地址嚴(yán)重短缺的現(xiàn)狀。
但是,被廣泛使用的網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)設(shè)備卻制約著基于IPSec技術(shù)的VPN的發(fā)展,這是因?yàn)镮PSec協(xié)議在VPN中承擔(dān)保護(hù)傳輸數(shù)據(jù)的安全性任務(wù)。在數(shù)據(jù)傳輸過(guò)程中,任何對(duì)IP地址及傳輸標(biāo)志符的修改,都被視作對(duì)該協(xié)議的違背,并導(dǎo)致數(shù)據(jù)包不能通過(guò)安全檢查而被丟棄。但在VPN中運(yùn)用NAT技術(shù),則不可避免地要將私網(wǎng)地址映射為公網(wǎng)地址,即對(duì)IP地址要進(jìn)行修改。因此,在VPN網(wǎng)絡(luò)中如何使IPSec和NAT協(xié)同工作,實(shí)現(xiàn)NAT的透明穿透具有現(xiàn)實(shí)意義。
2協(xié)議介紹
2.1IPSec
IPSec包括安全協(xié)議和密鑰管理兩部分。其中,AH和ESP是兩個(gè)安全協(xié)議,提供數(shù)據(jù)源驗(yàn)證、面向無(wú)連接的數(shù)據(jù)完整性、抗重放、數(shù)據(jù)機(jī)密性和有限抗流量分析等安全任務(wù)。為了能夠?qū)⑾鄳?yīng)的安全服務(wù)、算法和密鑰應(yīng)用于需要保護(hù)的安全通道,IPSec規(guī)定兩個(gè)通信實(shí)體進(jìn)行IPSec通信之前首先構(gòu)建安全關(guān)聯(lián)SA。SA規(guī)定了通信實(shí)體雙方所需要的具體安全協(xié)議、加密算法、認(rèn)證算法以及密鑰。IKE提供了用來(lái)協(xié)商、交換和更新SA以及密鑰的完整機(jī)制。
IPSec定義了兩種類(lèi)型的封裝模式——傳輸模式和隧道模式。傳輸模式只對(duì)IP分組應(yīng)用IPSec協(xié)議,對(duì)IP報(bào)頭不進(jìn)行任何修改,它只能應(yīng)用于主機(jī)對(duì)主機(jī)的IPSec虛擬專(zhuān)用網(wǎng)VPN中。隧道模式中IPSec將原有的IP分組封裝成帶有新的IP報(bào)頭的IPSec分組,這樣原有的IP分組就被有效地隱藏起來(lái)了。隧道主要應(yīng)用于主機(jī)到網(wǎng)關(guān)的遠(yuǎn)程接入的情況。
2.2NAT
NAT能解決目前IP地址緊缺的問(wèn)題,而且能使得內(nèi)外網(wǎng)絡(luò)隔離,提供一定的網(wǎng)絡(luò)安全保障。它解決問(wèn)題的辦法是:在內(nèi)部網(wǎng)絡(luò)中使用內(nèi)部地址,通過(guò)NAT把內(nèi)部地址翻譯成合法的IP地址在Internet上使用,其具體的做法是把IP包內(nèi)的地址或用合法的IP地址來(lái)替換。NAT功能通常被集成到路由器、防火墻、ISDN路由器或者單獨(dú)的NAT設(shè)備中。
NAT有三種類(lèi)型:靜態(tài)NAT、動(dòng)態(tài)地址NAT、網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT。其中靜態(tài)NAT設(shè)置起來(lái)最為簡(jiǎn)單,內(nèi)部網(wǎng)絡(luò)中的每個(gè)主機(jī)都被永久映射成外部網(wǎng)絡(luò)中的某個(gè)合法的地址。而動(dòng)態(tài)地址NAT則是在外部網(wǎng)絡(luò)中定義了一系列的合法地址,采用動(dòng)態(tài)分配的方法映射到內(nèi)部網(wǎng)絡(luò)。NAPT則是把內(nèi)部地址映射到外部網(wǎng)絡(luò)的一個(gè)IP地址的不同端口上。根據(jù)不同的需要,三種NAT方案各有利弊。
3IPSec與NAT的不兼容性分析
根據(jù)協(xié)議的定義,我們知道IPSec和NAT兩個(gè)協(xié)議之間存在一定的不兼容性。其不兼容性主要有以下幾種形式:
1)NAT對(duì)AH的影響
IPSecAH進(jìn)行驗(yàn)證的時(shí)候,處理的是整個(gè)IP包,包括源地址和目的地址。如果IPSec通信雙方存在NAT設(shè)備,NAT設(shè)備就會(huì)修改外層IP包頭的源地址并修改其校驗(yàn)和,這樣接收方會(huì)因認(rèn)證失敗而丟棄該包。
2)NAT對(duì)ESP的影響
TCP/UDP校驗(yàn)和地計(jì)算涉及一個(gè)虛構(gòu)的IP包頭,該包頭含有IP源和目的地址。因此,當(dāng)NAT設(shè)備改變IP地址時(shí)也需要更新IP頭和TCP/UDP校驗(yàn)和。如果采用ESP傳輸模式,IP包經(jīng)過(guò)NAT設(shè)備時(shí),NAT設(shè)備修改了IP包頭,但是TCP/UDP校驗(yàn)和由于處于加密負(fù)載中而無(wú)法被修改。這樣,該信包經(jīng)過(guò)IPSec層后將因?yàn)門(mén)CP協(xié)議層的校驗(yàn)和的錯(cuò)誤而被丟棄。
另外,由于TCP/UDP校驗(yàn)和只與內(nèi)層原始IP包頭有關(guān),外層IP包頭的修改并不對(duì)其造成影響,因此采用ESP隧道模式和僅靜態(tài)或動(dòng)態(tài)NAT的情況下不存在TCP校驗(yàn)和的問(wèn)題。但是,在NAPT情況下,因?yàn)镹APT需要TCP/UDP端口來(lái)匹配出入信包,而端口號(hào)受到ESP加密保護(hù),所以ESP分組通信將會(huì)失敗。
3)NAT對(duì)IKE的影響
IKE主模式與快速模式中如果使用IP地址作為身份信息,經(jīng)過(guò)NAT后,會(huì)導(dǎo)致IKE協(xié)商的失敗。
IKE協(xié)議使用固定目的端口500,當(dāng)NAPT設(shè)備后的多個(gè)主機(jī)向同一響應(yīng)者發(fā)起SA協(xié)商時(shí),為了實(shí)現(xiàn)多路分發(fā)返回的IKE包,NAPT修改外出的IKE包的UDP源端口。因此,響應(yīng)者應(yīng)該能處理端口號(hào)并非500的IKE協(xié)商請(qǐng)求,但往往NAPT對(duì)UDP端口的映射很快會(huì)被刪除,再協(xié)商的過(guò)程就將出現(xiàn)一些不可預(yù)見(jiàn)的問(wèn)題,很容易導(dǎo)致NAPT設(shè)備無(wú)法將協(xié)商包送到正確的目的地。
綜上所述,IPSec組件對(duì)NAT的支持能力如表1所示從表1中可以看出,只有在隧道模式和地址轉(zhuǎn)換情況下才可以實(shí)現(xiàn)IPSec數(shù)據(jù)流的NAT穿越。這一方法既降低了IPSec協(xié)議的安全性,又限制了NAT的工作方式,因此在實(shí)際應(yīng)用中可行度較差。
4IPSec與NAT的兼容性要求
在現(xiàn)有的條件下,為了推動(dòng)基于IPSec的VPN的發(fā)展,IPSec和NAT兼容性解決方案需要滿(mǎn)足下列要求:
1)可部署性
IPSec和NAT兼容性解決方案作為一個(gè)過(guò)渡的解決辦法必須比IPv6易于部署。應(yīng)該只需修改主機(jī),無(wú)需改變路由器,在短時(shí)間內(nèi)能與現(xiàn)存的路由器和NAT產(chǎn)品協(xié)同工作。
2)遠(yuǎn)程訪(fǎng)問(wèn)
IPSec的一個(gè)重要應(yīng)用是遠(yuǎn)程訪(fǎng)問(wèn)公司的內(nèi)部網(wǎng)絡(luò)。NAT穿越方案必須考慮遠(yuǎn)程客戶(hù)端與VPN網(wǎng)關(guān)之間存在多個(gè)NAT的情況。
3)防火墻兼容性
IPSec和NAT兼容性方案應(yīng)該避免對(duì)IKE或IPSec目的端口的動(dòng)態(tài)分配,使防火墻管理員進(jìn)行簡(jiǎn)單的配置,就可以控制穿越NAT的IPSec數(shù)據(jù)流。
4)可擴(kuò)展性
IPSec和NAT兼容性方案應(yīng)具有良好的擴(kuò)展性,必須保證在大規(guī)模遠(yuǎn)程訪(fǎng)問(wèn)的環(huán)境中,在大量遠(yuǎn)程接入的環(huán)境下,同一時(shí)間段多個(gè)主機(jī)和遠(yuǎn)程安全網(wǎng)關(guān)建立連接。
5)后向兼容性
IPSec和NAT兼容性方案中必須能與已有的IPSec實(shí)現(xiàn)互操作。穿越方案應(yīng)該能自動(dòng)檢測(cè)是否存在NAT,能判斷通信對(duì)方的IKE實(shí)現(xiàn)是否支持NAT穿越。
6)安全性
IPSec和NAT兼容性解決方案的引入必須保證不得帶來(lái)新的安全漏洞。
5利用UDP封裝法實(shí)現(xiàn)NAT的穿透
本文中的解決方案是采用UDP封裝法實(shí)現(xiàn)NAT的透明穿透,不需要修改現(xiàn)有的NAT網(wǎng)關(guān)和路由器。所以該方案具有簡(jiǎn)單且易于實(shí)現(xiàn)的優(yōu)點(diǎn),缺點(diǎn)是由于添加了一個(gè)UDP報(bào)文頭,而加大了帶寬開(kāi)銷(xiāo),但相對(duì)于目前持續(xù)擴(kuò)大的傳輸帶寬來(lái)說(shuō),這個(gè)UDP報(bào)文頭的帶寬開(kāi)銷(xiāo)可以忽略不計(jì)。下面詳細(xì)討論其原理和實(shí)現(xiàn)過(guò)程。
5.1封裝格式
UDP封裝法是在原有的IP包的IP頭和AH/ESP的數(shù)據(jù)之間再封裝一個(gè)UDP頭,這樣封裝后的數(shù)據(jù)包端口值對(duì)NAT可見(jiàn),就可以正確的實(shí)現(xiàn)端口轉(zhuǎn)換。UDP封裝格式如圖1所示。
另外,由于IKE已經(jīng)使用了UDP的500端口,為了簡(jiǎn)化配置和避免多個(gè)端口帶來(lái)的安全隱患,UDP封裝的ESP也使用該端口。這樣就需要采取一定的方法來(lái)區(qū)分端口500的數(shù)據(jù)包是IKE消息還是UDP封裝的ESP。為了區(qū)分兩者,我們采用在IKE報(bào)頭添加Non-ESP標(biāo)記。在確定存在一個(gè)中間NAT之后,支持IPSecNAT-T的對(duì)話(huà)方開(kāi)始使用新的IKE報(bào)頭。
5.2IKE協(xié)商過(guò)程
IPSec通信實(shí)體雙方是否采用UDP封裝取決于對(duì)話(huà)對(duì)方是否支持該方法以及是否存在NAT設(shè)備,這個(gè)過(guò)程通過(guò)IKE協(xié)商來(lái)完成。在IKE協(xié)商過(guò)程中增添了新的NAT-D和NAT-OA有效載荷和以及UDP通道類(lèi)型。
1)新的NAT-Discovery(NAT-D)有效載荷
這個(gè)新的有效載荷包含一個(gè)散列值,它整合了一個(gè)地址和端口號(hào)。在主模式協(xié)商期間,即IKE協(xié)商第一階段第三、四條消息中,IPSec對(duì)話(huà)方包括兩個(gè)NAT-Discovery有效載荷——一個(gè)用于目標(biāo)地址和端口,另一個(gè)用于源地址和端口。接收方使用NAT-Discovery有效載荷來(lái)發(fā)現(xiàn)NAT之后是否存在一個(gè)經(jīng)NAT轉(zhuǎn)換過(guò)的地址或端口號(hào),并基于被改變的地址和端口號(hào)來(lái)確定是否有對(duì)話(huà)方位于NAT之后。
2)新的NAT-OriginalAddress(NAT-OA)有效載荷:這個(gè)新的有效載荷包含IPSec對(duì)話(huà)方的原始地址。對(duì)于UDP封裝的ESP傳輸模式,每個(gè)對(duì)話(huà)方在快速模式協(xié)商期間發(fā)送NAT-OA有效載荷。接收方將這個(gè)地址存儲(chǔ)在用于SA的參數(shù)中。
3)用于UDP封裝的ESP傳輸模式和隧道模式的新的封裝模式
這兩種新的封裝模式是在快速模式協(xié)商期間指定的,用于通知IPSec對(duì)話(huà)方應(yīng)該對(duì)ESP使用UDP封裝。
5.3地址通告和Keepalive包
由于用UDP來(lái)封裝IPSec分組的思想只解決了NAPT設(shè)備不支持AH和ESP通信的問(wèn)題。例如TCP校驗(yàn)和錯(cuò)誤、UDP端口映射的保持等問(wèn)題還需要輔助方法來(lái)解決。
為保證校驗(yàn)和正確無(wú)誤,通信雙方需將自身的原始IP地址和端口發(fā)送給對(duì)方,即實(shí)現(xiàn)地址通告。地址通告的實(shí)現(xiàn)通過(guò)IKE第二階段的前兩條消息中的NAT-OA有效載荷。因?yàn)镹AT-OA有效載荷中包含IPSec對(duì)話(huà)方的原始地址,為此,接收方就擁有了檢驗(yàn)解密之后的上層校驗(yàn)和所需的信息。
消息發(fā)起者在NAT中創(chuàng)建了一個(gè)UDP端口映射,它在初始主模式和快速模式IKE協(xié)商期間使用。然而,NAT中的UDP映射通常超過(guò)一定時(shí)間沒(méi)用就會(huì)被刪除掉。如果響應(yīng)者隨后向發(fā)起者發(fā)送IKE消息卻沒(méi)有提供UDP端口映射,那么這些消息將被NAT丟棄。這個(gè)問(wèn)題的解決辦法是通過(guò)定期發(fā)送Keepalive包,用于后續(xù)IKE協(xié)商和UDP封裝的ESP的UDP端口映射同時(shí)在NAT中得到刷新,從而保證通信的正常運(yùn)行。
6結(jié)束語(yǔ)
IPSec作為網(wǎng)絡(luò)層的安全協(xié)議,目前的應(yīng)用越來(lái)越廣泛,已成為構(gòu)建VPN的基礎(chǔ)協(xié)議之一。而由于IPv6取代IPv4將是一個(gè)漫長(zhǎng)的過(guò)程,NAT設(shè)備的廣泛存在極大地限制了IP層安全協(xié)議IPSec的推廣,因此在目前的條件下,UDP封裝方法無(wú)疑是一種在當(dāng)前環(huán)境下無(wú)需修改NAT網(wǎng)關(guān)和路由器、簡(jiǎn)單可接受的解決IPSec和NAT兼容性的方法,具有一定的現(xiàn)實(shí)意義。但是該方案還不完善,有待進(jìn)一步討論和研究。
參考文獻(xiàn)
[1]RFC3022-2001.TraditionalIPnetworkaddresstranslator(TraditionalNAT)[S].
[2]RFC2401-1998.SecurityArchitectureoftheInternetProtocol[S].
[3]RFC2402-1998.IPAuthenticationHeader[S].
[4]RFC2406-1998.IPEncapsulatingSecurityPayload(ESP)[S].
[5]RFC2409-1998.TheInternetKeyExchange(IKE)[S].
[6]RFC3103-2001.RealmSpecificIPProtocolSpecification[S].
[7]AbobaB,WilliamDixon.IPSec-NATcompatibilityrequirements[Z].Internetdraft,draft-ietf-ipsec-nat-reqtstxt,2001
[8]AriHuttunen.UDPencapsulateofIPSecpackets[Z].Internetdraft,draft-ietf-ipsec-udp-encapstxt,2001.
[9]KivirenT.NegotiationofNAT-traversalintheIKE[Z].Internetdraft,draft-ietf-ipsec-udp-iketxt,2001