![Linux中IP隧道的分析與建議_第1頁(yè)](http://file4.renrendoc.com/view/6fcdf21225160a659af0308edc006e26/6fcdf21225160a659af0308edc006e261.gif)
![Linux中IP隧道的分析與建議_第2頁(yè)](http://file4.renrendoc.com/view/6fcdf21225160a659af0308edc006e26/6fcdf21225160a659af0308edc006e262.gif)
![Linux中IP隧道的分析與建議_第3頁(yè)](http://file4.renrendoc.com/view/6fcdf21225160a659af0308edc006e26/6fcdf21225160a659af0308edc006e263.gif)
![Linux中IP隧道的分析與建議_第4頁(yè)](http://file4.renrendoc.com/view/6fcdf21225160a659af0308edc006e26/6fcdf21225160a659af0308edc006e264.gif)
![Linux中IP隧道的分析與建議_第5頁(yè)](http://file4.renrendoc.com/view/6fcdf21225160a659af0308edc006e26/6fcdf21225160a659af0308edc006e265.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux中IP隧道的分析與建議隨著計(jì)算機(jī)網(wǎng)絡(luò)的日益普及,網(wǎng)絡(luò)的安全成為目前的熱門話題。本文以Linux2.0.34(RedHat5.2采用)為基礎(chǔ),對(duì)隧道技術(shù)進(jìn)行分析,并側(cè)重安全領(lǐng)域?qū)υ贚inux環(huán)境下利用隧道技術(shù)實(shí)現(xiàn)虛擬專網(wǎng)提出建議。為什么需要IP隧道?沒(méi)有接觸過(guò)這個(gè)概念的人自然會(huì)提出這樣的疑問(wèn)。實(shí)際上概念最初的提出很簡(jiǎn)單,就是為了在TCP/IP網(wǎng)絡(luò)中傳輸其他協(xié)議的數(shù)據(jù)包。設(shè)想一下IPX協(xié)議或X.25封裝的數(shù)據(jù)包如何通過(guò)Internet網(wǎng)進(jìn)行傳輸,在已經(jīng)使用多年的橋接技術(shù)中是通過(guò)在源協(xié)議數(shù)據(jù)包上再套上一個(gè)IP協(xié)議頭來(lái)實(shí)現(xiàn)的,形成的IP數(shù)據(jù)包通過(guò)Internet后卸去IP頭,還原成源協(xié)議數(shù)據(jù)包,再傳送給目的站點(diǎn)。對(duì)源協(xié)議數(shù)據(jù)來(lái)說(shuō),就如同被IP帶著過(guò)了一條隧道。這種技術(shù)在業(yè)余無(wú)線網(wǎng)絡(luò)(AmateurPacketRadioNetwork)中得到了廣泛的應(yīng)用,目前的移動(dòng)式IP(mobileIP)技術(shù)已經(jīng)在此基礎(chǔ)上得到了很好的發(fā)展。利用IP隧道來(lái)傳送的協(xié)議包也包括IP數(shù)據(jù)包,本文主要分析的IPIP封包就是如此。所謂IPIP,就是把一個(gè)IP數(shù)據(jù)包又套在一個(gè)IP包里。為什么要這么做呢?其實(shí)并非多此一舉。見過(guò)一些應(yīng)用就會(huì)明白,移動(dòng)IP(Mobile-IP)和IP多點(diǎn)廣播(IP—Multicast)是兩個(gè)典型的例子。目前,IP隧道技術(shù)在構(gòu)筑虛擬專網(wǎng)(VPN,VirtualPrivateNetwork)中也顯示了出極大的生命力。本文也將對(duì)利用IP隧道技術(shù)構(gòu)筑VPN做簡(jiǎn)單設(shè)想。IP隧道的多種理解和實(shí)現(xiàn)Internet的研究者多年前就感到需要在網(wǎng)絡(luò)中建立隧道,最初的理解是在網(wǎng)絡(luò)中建立一條固定的路徑,以繞過(guò)一些可能失效的網(wǎng)關(guān)??梢哉f(shuō),隧道就是一條特定的路徑。這樣的隧道是通過(guò)IP報(bào)頭中的源路由選項(xiàng)來(lái)實(shí)現(xiàn)的。在目前看來(lái),這種方法的缺陷十分明顯。要設(shè)置源路由選項(xiàng)就必須知道數(shù)據(jù)包要經(jīng)過(guò)的確切路徑,而目前多數(shù)路由實(shí)現(xiàn)中都不支持源路由。另一種實(shí)現(xiàn)隧道的機(jī)制是開發(fā)一種新的IP選項(xiàng),用來(lái)表明源數(shù)據(jù)包的信息,原IP頭可能成為此選項(xiàng)的一部分。這種隧道的意義與我們所說(shuō)的隧道已十分接近。但它的不足在于要對(duì)目前IP選項(xiàng)的實(shí)現(xiàn)和處理做較大的修改,此外它還缺乏靈活性。最常用的一種實(shí)現(xiàn)方法是開發(fā)一種新的IP封包(encapsulation)協(xié)議,仍然套用當(dāng)前的IP頭格式。通過(guò)IP封包,不須指明網(wǎng)絡(luò)路徑,封包就能透明地到達(dá)目的地。也可以通過(guò)封包空間把未直接連接的機(jī)器綁在一起,從而創(chuàng)建虛擬網(wǎng)絡(luò)。這種方法易行、可靠、可擴(kuò)展性強(qiáng)。Linux采用了這一方法,這就是目前我們所理解的隧道思想。封包協(xié)議結(jié)構(gòu)封包協(xié)議的實(shí)現(xiàn)原理十分簡(jiǎn)單,從圖一中可以看到通過(guò)隧道傳送的數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中是如何流動(dòng)的。為了敘述簡(jiǎn)便,下文中把在隧道中傳送的IP數(shù)據(jù)包稱為封包。
圖一封包協(xié)議實(shí)現(xiàn)模型圖一中的設(shè)備#都處于隧道的兩端(中間的(祥)設(shè)備只做簡(jiǎn)單的轉(zhuǎn)發(fā)),分別起打包(封裝)和解包(解封)的作用。在整個(gè)數(shù)據(jù)包的傳送路徑中,除了隧道兩端的#設(shè)備,其他網(wǎng)關(guān)把數(shù)據(jù)包看成一個(gè)普通的IP包進(jìn)行轉(zhuǎn)發(fā)。設(shè)備#就是一個(gè)基于封包的兩個(gè)實(shí)現(xiàn)部件 封裝部件和解封部件。封裝和解封部件(設(shè)備)都應(yīng)當(dāng)同時(shí)屬于兩個(gè)子網(wǎng)。封裝部件對(duì)接收到的數(shù)據(jù)報(bào)加上封包頭,然后以解封部件地址作為目的地址轉(zhuǎn)發(fā)出去;而解封部件則在收到封包后,還原為數(shù)據(jù)報(bào),轉(zhuǎn)發(fā)到目的子網(wǎng)。隧道的源端(封裝部件)對(duì)進(jìn)入隧道的數(shù)據(jù)包進(jìn)行封裝,形成封包。圖二是一個(gè)完整的封包示意圖。封包IP頭封包協(xié)議頭原協(xié)議頭原協(xié)議數(shù)據(jù)圖二封包結(jié)構(gòu)Linux封包實(shí)現(xiàn)在Linux中,隧道的實(shí)現(xiàn)主要涉及兩個(gè)文件:new-tunnel.c和ipip.c。另外,Linux還定義了一種新的協(xié)議類型 IPIP(IPPROTO-IPIP),它類似于上面所說(shuō)的封包類型。在Linux中IPTunnel的實(shí)現(xiàn)也分為兩個(gè)部件:封裝部件和解封部件,分別司職發(fā)送和接收。但這兩個(gè)部件是在不同的層次上以不同的方式實(shí)現(xiàn)的。封裝部件是在數(shù)據(jù)鏈路層以虛設(shè)備的方式實(shí)現(xiàn)的,所有源代碼見:/usr/src/linux/drivers/net/new-tunnel.c為實(shí)現(xiàn)封裝,Linux實(shí)現(xiàn)一個(gè)稱為tunl的網(wǎng)絡(luò)設(shè)備(類似于loopback設(shè)備),它具有其他網(wǎng)絡(luò)設(shè)備共有的特征。對(duì)于使用此設(shè)備的上層應(yīng)用來(lái)說(shuō),對(duì)這些網(wǎng)絡(luò)設(shè)備不加區(qū)分,調(diào)用及處理方法當(dāng)然也完全一樣。new-tunnel.c中的兩個(gè)主要過(guò)程是tunnel-init()和tunnel-xmit(),其中tunnel-init()初始化與設(shè)備tunl相關(guān)的device結(jié)構(gòu),而tunnel-xmit()在從tunl設(shè)備發(fā)送數(shù)據(jù)時(shí)被調(diào)用,tunl設(shè)備作為實(shí)現(xiàn)IP隧道技術(shù)的封裝部分,在此過(guò)程中完成對(duì)相應(yīng)的數(shù)據(jù)報(bào)進(jìn)行封裝所需的全部操作,形成IPIP類型的IP包,并重新轉(zhuǎn)發(fā)此數(shù)據(jù)包(ip-forward())。解封部件在IP的上層實(shí)現(xiàn),系統(tǒng)把它作為一個(gè)虛的傳輸層(實(shí)際上與傳輸層毫無(wú)關(guān)系),具體處理見文件:/usr/src/linux/net/ipv4/ipip.c。我們知道,每一個(gè)IP數(shù)據(jù)包均交給ip-rcv函數(shù)處理,在進(jìn)行一些必要的判斷后,ip-rcv對(duì)于發(fā)送給本機(jī)的數(shù)據(jù)包將交給上層處理程序。對(duì)于IPIP包來(lái)說(shuō),其處理函數(shù)是ipip-rcv(與TCP包的處理函數(shù)tcp-rcv一樣,IP層不加區(qū)分)。也就是說(shuō),當(dāng)一個(gè)目的地址為本機(jī)的封包到達(dá)后,ip-rcv函數(shù)進(jìn)行一些基本檢查并除去IP頭,然后交由ipip-rcv解封。ipip-rcv的作用就是去掉封包頭,還原數(shù)據(jù)包,然后把還原后的數(shù)據(jù)包放入相應(yīng)的接收隊(duì)列(netif-rx())中。上述的IPTunnel實(shí)現(xiàn)思路十分清晰,但由于IPTunnel的特殊性,其實(shí)現(xiàn)的層次并不單純。它的封裝和解封部件不能簡(jiǎn)單地像上面所說(shuō)的那樣分層。tunl設(shè)備雖然應(yīng)算進(jìn)鏈路層,但其發(fā)送程序還做了很多其他的工作,如制作IPIP頭及新的IP頭(這些一般認(rèn)為是傳輸層或網(wǎng)絡(luò)層的工作)。調(diào)用ip-forward轉(zhuǎn)發(fā)新包也不是一個(gè)網(wǎng)絡(luò)設(shè)備應(yīng)當(dāng)做的事??梢哉f(shuō),tunl借網(wǎng)絡(luò)設(shè)備之名,做的工作卻很多,因此相當(dāng)'高效”。而解封部件宏觀上看在網(wǎng)絡(luò)層之上,解出IPIP頭,恢復(fù)原數(shù)據(jù)包是它分內(nèi)的事,但在它解出數(shù)據(jù)包(即原完整的協(xié)議數(shù)據(jù)包)后,它把這個(gè)包放入相應(yīng)的協(xié)議接收隊(duì)列。這項(xiàng)任務(wù)可不是一個(gè)上層協(xié)議干的,這是網(wǎng)絡(luò)設(shè)備中斷接收程序的義務(wù)。在這點(diǎn)上,它好像又到了數(shù)據(jù)鏈路層。隧道機(jī)制就是這樣的。為實(shí)現(xiàn)VPN的擴(kuò)展實(shí)際上Linux只為實(shí)現(xiàn)隧道機(jī)制提供了一個(gè)框架,圖二中的封包協(xié)議頭在Linux中被忽略了,也就是說(shuō),封包頭只含封包IP頭,其后緊跟原IP數(shù)據(jù)包。這樣的結(jié)構(gòu)用于傳輸公開數(shù)據(jù)沒(méi)有關(guān)系,但對(duì)于一個(gè)VPN來(lái)說(shuō),安全保密是不可缺少的重要功能。我們希望通過(guò)隧道的數(shù)據(jù)可靠且不可竊取或假冒,因此加密和認(rèn)證就必不可少。為實(shí)現(xiàn)這一構(gòu)想,可設(shè)計(jì)以下封包協(xié)議頭:163116verWenOl^PackctknDcviccIDEncapIDFlagsC&ckSumIPIP if)padding圖三IPIP頭設(shè)想圖其中type用于建立不同目的的隧道(可能處理上有差別),OldPacketLen是進(jìn)入隧道的原數(shù)據(jù)包長(zhǎng)度,DevicelD是對(duì)數(shù)據(jù)包進(jìn)行封裝的設(shè)備標(biāo)識(shí),EncapID是此封包的ID號(hào),F(xiàn)lags是標(biāo)志位,初步定義如下:0保留1有否加密2有否做摘要3有否簽名4保留5是否傳送消息密鑰6消息密鑰是否加密7消息密鑰是否需保留8—15保留IPIPOptions用來(lái)傳送一些必要的數(shù)據(jù),比如消息密鑰、簽名等,其格式為,類型長(zhǎng)度數(shù)據(jù)有了上述定義,就可以擴(kuò)展LinuxIPTunnel為VPN服務(wù)了。首先,改寫new-tunnel.c和ipip.c兩個(gè)文件,加入對(duì)IPIP頭的處理。然后,要實(shí)現(xiàn)一種密鑰的管理和傳送機(jī)制。當(dāng)然,對(duì)稱密鑰是必需的,而對(duì)IP數(shù)據(jù)包加密要使用序列密碼。在一個(gè)VPN的隧道中,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一年級(jí)夜色聽評(píng)課記錄
- 湘教版地理八年級(jí)下冊(cè)5.3《西北地區(qū)和青藏地區(qū)》(第2課時(shí))聽課評(píng)課記錄
- 魯教版數(shù)學(xué)八年級(jí)下冊(cè)8.3《用公式法解一元二次方程》聽評(píng)課記錄
- 五年級(jí)數(shù)學(xué)口算競(jìng)賽題
- 蘇教版小學(xué)數(shù)學(xué)三年級(jí)下冊(cè)口算題
- 蘇教版二年級(jí)下冊(cè)數(shù)學(xué)口算練習(xí)題費(fèi)
- 小學(xué)數(shù)學(xué)-六年級(jí)下冊(cè)-4-3 正比例圖像 聽評(píng)課記錄
- 船員勞動(dòng)合同范本
- 商業(yè)房屋租借合同范本
- 2025年度高級(jí)技術(shù)人才聘用與管理制度合同
- 2025年工貿(mào)企業(yè)春節(jié)復(fù)工復(fù)產(chǎn)方案
- 2025年藍(lán)莓種苗行業(yè)深度研究分析報(bào)告
- 2025年事業(yè)單位財(cái)務(wù)工作計(jì)劃(三篇)
- Unit 2 Know your body(說(shuō)課稿)-2024-2025學(xué)年外研版(三起)(2024)英語(yǔ)三年級(jí)下冊(cè)
- 跨學(xué)科主題學(xué)習(xí)2-探索太空逐夢(mèng)航天 說(shuō)課稿-2024-2025學(xué)年粵人版地理七年級(jí)上冊(cè)
- 《電子技術(shù)應(yīng)用》課程標(biāo)準(zhǔn)(含課程思政)
- 紙尿褲使用管理制度內(nèi)容
- 會(huì)計(jì)專業(yè)工作簡(jiǎn)歷表(中級(jí))
- 風(fēng)居住的街道鋼琴二胡合奏譜
- PADS元件封裝制作規(guī)范要點(diǎn)
- 第一講數(shù)字合成技術(shù)概述
評(píng)論
0/150
提交評(píng)論