Linux作為一種新近崛起的操作系統(tǒng),由于其性能穩(wěn)定,源碼開(kāi)放及價(jià)格方面的優(yōu)勢(shì)而逐漸被廣大用戶所接受?,F(xiàn)在Linux的主要用武之地在于服務(wù)器領(lǐng)域,但是,經(jīng)過(guò)適當(dāng)?shù)呐渲弥?,它還可以擔(dān)當(dāng)互聯(lián)網(wǎng)的物理基石——路由器這一重要角色。 如今,許多公司都建有多個(gè)網(wǎng)絡(luò),如果這些網(wǎng)絡(luò)的類型不盡相同,則需要用路由器進(jìn)行互聯(lián)。路由器是與兩個(gè)或兩個(gè)以上的網(wǎng)絡(luò)連接的計(jì)算機(jī),它根據(jù)路由協(xié)議生成并維護(hù)一個(gè)路由表,并按照該路由表中的信息轉(zhuǎn)發(fā)包。這些路由器對(duì)公司內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu)了如指掌,知道將分組送到目的地的全部細(xì)節(jié),但對(duì)于其他公司的網(wǎng)絡(luò)結(jié)構(gòu)并不了解。像這樣"在同一機(jī)構(gòu)下管理的一系列路由器和網(wǎng)絡(luò)"被稱為自治系統(tǒng)(AS)。由不同機(jī)構(gòu)掌管的自治系統(tǒng),可以采用不同的路由選擇算法;但同一自治系統(tǒng)內(nèi)的所有路由器都使用同一路由協(xié)議,以便于自治系統(tǒng)內(nèi)部各個(gè)路由器互換路由信息來(lái)維持相互的連通性。每一個(gè)自治系統(tǒng)都有一個(gè)16位的"自治系統(tǒng)(AS)編號(hào)"作為標(biāo)志,就像 IP 地址一樣,它是由專門(mén)機(jī)構(gòu)來(lái)分配的。 自治系統(tǒng)內(nèi)的路由器稱為"內(nèi)部網(wǎng)關(guān)",所用的協(xié)議稱為"內(nèi)部網(wǎng)關(guān)協(xié)議"。內(nèi)部網(wǎng)關(guān)協(xié)議大體上分為兩類,一類是距離向量協(xié)議,如 RIP,EIGRP 協(xié)議;另一類是鏈路狀態(tài)協(xié)議如 OSPF 協(xié)議。鏈路狀態(tài)路由協(xié)議與距離向量協(xié)議的不同之處在于,采用鏈路狀態(tài)路由協(xié)議的路由器不是交換到達(dá)目的地的距離,而是維護(hù)一張網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖。然后用數(shù)據(jù)庫(kù)表示該圖,其中的表項(xiàng)對(duì)應(yīng)網(wǎng)絡(luò)的一條鏈路。路由器根據(jù)數(shù)據(jù)庫(kù)的信息計(jì)算出"最佳路由",由此指導(dǎo)包的轉(zhuǎn)發(fā)。當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),只需將相應(yīng)紀(jì)錄而非整個(gè)數(shù)據(jù)庫(kù)通知其他節(jié)點(diǎn)。各路由器做出相應(yīng)修改并重新計(jì)算路由后,就可以繼續(xù)正常工作。 因?yàn)?開(kāi)放式最短路徑優(yōu)先協(xié)議"的文檔必須公開(kāi)發(fā)表,所以它是"開(kāi)放式的"(Open);又因?yàn)樗捎?最短路徑優(yōu)先"(SPF)算法來(lái)計(jì)算一個(gè)節(jié)點(diǎn)到所有其它節(jié)點(diǎn)間的最短路徑,故名為 OSPF。OSPF 具有支持多重度量制式和多重路徑等諸多優(yōu)點(diǎn),因此成為因特網(wǎng)上推薦使用的內(nèi)部網(wǎng)關(guān)協(xié)議,RIP 卻由于自身的局限性而被打入冷宮。現(xiàn)在,在性能上唯一能夠與 OSPF 相匹敵的內(nèi)部網(wǎng)關(guān)協(xié)議便是 EIGRP--Cisco 的一個(gè)專有協(xié)議,但 OSPF 的“開(kāi)放”本身就是一個(gè)響亮的招牌,因?yàn)檎l(shuí)也不想受制于某家供應(yīng)商。 前面提到,自治系統(tǒng)內(nèi)的路由器不必知道其他自治系統(tǒng)的內(nèi)部結(jié)構(gòu)細(xì)節(jié),從而有效地節(jié)約了路由器的內(nèi)存和 CPU 時(shí)間,并提高了網(wǎng)絡(luò)帶寬的利用率。但是,如果想與其他公司(自治系統(tǒng))通信時(shí)該怎么辦呢?很簡(jiǎn)單,我們可以在自治系統(tǒng)內(nèi)指定一個(gè)與其他自治系統(tǒng)相連的路由器為"外部網(wǎng)關(guān)",通過(guò)它進(jìn)入其他自治系統(tǒng)。該路由器使用的協(xié)議叫做"外部網(wǎng)關(guān)協(xié)議",如邊界網(wǎng)關(guān)協(xié)議(BGP)。相鄰的兩個(gè)網(wǎng)關(guān)必須首先互換"鄰機(jī)探測(cè)"報(bào)文,協(xié)商是否愿意成為"鄰機(jī)"。成為鄰機(jī)則意味著兩個(gè)自治系統(tǒng)同意中轉(zhuǎn)雙方的通信流。同意后,兩個(gè)鄰機(jī)互換"鄰機(jī)可達(dá)性報(bào)文",來(lái)監(jiān)督他們之間的鏈路的工作情況。接下來(lái)便是最重要的工作,用"網(wǎng)絡(luò)可達(dá)性報(bào)文"來(lái)交換通過(guò)各鄰機(jī)所能到達(dá)的網(wǎng)絡(luò)的信息,從而實(shí)現(xiàn)自治系統(tǒng)之間的連通性。在外部網(wǎng)關(guān)的眼里只由外部網(wǎng)關(guān)和連接他們的鏈路,如此以來(lái),自治系統(tǒng)內(nèi)的通信由內(nèi)部網(wǎng)關(guān)處理,自治系統(tǒng)之間的通信交由外部網(wǎng)關(guān)處理--一個(gè)分級(jí)路由的景象已經(jīng)展現(xiàn)在我們面前,實(shí)際上,因特網(wǎng)正是由大量自治系統(tǒng)組成的。 許多人對(duì)路由器感到比較陌生,事實(shí)上作為一個(gè)防火墻使用的 Linux 系統(tǒng)已經(jīng)是一個(gè)路由器了,只不過(guò)還有點(diǎn)"簡(jiǎn)陋"而已。然而,我們的目標(biāo)是用 Linux 打造一個(gè)"高級(jí)"路由器,它必須能夠利用動(dòng)態(tài)路由協(xié)議(上文提到的協(xié)議皆為動(dòng)態(tài)路由協(xié)議)工作。這些協(xié)議能夠使路由器互換相關(guān)信息,從而共享穿越網(wǎng)絡(luò)時(shí)所用的那些路徑--路由。這一點(diǎn)對(duì)于大型網(wǎng)絡(luò)(比如 Internet)而言是"異常"重要的,因?yàn)榇藭r(shí)再用靜態(tài)路由(也就是人工計(jì)算設(shè)置路由)是根本不現(xiàn)實(shí)的。 舉例來(lái)說(shuō),即使在比較理想--即不考慮路由的變化的情況下,一個(gè)邊界網(wǎng)關(guān)協(xié)議(BGP)路由表也至少包含 100,000 條以上的表項(xiàng)。這時(shí),手工建立這樣的靜態(tài)路由是難以忍受的。很明顯,即使我們的網(wǎng)絡(luò)小于 Internet--比如一個(gè)大型公司網(wǎng)絡(luò),我們還是更加喜歡動(dòng)態(tài)路由協(xié)議。 外部網(wǎng)關(guān)協(xié)議 BGP 通常作為 Internet 的骨干使用,而其它的協(xié)議(如 OSPF)則適于小型的互連網(wǎng)絡(luò)。開(kāi)放式最短路徑優(yōu)先(OSPF)協(xié)議是一個(gè)應(yīng)用最廣的內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)。Zebra 是一個(gè)開(kāi)放源代碼程序包,通過(guò)它你可以在 Linux 上運(yùn)行 BGP 與 / 或 OSPF。 安裝 Zebra
你既可以從 Zebra.org 網(wǎng)站下載 Zebra 的最新源程序,也能從 Redhat 和 Debian 中獲得它,但不一定是最新版的。從源代碼中進(jìn)行軟件安裝,你就會(huì)發(fā)現(xiàn)使用的是一些普通的安裝過(guò)程。簡(jiǎn)介如下:
配置腳本會(huì)搜索系統(tǒng)上已經(jīng)安裝的 IP 棧并且自動(dòng)地設(shè)置成支持他們。當(dāng)前,IP 棧很可能僅僅是指 IPv4,但是 IPv6 用戶也不用擔(dān)心,因?yàn)?Zebra 也會(huì)發(fā)現(xiàn)并且支持它。 程序安裝之后,還可能必須在 /etc/services 中增加一些命令行。Zebra 的守護(hù)程序在他們自己的虛擬終端連接(VTY)下運(yùn)行,所以你的系統(tǒng)必須知道這些虛擬終端連接。這里是你應(yīng)該增加的一些連接∶
如果你已經(jīng)熟悉 Cisco IOS,那你就能在短時(shí)間內(nèi)掌握 Zebra,因?yàn)槟銜?huì)發(fā)現(xiàn)兩者極為相似。Zebra 的每個(gè)守護(hù)程序使用一個(gè)單獨(dú)的 VTY,這些 VTY 可以通過(guò)一個(gè)遠(yuǎn)程登錄會(huì)話進(jìn)行動(dòng)態(tài)配置。所以,如果你需要設(shè)置 OSPF,簡(jiǎn)單地遠(yuǎn)程登錄到該 Linux 上 2604 端口;為了修改內(nèi)核的路由表或設(shè)置路由協(xié)議間的再分發(fā),你可以遠(yuǎn)程登錄到端口 2601,該 Zebra 守護(hù)程序充當(dāng)內(nèi)核管理器,管理其他的守護(hù)程序和系統(tǒng)本身之間的通信。 現(xiàn)在介紹如何在一個(gè)服務(wù)器上創(chuàng)建和運(yùn)行 OSPF 和 BGP。Zebra 的守護(hù)程序運(yùn)用純文本文件儲(chǔ)存它們的配置。對(duì)于 OSPF/BGP 路由器,將用到三個(gè)文件∶zebra.conf、ospfd.conf 和 bgpd.conf。舉例來(lái)說(shuō),zebra.conf 文件可能會(huì)是這樣:
這里的感嘆號(hào)充當(dāng)注解標(biāo)識(shí)或分隔符。盡管存在大量不同的網(wǎng)絡(luò)接口類型(Ethernet、ISDN 等等),但只要是 Linux 內(nèi)核能夠辨認(rèn)的網(wǎng)絡(luò)接口類型,Zebra 都可以使用。 子網(wǎng)掩碼都帶有網(wǎng)絡(luò)位的位數(shù)(例如/24),默認(rèn)掩碼則不然(比如 255.255.255.0)。注意存在兩個(gè)口令,一個(gè)用于用戶模式而另一個(gè)用于特權(quán)模式。這不僅有利于向非管理員提供訪問(wèn)權(quán)限,而且對(duì)于創(chuàng)建路由服務(wù)器或者路由探測(cè)鏡也是非常重要的。所有 BGP 管理員都知道,這些探測(cè)鏡是調(diào)試路由問(wèn)題的關(guān)鍵,因?yàn)樗麄兡軌蚴鼓憔拖髲囊粋€(gè)外部 AS( AS代表自治系統(tǒng))一樣查看路由。 BGP 路由需要用到 AS 編號(hào),AS 編號(hào)是一些由 ARIN (美國(guó)互聯(lián)網(wǎng)絡(luò)號(hào)碼注冊(cè)機(jī)構(gòu))控制的注冊(cè)號(hào)碼。 下一步將啟動(dòng)一些必要的程序。用以下命令完成∶
第一個(gè)命令,啟動(dòng) zebra,該守護(hù)程序?qū)嶋H上用來(lái)更新內(nèi)核的路由表。-dk 告訴該程序作為一個(gè)守護(hù)程序運(yùn)行(d),它的大部分時(shí)間在后臺(tái)運(yùn)行。k 是另外的一個(gè)選項(xiàng),告訴 Zebra 維護(hù)所有已配置的路由。它用來(lái)保證在你測(cè)試 Zebra 的時(shí)候不會(huì)意外地刪除路由表。一般情況下,設(shè)置路由和接口,需要將 ifconfig 和 route 這兩個(gè)命令配合使用。而 Zebra 完全可以替代這種路由管理方式,使用起來(lái)更為簡(jiǎn)潔。
至此,基本的服務(wù)已經(jīng)具備,現(xiàn)在讓我們 Telnet 到本地機(jī)器的 2604 端口,開(kāi)始配置 OSPF。為進(jìn)入特權(quán)模式,鍵入 enable (正如在Cisco IOS 中一樣),然后鍵入特權(quán)模式口令。接下來(lái),用 configuration terminal 命令切換到配置模式。值得一提的是 Zebra 也能接受命令縮寫(xiě)形式,這與 Cisco 極為相似,如 configuration terminal 可以簡(jiǎn)寫(xiě)為 config t,這大大縮短了輸入時(shí)間,使用起來(lái)更為方便。另外,如果輸入 list 和 ?,它將顯示一個(gè)當(dāng)前可用命令的清單,并附有一些簡(jiǎn)略解釋。除此之外,還可以鍵入 tab 用于命令的自動(dòng)完成。這就是說(shuō),如果你想鍵入命令 clock,只要鍵入前兩個(gè)字母 cl 然后按 tab 鍵,機(jī)器就會(huì)自動(dòng)"補(bǔ)全"這條命令--前提是你鍵入的字符足以唯一地確定這條命令。這是一個(gè)很好的功能,尤其是當(dāng)你習(xí)慣于這種用法時(shí)。 接下來(lái),我們還需要告訴守護(hù)程序?qū)⑼ㄟ^(guò) OSPF 廣播哪些網(wǎng)絡(luò)以及相關(guān)的域(area)。OSPF 的可伸縮性允許它支持多個(gè)域。鍵入 router ospf 開(kāi)始配置 OSPF,然后鍵入 network 192.168.66.0/24 area 0。這告訴路由器,我們將使用 OSPF 廣播一個(gè)子網(wǎng)掩碼為 255.255.255.0 的 192.168.66.0 網(wǎng)絡(luò)。 在本例中,我們讓 eth0 接口變成一個(gè)被動(dòng)(passive)接口,以便使它不能發(fā)送路由更新。這對(duì)于實(shí)驗(yàn)是非常重要的,因?yàn)樵谀莻€(gè)方向上的其他的路由器可能監(jiān)聽(tīng)到發(fā)送的路由更新,將接口變成一個(gè)被動(dòng)(passive)接口,從而有效的避免擾亂網(wǎng)絡(luò)的正常運(yùn)行。為此,鍵入命令 passive - interface eth0。如果打算將此路由器作為工作路由器使用時(shí),就沒(méi)有這個(gè)必要了。一旦你完成修改,用 end 命令從配置模式中退出,然后用 write file 命令保存。這里是一個(gè)快照:
建立 BGP BGP 與 OSPF 的配置大致相同。開(kāi)始,打開(kāi)一個(gè)遠(yuǎn)程登錄會(huì)話到端口 2605。之后執(zhí)行 configure terminal,輸入 router bgp
這里是一個(gè)范例:
對(duì)于OSPF和BGP,有大量選項(xiàng)可用,限于篇幅不能在此一一介紹。對(duì)于每個(gè)協(xié)議,我建議在實(shí)際使用之前,不妨先研究一番。為此,可以參考 GNU Zebra 文檔,它會(huì)給你提供許多幫助。 在網(wǎng)絡(luò)中,路由通信流的方法有若干種。就路由器而論,雖然有用各種硬件可用,但是費(fèi)用較高--人們自然就會(huì)想到運(yùn)行一個(gè)用 Linux 系統(tǒng)構(gòu)筑的功能豐富的路由器作為代替。Zebra 路由守護(hù)程序已經(jīng)使這一切變?yōu)楝F(xiàn)實(shí)。因?yàn)橹С?IPv4、IPv6 和其它各式各樣的協(xié)議,所以 Zebra 能夠滿足我們所有的路由需求。它還有一個(gè)好處就是,因?yàn)?Cisco IOS 和 Zabra 極為相似,如果你以前在 Cisco IOS 環(huán)境中工作,可以輕松的過(guò)渡到 Zebra 系統(tǒng);同時(shí),使用 Zebra 也能讓你積累起豐富的類似于使用 Cisco IOS 路由器的經(jīng)驗(yàn)和知識(shí)。 作者簡(jiǎn)介: 韓波,自由撰稿人,有近十年的 C 語(yǔ)言編程經(jīng)驗(yàn),主要感興趣的領(lǐng)域?yàn)?TCP/IP 協(xié)議以及 Linux 內(nèi)核。個(gè)人認(rèn)為自由撰稿人的價(jià)值在于:在不影響問(wèn)題實(shí)質(zhì)的前提下,用一種通俗的,易于理解的方式來(lái)闡述自己的見(jiàn)解。您可以通過(guò) Email:hbzzx2001@yahoo.com.cn 與他取得聯(lián)系。 |
|
來(lái)自: todaytomo > 《網(wǎng)絡(luò)技術(shù)》