資源描述:
《小議在Linux環(huán)境下基于策略的路由.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、小議在Linux環(huán)境下基于策略的路由 摘要 本文以大量實(shí)例為基礎(chǔ)介紹了基于Linux2.2的強(qiáng)大路由功能,它提供的路由功能是很多路由器產(chǎn)品都是難以匹敵的,如果考慮到它的免費(fèi)性,它的性能價(jià)格比更是沒有任何產(chǎn)品可以相比。 目前在計(jì)算機(jī)網(wǎng)絡(luò)中使用的傳統(tǒng)路由算法都是根據(jù)IP包目的地址進(jìn)行路由選擇.然而在現(xiàn)實(shí)應(yīng)用中經(jīng)常有這樣的需求:進(jìn)行路由選擇時(shí)不僅僅根據(jù)數(shù)據(jù)報(bào)的目的地址,而且根據(jù)數(shù)據(jù)報(bào)的其他一些特性如:源地址、IP協(xié)議、傳輸層端口,甚至是數(shù)據(jù)包的負(fù)載部分內(nèi)容,這種類型的路由選擇被稱作基于策略的路由?! ≡?/p>
2、Linux中,從2.1版本的內(nèi)核開始就實(shí)現(xiàn)了對基于策略的路由的支持,它是通過使用路由策略數(shù)據(jù)庫(RPDB,routingpolicydatabase)替代傳統(tǒng)的、基于目的地址的路由表來實(shí)現(xiàn)的。RPDB通過包含的一些規(guī)則來選定合適的IP路由。這些規(guī)則可能會(huì)包含很多各種不同類型的健值(key),因此這些規(guī)則沒有默認(rèn)的特定次序,規(guī)則查找次序或規(guī)則優(yōu)先級都是由網(wǎng)絡(luò)或系統(tǒng)管理員設(shè)定的?! inux的RPDB是一個(gè)由數(shù)字優(yōu)先級值進(jìn)行排序的線性規(guī)則列表。RPDB能匹配數(shù)據(jù)報(bào)源地址、目的地址、TOS、進(jìn)入接和fwma
3、rk值等。每個(gè)路由策略規(guī)則由一個(gè)選擇器和一個(gè)動(dòng)作指示組成。RPDB按照優(yōu)先級遞增的順序被掃描,RPDB包含的每條規(guī)則的選擇器被應(yīng)用于數(shù)據(jù)報(bào)的源地址、目的地址、進(jìn)入接口、TOS和fwmark值。若數(shù)據(jù)報(bào)匹配該規(guī)則對應(yīng)于該規(guī)則的動(dòng)作被執(zhí)行。若動(dòng)作成功返回,則規(guī)則輸出將是一個(gè)有效的路由或是路由查找失敗指示;否則查找RPDB的下一條規(guī)則。 當(dāng)選擇器和一個(gè)數(shù)據(jù)報(bào)匹配成功,會(huì)執(zhí)行哪些動(dòng)作呢?路由軟件的標(biāo)準(zhǔn)動(dòng)作一般是選擇下一跳地址和輸出接口,可以稱這種動(dòng)作為“匹配&設(shè)置”類型動(dòng)作。然而Linux采取了更加靈活的方法
4、,在Linux中有多種動(dòng)作可供選擇。默認(rèn)的動(dòng)作是查詢特定的基于目的地址的路由表?! ∫虼恕捌ヅ?設(shè)置”動(dòng)作就成為Linux路由選擇的最簡單情況。Linux支持多個(gè)路由表,每個(gè)路由表都包含多條路由信息。也就是Linux的每個(gè)路由表都相當(dāng)于其他操作系統(tǒng)的系統(tǒng)路由表。Linux支持多達(dá)255個(gè)路由表。(Linux2.2.12支持255個(gè)路由表,255個(gè)匯聚域和232個(gè)策略規(guī)則優(yōu)先級?! τ贚inux2.1/2.2,啟動(dòng)時(shí)內(nèi)核將包含一個(gè)由三條策略規(guī)則組成的默認(rèn)的RPDB,察看這些默認(rèn)規(guī)則的一個(gè)方法是使用命令來
5、列出系統(tǒng)的所有規(guī)則: root@netmonsteriprulelist 0:fromalllookuplocal 32766:fromalllookupmain 32767:fromalllookupdefault 下面的默認(rèn)規(guī)則在對于理解啟動(dòng)復(fù)雜路由系統(tǒng)是非常重要的?! ∈紫仁亲罡呒墑e的優(yōu)先級規(guī)則,規(guī)則策略0: 規(guī)則0:優(yōu)先級0選擇器=匹配任何數(shù)據(jù)報(bào) 動(dòng)作=察看本地路由表(routingtablelocal),ID為255。 local表是保留路由表,包含了到本地和廣播地址的路由。規(guī)
6、則0是特殊的規(guī)則,不可被刪除或修改。 規(guī)則32766:優(yōu)先級32766選擇器=匹配所有數(shù)據(jù)報(bào) 動(dòng)作=察看主路由表(routingtablemain),ID為254?! ain路由表是默認(rèn)的標(biāo)準(zhǔn)路由表,其包含所有非策略路由,main表是存放舊的路由命令(route命令)創(chuàng)建的路由。而且任何由iproute命令創(chuàng)建的沒有明確指定路由表的路由都被加入到該路由表中。該規(guī)則不能被刪除和被其他規(guī)則覆蓋?! ∫?guī)則32767:優(yōu)先級32767選擇器=匹配所有數(shù)據(jù)報(bào) 動(dòng)作=察看默認(rèn)路由表(routingtable
7、default),ID為253?! efault路由表是空的,為最后處理(post-processing)所預(yù)留,若前面的默認(rèn)規(guī)則沒有選擇該數(shù)據(jù)報(bào)時(shí)保留用作最后的處理。該規(guī)則可以被刪除?! 〔灰獙⒙酚杀砗鸵?guī)則混淆,規(guī)則是指向路由表的。也許會(huì)出現(xiàn)多個(gè)規(guī)則指向同一個(gè)路由表,而有些路由表可能并不被任何規(guī)則指向。如果刪除了指向某個(gè)路由表的所有規(guī)則,則該表將不發(fā)生作用,但是表將仍然存在。一個(gè)路由表只有在其中包含的所有路由信息被刪除才會(huì)消失?! ∏懊嫣岬?,Linux策略規(guī)對應(yīng)的動(dòng)作除了指向一個(gè)路由表以外還能是若干
8、種不同的動(dòng)作。當(dāng)創(chuàng)建一個(gè)策略規(guī)則,有如下類型的動(dòng)作可以選擇: unicast--在該規(guī)則指向的路由表中進(jìn)行標(biāo)準(zhǔn)的路由查找。當(dāng)一個(gè)路由表被指定,這是默認(rèn)的動(dòng)作?! lackhole--規(guī)則動(dòng)作將僅僅直接丟棄該數(shù)據(jù)報(bào)?! nreachable--規(guī)則動(dòng)作產(chǎn)生一條網(wǎng)絡(luò)不可達(dá)錯(cuò)誤信息,一個(gè)類型為3,代碼為0的ICMP消息被返回給發(fā)送者。 prohibit--規(guī)則動(dòng)作產(chǎn)生一個(gè)通信被禁止的錯(cuò)誤消息,一個(gè)類型為3,代碼為13的ICMP消息被返回給