• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            isware

            Linux做一個功能完備的路由器

                摘要:本文主要介紹如何用Linux做一個功能完備的路由器,這里將主要介紹靜態(tài)路由器和動態(tài)路由器的配置,但不包括IP偽裝或者說公用一個IP地址訪問外面網(wǎng)絡(luò)等問題。其已經(jīng)不屬于本主題討論的范圍,請參考其他如防火墻的配置等的內(nèi)容。  

                LRP(Linux Router Project) 已經(jīng)成立了有好幾年的時間了。這個計劃的目的是利用Linux操作系統(tǒng)將老舊的個人電腦如486當成網(wǎng)絡(luò)的路由器使用。利用Linux低成本建立的路由器 可能引起企業(yè)界廣泛的注意。正如StoneFly Technology的系統(tǒng)整合工程師Bret Berger所說的,對無法負擔(dān)兩千(美元)思科 (Cisco)路由器的使用者來說,利用486加上幾張以太網(wǎng)卡,當成路由器使用,是另一個選擇。而對于一些小型企業(yè)、小型ISP ,甚至是政府機構(gòu),這 是一個很好的解決方案。事實上目前國內(nèi)高校很多場合正是利用了這一解決方案。  

                由于LRP計劃已經(jīng)把Linux的源代碼精簡 化,LRP軟件可以少于2MB ,同時也可以將LRP軟件放入一張軟盤內(nèi)。也就是說在沒有硬盤的情況下,LPR也可以利用軟盤,載入電腦中使用。 Virtual Design Group的軟件工程師Michael Kornegay則表示,他們已經(jīng)將Linux路由器軟件安裝在一架老舊的x86 個人電腦上,再加上兩張以太網(wǎng)卡,沒有使用硬盤的設(shè)備,只是使用軟盤啟動,便當成陽春型的路由器與防火墻使用。  

                我們在這一章 里不是教大家如何制作小于2MB的LRP軟件包,而是告訴大家如何利用Linux來獲得一個性能良好、價格低廉的路由器。利用Linux構(gòu)建路由器使用的 成本雖然便宜,可是在性能與效率上與真正的路由器相比,卻還是有一段距離。對于玩家們或是一些要求不高的使用者來說,這是一個不錯的選擇。  

            什么是路由器? 
             簡單的說:路由器的功能就是尋路――給IP包尋找正確的路徑以通往目的地。下面是比較詳細的介紹:  

            原理與作用  

                路 由器(Router)用于連接多個邏輯上分開的網(wǎng)絡(luò),所謂邏輯網(wǎng)絡(luò)是代表一個單獨的網(wǎng)絡(luò)或者一個子網(wǎng)。當數(shù)據(jù)從一個子網(wǎng)傳輸?shù)搅硪粋€子網(wǎng)時,可通過路由器 來完成。因此,路由器具有判斷網(wǎng)絡(luò)地址和選擇路徑的功能,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接,可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問方法連接各種子網(wǎng), 路由器只接受源站或其他路由器的信息,屬網(wǎng)絡(luò)層的一種互聯(lián)設(shè)備。它不關(guān)心各子網(wǎng)使用的硬件設(shè)備,但要求運行與網(wǎng)絡(luò)層協(xié)議相一致的軟件。  

                一 般說來,異種網(wǎng)絡(luò)互聯(lián)與多個子網(wǎng)互聯(lián)都應(yīng)采用路由器來完成。 路由器的主要工作就是為經(jīng)過路由器的每個數(shù)據(jù)幀尋找一條最佳傳輸路徑,并將該數(shù)據(jù)有效地傳送 到目的站點。由此可見,選擇最佳路徑的策略即路由算法是路由器的關(guān)鍵所在。為了完成這項工作,在路由器中保存著各種傳輸路徑的相關(guān)數(shù)據(jù)--路徑表 (RoutingTable),供路由選擇時使用。路徑表中保存著子網(wǎng)的標志信息、網(wǎng)上路由器的個數(shù)和下一個路由器的名字等內(nèi)容。路徑表可以是由系統(tǒng)管理 員固定設(shè)置好的,也可以由系統(tǒng)動態(tài)修改,可以由路由器自動調(diào)整,也可以由主機控制。  

            靜態(tài)路徑表  

                由系統(tǒng)管理員事先設(shè)置好固定的路徑表稱之為靜態(tài)(static)路徑表,一般是在系統(tǒng)安裝時就根據(jù)網(wǎng)絡(luò)的配置情況預(yù)先設(shè)定的,當網(wǎng)絡(luò)結(jié)構(gòu)的改變時需管理員手工改動相應(yīng)的表項。    

            動態(tài)路徑表  

                動態(tài)(Dynamic)路徑表是路由器根據(jù)網(wǎng)絡(luò)系統(tǒng)的運行情況而自動調(diào)整的路徑表。路由器根據(jù)路由選擇協(xié)議(RoutingProtocol)提供的功能,自動學(xué)習(xí)和記憶網(wǎng)絡(luò)運行情況,在需要時自動計算數(shù)據(jù)傳輸?shù)淖罴崖窂健?nbsp; 

            路由器的功能  

                (1) 協(xié)議轉(zhuǎn)換:能對網(wǎng)絡(luò)層及其以下各層的協(xié)議進行轉(zhuǎn)換。  
                (2) 路由選擇:當分組從互聯(lián)的網(wǎng)絡(luò)到達路由器時,路由器能根據(jù)分組的目的地址按某種路由策略,選擇最佳路由,將分組轉(zhuǎn)發(fā)出去,并能隨網(wǎng)絡(luò)拓撲的變化,自動調(diào)整路由表。 
               (3)能支持多種協(xié)議的路由選擇:路由器與協(xié)議有關(guān),不同的路由器有不同的路由器協(xié)議,支持不同的網(wǎng)絡(luò)層協(xié)議。如果互聯(lián)的局域網(wǎng)采用了兩種不同的協(xié)議,例如,一 種是TCP/IP協(xié)議,另一種是SPX/IPX協(xié)議(即Netware的傳輸層/網(wǎng)絡(luò)層協(xié)議),由于這兩種協(xié)議有許多不同之處,分布在互聯(lián)網(wǎng)中的TCP /IP(或SPX/IPX)主機上,只能通過TCP/IP(或SPX/IPX)路由器與其他互聯(lián)網(wǎng)中的TCP/IP(或SPX/IPX)主機通信,但不能 與同一局域網(wǎng)中的SPX/IP(或TCP/IP)主機通信。多協(xié)議路由器能支持多種協(xié)議,如IP,IPX及X.25協(xié)議,能為不同類型的協(xié)議建立和維護不 同的路由表。這樣不僅能連接同一類型的網(wǎng)絡(luò),還能用它連接不同類型的網(wǎng)絡(luò)。這種功能雖然使路由器的適應(yīng)性變強,但同時也使得路由器的整體性能降低,現(xiàn)在 IP協(xié)議在網(wǎng)絡(luò)中越來越占主導(dǎo)地位,因此在下一代路由器(如交換式路由器)只需要支持IP協(xié)議。  
                (4) 流量控制:路由器不僅具有緩沖區(qū),而且還能控制收發(fā)雙方數(shù)據(jù)流量,使兩者更加匹配。  
                (5) 分 段和組裝功能:當多個網(wǎng)絡(luò)通過路由器互聯(lián)時,各網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)分組的大小可能不相同,這就需要路由器對分組進行分段或組裝。即路由器能將接收的大分組分段 并封裝成小分組后轉(zhuǎn)發(fā),或?qū)⒔邮盏男》纸M組裝成大分組后轉(zhuǎn)發(fā)。如果路由器沒有分段組裝功能,那么整個互聯(lián)網(wǎng)就只能按照所允許的某個最短分組進行傳輸,大大 降低了其他網(wǎng)絡(luò)的效能。  
                (6) 網(wǎng)絡(luò)管理功能:路由器是連接多種網(wǎng)絡(luò)的匯集點,網(wǎng)間分組都要通過它,在這里對網(wǎng)絡(luò)中的分組、設(shè)備進行監(jiān)視和管理是比較方便的。因此,高檔路由器都配置了網(wǎng)絡(luò)管理功能,以便提高網(wǎng)絡(luò)的運行效率、可靠性和可維護行。  

                一個路由器必然有大于或者等于2的網(wǎng)絡(luò)接口,這樣它才存在路由的功能,否則,如果只有一個接口的話,也就無所謂"尋路"了!這里說的網(wǎng)絡(luò)接口不一定是物理上的接口,例如網(wǎng)卡或其他,也可以是虛擬的接口,例如隧道入口等。  

                如前面所描述的,一個路由器上運行的路由信息可以是靜態(tài)配置的,也可以是動態(tài)產(chǎn)生。前者通過手工配置完成、而后者則通過在路由器上運行跑相關(guān)路由協(xié)議的程序來根據(jù)網(wǎng)絡(luò)狀態(tài)動態(tài)改變內(nèi)核中的路由表。下面我們仔細介紹一些這兩類路由器的配置。通常,一個路由器既有靜態(tài)配置的部分,又有動態(tài)配置的部分,二者結(jié)合起來。  

            多網(wǎng)卡的設(shè)置  

            靜態(tài)路由器的配置  

                Linux下最常用的指定路由規(guī)則的命令是route,當然也有些圖形化的工具可以使用,我們下面一個一個介紹。  

            route命令的使用  

                route工具主要功能是管理Linux系統(tǒng)內(nèi)核中的路由表。它最大的用途就是用來設(shè)定靜態(tài)的路由表項,通常是在系統(tǒng)用ifconfig配置網(wǎng)絡(luò)接口(例如網(wǎng)卡等)后,用它來設(shè)定主機或者一網(wǎng)段的IP地址應(yīng)該通過什么接口發(fā)送等。  

            Route工具有復(fù)雜的調(diào)用參數(shù)。  
            調(diào)用格式如下:  

            route [-CFvnee]  

            route [-v] [-A family] add [-net|-host] target [netmask  
            Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I]  
            [reject] [mod] [dyn] [reinstate] [[dev] If]  

            route [-v] [-A family] del [-net|-host] target [gw Gw]  
            [netmask Nm] [metric N] [[dev] If]  

            route [-V] [--version] [-h] [--help]  

            主要參數(shù)說明如下:  

                -v 使用冗余輸出模式。  
                -A family   指定特定的地址族(例如"inet"、"inet6")。  
                -n 使用數(shù)字顯示的地址(例如,202.38.75.75)而不是去解釋域名。  
                -e 使用與netstat相同的輸出格式。  
                -ee 參數(shù)會產(chǎn)生很長的輸出,包括內(nèi)核路由表的幾乎所有信息。  
                -net 目標(target)是一個網(wǎng)段。  
                -host 目標(target)是一個單獨的主機。  
                -F 顯示內(nèi)核FIB路由表。結(jié)果可能被-e 和-ee參數(shù)改變。
                -C 顯示內(nèi)核中路由緩存信息。  
                del 刪除一個路由表項。  
                add 增加一個路由表項。  
                target 配置的目的網(wǎng)段或者主機。可以是IP,或者是網(wǎng)絡(luò)或主機名。  
                netmask Nm   用來指明要添加的路由表項的網(wǎng)絡(luò)掩碼。  
                gw Gw 任何通往目的(target )的IP分組都要通過這個網(wǎng)關(guān)。  
                metric M  設(shè)置路由表中該項的尺度域(metric field)為M。  
                mss M 設(shè)置TCP的最大分片長度(MSS)M bytes。  系統(tǒng)缺省值是536。  
                window W  設(shè)置TCP發(fā)送窗口的尺寸為W bytes。  
                irtt I 設(shè)置TCP的初始化回路時間(irtt)I毫秒(1-12000)。缺省情況下按照RFC 1122 規(guī)定是300ms。  
                reject 安裝一個阻塞型的路由,這樣可能會有路由查找失敗。  
                mod, dyn, reinstate  添加或者修改一個動態(tài)路由表項。主要用來測試和診斷。  
                dev If 強行使用某個特定的輸出接口(If),而不用系統(tǒng)去尋找接口。  

            下面舉幾個配置的例子:  

                route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0  
                添加一條路由表項,網(wǎng)段192.56.76.x 應(yīng)該從接口"eth0"走。  

                route add default gw mango-gw  
                添加一條缺省路由(如果沒有其他匹配的路由項,就使用這個路由規(guī)則)。"mango-gw"是一個主機名, 而通往這個主機的路由規(guī)則應(yīng)該事先已經(jīng)設(shè)置好了。  

                route add ipx4 sl0  
                給主機"ipx4"添加一條路由規(guī)則,使用SLIP接口sl0。  

            Route命令的輸出結(jié)果  
            輸出的格式有以下幾欄:  

                Destination  目標網(wǎng)段或者主機。  
                Gateway  網(wǎng)關(guān)地址,如果沒有設(shè)置,則是"*"表示。  
                Genmask  網(wǎng)絡(luò)掩碼。  
                Flags 一些可能的標記如下:  
                 U (路由是活動的)  
                 H (目標是一個主機)  
                 G (使用網(wǎng)關(guān)(gateway))  
                 R (reinstate route 動態(tài)路由產(chǎn)生的表項)  
                 D (dynamically installed by daemon or redirect)  
                 M (modified from routing daemon or rederict)  
                 ! (reject route)  
                Metric 路由距離。  
                Ref 路由項引用次數(shù)。(linux內(nèi)核中沒有使用)  
                Use 查找路由項的次數(shù)。.  
                Iface 該路由表項對應(yīng)的輸出接口。  
                MSS 缺省的TCP最大分片尺寸。  
                Window 缺省的TCP窗口的尺寸。  
                irtt 缺省的TCP回路時間。  
                HH (cached only)  
                ARP入口的數(shù)目。  
                Arp (cached only)  該路由項對應(yīng)的物理地址是否過期等信息。  

            下面是route -n的輸出實例:  

            tarn:~$ /sbin/route -n  
            Kernel IP routing table  
            Destination Gateway Genmask Flags Metric Ref Use Iface  
            202.38.64.3 202.38.75.62 255.255.255.255 UGH 0 0 0 eth0  
            202.38.75.75 0.0.0.0 255.255.255.255 UH 0 0 0 eth2  
            202.38.75.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0  
            192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2  
            192.168.75.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1  
            159.226.0.0 202.38.75.62 255.255.0.0 UG 0 0 0 eth0  
            127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo  
            0.0.0.0 202.38.75.62 0.0.0.0 UG 1 0 0 eth0  

                上面的輸出中我們可以看出,該路由器配置的缺省網(wǎng)關(guān)是202.38.75.62,它上面有3個以太網(wǎng)接口(eth0、eth1和eth2)。其中第一條和第二條路由規(guī)則是針對一個主機的,其他的都是針對一個網(wǎng)段的,這可以重掩碼看出。  

            動態(tài)路由器的配置 

            基本原理介紹 

            先解釋一下什么是動態(tài)路由。 

                從 前面的描述中我們可以看到,路由器的基本功能就是為IP分組尋找到達目的地址的路徑。我們前一節(jié)介紹的是人工手動靜態(tài)配置路由規(guī)則,也就是人為的設(shè)定尋路 方式。但是因特網(wǎng)是個龐大的系統(tǒng),上面跑的網(wǎng)絡(luò)結(jié)構(gòu)負責(zé),而且拓撲結(jié)構(gòu)也在隨時改變,這樣在某些復(fù)雜的范圍里我們的靜態(tài)配置就不一定能獲得最佳的尋路路徑 了。而且一旦網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生改變,我們手動的靜態(tài)配置也往往無法及時跟著改變。在這個背景下,產(chǎn)生了動態(tài)路由配置的概念,也就是動態(tài)路由器。 

                動 態(tài)路由器上的路由表項是通過相互連接的路由器之間交換彼此信息,然后按照一定的算法優(yōu)化出來的,而這些路由信息是在一定時間間隙里不斷更新,以適應(yīng)不斷變 化的網(wǎng)絡(luò),以隨時獲得最優(yōu)的尋路效果。為了實現(xiàn)IP分組的高效尋路,IETF制定了多種尋路協(xié)議。其中用于自治系統(tǒng) (AS:Autonomous System)內(nèi)部網(wǎng)關(guān)協(xié)議有開放式最短路徑優(yōu)先(OSPF:Open Shortest Path First)協(xié)議和 尋路信息協(xié)議(RIP:Routing Information Protocol)。所謂自治系統(tǒng)是指在同一實體(如學(xué)校、企業(yè)或ISP)管理下的主 機、路由器及其他網(wǎng)絡(luò)設(shè)備的集合。還有用于自治域系統(tǒng)之間的外部網(wǎng)絡(luò)路由協(xié)議BGP-4等。 

                運行這些路由協(xié)議的軟件就是我們通 常說的路由軟件,Linux下常見的路由軟件有g(shù)ated和zebra,。前者既有GPL版本的發(fā)行,又有收費的版本;而后者則是日本某組織開發(fā)的完全 GPL的高效的路由軟件。Linux的發(fā)行里面一般都缺省就有g(shù)ated這個軟件,我們下面主要介紹它的配置和使用方法。 

            路由協(xié)議的介紹 

            我們這里介紹一下RIP協(xié)議。 

                RIP 是Routing Information Protocol的縮寫,直接翻譯就是"路由信息協(xié)議"。RIP計算路由時使用了"距離向量 (distance vector)"算法,因此,它也被稱作"距離向量尋路協(xié)議 (distance vector routing protocol)。 

                RIP的特點是路由器間定時地交換網(wǎng)絡(luò)的整體知識, 并且只和相鄰路由器交換這種知識。換句話說,路由器只和相鄰路由器共享網(wǎng)絡(luò)信息。路由器一旦從相鄰路由器獲取了新的知識,就將其追加到自己的數(shù)據(jù)庫中,并 將該信息傳遞給所有的相鄰的路由器。相鄰路由器做同樣的操作,經(jīng)過若干次傳遞,使自治系統(tǒng)內(nèi)的所有路由器都能獲得完整的路由信息。 

                RIP 報文用UDP數(shù)據(jù)報來傳送。為了區(qū)別于其他的UDP應(yīng)用,規(guī)定RIPng的公認專用UDP端口號為521。主動尋路更新報文的源/目的的端口都是 RIPng端口,應(yīng)答的更新報文送往發(fā)起請求的端口。應(yīng)當注意,IPv4中RIP使用的端口號是520,與RIPng的有所不同。 

                定時器愛RIP中有著比較重要的作用。在RIP中為支持尋路操作使用了三個不同的定時器。 

                第 一個是啟動定時進行RIP更新操作的定時器。此定時器通常設(shè)置成30秒。在RIP標準中對其進一步加以限制,它要求路由器對更新報文的發(fā)送間隔采用隨機 數(shù),將RIP更新報文的間隔選取在25秒到35秒之間。其目的是為了避免網(wǎng)絡(luò)上所有的路由器以相同的定時發(fā)送更新報文,大量的業(yè)務(wù)量壓迫網(wǎng)絡(luò)造成沖突。利 用隨機間隔可均衡業(yè)務(wù)量,從而減少路由器的沖突。 

                RIP在避免沖突方面還有一點需要注意,在觸發(fā)更新中不論何時發(fā)送了報文,不 對30秒定時器復(fù)位。如果復(fù)位,多個路由器的更新報文的發(fā)送間隔就會發(fā)生沖突。這是由于所有的路由器在發(fā)送觸發(fā)更新后同時啟動定時器造成的。如不對該定時 器復(fù)位,即使與在數(shù)秒前剛廣播的觸發(fā)更新報文的內(nèi)容完全一樣,定時的更新報文也照發(fā)不誤。 

                RIP使用的第二個定時器時期滿 (expiration)定時器。路由器只要收到通往特定信宿的路由,就對通往該信宿的期滿定時器初始化。期滿定時器雖然被設(shè)定為180秒,但在穩(wěn)定的網(wǎng) 絡(luò)中總是每隔30秒被初始化。當網(wǎng)絡(luò)不穩(wěn)定時,此定時器的時間區(qū)間表示該路由無效。 

                RIP最后一個定時器時垃圾收集 (garbage collection)定時器。路由器對無效路由打上尺度為無窮大的無效標記并將垃圾收集定時器置位。此時,定時器在120秒的區(qū)間內(nèi) 工作。在該期間內(nèi)路由器將尺度費用置成無窮大的同時,繼續(xù)公布該信宿。以這種方法公布路由,相鄰路由表就能迅速從尋路表中刪除該路由。 

            RIP協(xié)議也有它的缺陷: 

                網(wǎng)絡(luò)直徑較小 

                RIP將尺度(即費用)無窮大定義為16,這一定義對使用RIP的所有網(wǎng)絡(luò)的規(guī)模作出了嚴格的限制。因尺度必須是整數(shù),故網(wǎng)絡(luò)的費用至少為1。在基于RIP的Internet中,所有的系統(tǒng)距其他任何系統(tǒng)不能超過15個網(wǎng)絡(luò)。這一大小被稱作網(wǎng)絡(luò)直徑。 

                這 一限制對管理員分配費用的靈活性是一個很大的制約。管理員分配費用最直接的方法是對各個網(wǎng)絡(luò)的費用都設(shè)成1。但是,在這種分配方式下,RIP就會選擇費用 最小的路徑,而不管該路徑上的信道容量的大小。因此會舍棄"較長"的高速路徑而通過低效的"較短"路徑傳送數(shù)據(jù)。為了避免這種情況的發(fā)生,管理員可將大于 1的費用分配給低效鏈路,人為地提高其費用。其結(jié)果是最大網(wǎng)絡(luò)直徑隨之變小,進一步限制了RIP的網(wǎng)絡(luò)規(guī)模。 

                對網(wǎng)絡(luò)變化的反應(yīng)較慢 

                RIP網(wǎng)絡(luò)中的路由器從路由失效到將其識別出來要等待180秒,而在OSPF中典型值是1~2秒。 

                不支持組播 

                在RIP中沒有公布組成員信息的方法,因此不支持組播尋路。為實現(xiàn)組播尋路需和其他協(xié)議并用。
            gated的配置 

                gated支持RIP、OSPF、IS-IS等路由協(xié)議。我們這里著重介紹RIP協(xié)議的配置方法,其他協(xié)議的配置大家可以針對協(xié)議本身然后參考相關(guān)幫助文檔做類似的配置就可以。 

                首先修改/etc/sysconfig/network文件,使得FORWARD_IPV4=yes。然后在/etc/目錄下創(chuàng)建文件名為gated.conf的文件,里面就是需要填寫的配置信息。RIP協(xié)議的配置語法如下: 

            rip yes | no | on | off [ { 
            broadcast ; 
            nobroadcast ; 
            nocheckzero ; 
            preference preference; 
            defaultmetric metric ; 
            query authentication [none | [[simple|md5] password]] ; 
            interface interface_list 
            [noripin] | [ripin] 
            [noripout] | [ripout] 
            [metricin metric] 
            [metricout metric] 
            [version 1]|[version 2 [multicast|broadcast]] 
            [[secondary] authentication [none | [[simple|md5] password]] ; 
            trustedgateways gateway_list ; 
            sourcegateways gateway_list ; 
            traceoptions trace_options ; 
            } ] ; 

                上面的配置語法用來啟動或者禁止RIP協(xié)議的運行,并對RIP協(xié)議某些參數(shù)進行設(shè)置。各參數(shù)的含義如下: 

            broadcast 指明RIP分組將被廣播。當廣播靜態(tài)路由或者由其他協(xié)議產(chǎn)生的RIP路由項時,這很有用。 
            nobroadcast 指明當然的接口上不廣播RIP分組。 
            nocheckzero 指明RIP不處理RIP分組中的保留域。通常RIP將拒絕保留域為非零的分組。 
            preference preference 設(shè)置RIP路由的preference,其缺省值是100,這個值可以被其他的給定的策略重寫。 
            metric metric 定義當使用RIP廣告由其他路由協(xié)議獲得的路由信息時使用的尺度(metric)。其缺省值為16(不可達)。 
            query authentication [none | [[simple|md5] password]] ; 設(shè)定身份認證密碼。缺省是無需認證。 
            interface interface_list 針對某特定的接口進行參數(shù)設(shè)定。 
              可以有的參數(shù)如下: 
              noripin 指定該接口商接收的RIP分組無效。 
              ripin 這是缺省的參數(shù)。與noripin相反。 
              noripout 被指定的接口上將無RIP分組發(fā)出。缺省值是在所有的廣播和非廣播的接口商發(fā)送送RIP分組。 
              ripout 這是缺省值。與noripout的含義相反。 
              metricin metric 指定在新添加的路由表項加入內(nèi)核路由表以前增加的尺度(metric)。缺省值是1。 
              metricout metric 指定通過特定的接口發(fā)出的RIP前,對尺度的增加值。缺省值是0。 
              version 1 指定發(fā)送第一個版本的RIP協(xié)議的分組。缺省值是這個。 
              version 2 在指定的接口商發(fā)送第二個版本的RIP協(xié)議分組。如果IP組播可以使用,則缺省發(fā)送完全第二版本的分組,如果不支持組播,則使用與第一版本兼容的第二版本的RIP分組。 
              multicast 指明在特定接口上的第二版本的RIP分組使用組播發(fā)送。 
              broadcast 指明在特定的接口上使用廣播來發(fā)送與第一版本兼容的第二版本的RIP分組,即使該接口支持組播。 

            [secondary] authentication [none | [simple|md5] password] 定義身份認證的方式。只對第二版本的RIP協(xié)議有用。缺省是無身份認證。 
            trustedgateways gateway_list 定義RIP接收RIP更新分組的網(wǎng)關(guān)。gateway_list 是一個簡單的主機名或者IP地址的列表。缺省情況下,在共享網(wǎng)絡(luò)上的所有的路由器都被認為支持提供RIP更新信息。 
            sourcegateways gateway_list 定義RIP直接發(fā)送分組的路由器列表,而不通過組播或者廣播。 
            traceoptions trace_options 設(shè)置RIP跟蹤選項。詳細設(shè)置略。 

            下面是些配置示例: 
            配置1: 



            # This configuration runs RIP in quiet mode, it only listens to 
            # packets, no matter how many interfaces are configured. 


            rip yes { 
            nobroadcast ; 
            } ; 

            配置2: 

            # This configuration emulates routed. It runs RIP and only sends 
            # updates if there are more than one interfaces up and IP forwarding is 
            # enabled in the kernel. 

            # NOTE that RIP *will not* run if UDP checksums are disabled in 
            # the kernel. 


            rip yes ; 

            zebra介紹 

                這 是日本人寫的以GNU版權(quán)方式發(fā)布的軟件,開始于1996年,主要的功能是實現(xiàn)了 RIPv1,RIPv2,RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+路由協(xié)議,目前是0.87版,目前支持 Linux和FreeBSD,將來會支持Solaris 7和GNU Hurd。 

                其中 RIPv1, RIPv2, OSPFv2是用于IPv4的自治域系統(tǒng)內(nèi)部網(wǎng)絡(luò)路由協(xié)議,最好的是OSPF,他支持VLSM(變長子網(wǎng)掩碼)、收斂快,能 根據(jù)鏈路的負載等動態(tài)調(diào)整路由,是目前最好的所有廠商都支持的內(nèi)部路由協(xié)議。跟他差不多(也許還要好)的是cisco專有的EIGRP. 

                BGP- 4是用于自治域系統(tǒng)之間的外部網(wǎng)絡(luò)路由協(xié)議,也是目前Internet主干上目前使用的協(xié)議,非常的靈活。在國外用的非常普遍,如果一個網(wǎng)絡(luò)有兩個以上出 口(連接兩個ISP)極大的可能會用他。但是在國內(nèi)好象很少使用,這也跟國內(nèi)的網(wǎng)絡(luò)比較封閉有關(guān)。假如我們跟CSTNET和CETNET使用BGP-4的 話,只要這兩個出口一個是通的,我們對外的連接不會中斷超過1分鐘。 

                RIPng OSPFv3, BGP-4+主要擴展了對ipv6的支持。 

                這個軟件配置的很多方面跟cisco的IOS配置幾乎完全相同,我們完全可以拿一臺PC機來完成一些必須用昂貴的CISCO路由器才能完成的比較復(fù)雜的路由協(xié)議處理控制功能。 

                GNU Zebra可以到www.zebra.org去找。 

            路由器上的策略控制:IP帶寬管理(QoS) 

            為什么要管理帶寬? 

                因 特網(wǎng)的成功主要因素是IP(Internet Protocol)協(xié)議族的簡單和穩(wěn)健。現(xiàn)在幾乎所有的人都在向IP靠攏,甚至傳統(tǒng)的電訊公司也在將它們的 基于電路交換的語音網(wǎng)絡(luò)向IP網(wǎng)絡(luò)轉(zhuǎn)。然而基于IP協(xié)議的因特網(wǎng)這時候就遇到了一個非常大的困難。它不相ATM協(xié)議,它是平等地對待任何業(yè)務(wù),也就是說所 有的通過IP網(wǎng)絡(luò)的數(shù)據(jù)都被平等地盡可能好的傳送(稱:盡力型服務(wù))。如果我愿意多付1倍的錢,我也不能讓我的主頁下載的速度提高一倍。這時候就引入了 QoS概念,也就是服務(wù)質(zhì)量保證。這種情況下,平等對待所有IP業(yè)務(wù)數(shù)據(jù)的方法就要被放棄,而試圖區(qū)分不同的用戶或業(yè)務(wù),然后分配不同的帶寬。這就是路由 器上的帶寬的分配和管理。 

                這些年來,不同的技術(shù)發(fā)展很 快,IETF(Internet Engineering Task Force)已經(jīng)發(fā)布了幾種標準,包括:綜合服務(wù)、區(qū)分服務(wù)、資源預(yù)留技術(shù)。這些標 準都在Linux下有了實現(xiàn)。但它們的使用是個綜合的問題,需要網(wǎng)絡(luò)其他路由器的配合(例如資源預(yù)留),所以當前在實踐中使用不是很廣,但隨著因特網(wǎng)業(yè)務(wù) 的不斷增加,它們會逐漸越來越多的被大家使用的。 

                Linux內(nèi)核2.1.x及后續(xù)版本里面主要是引入了traffic control代碼,來實現(xiàn)IP帶寬的分配和管理。 

            TC的特點 

                TC 是Traffic Control的縮寫,中文意思即為"流量控制"。TC有很大的伸縮性。作為一個提供虛擬主機服務(wù)的ISP來說,它可以利用Linux 的流量控制來給不同的客戶不供的服務(wù)質(zhì)量保證。傳統(tǒng)的出售虛擬主機或者提供主頁存放服務(wù)的ISP通常是提供不同的磁盤空間來作為不同檔次的服務(wù),例如一個 月100元可以獲得100M的空間。如果使用Linux的流量控制(TC),我們就可以多提供一種有區(qū)分的不同的服務(wù),例如你是一個提供虛擬主機服務(wù)的 ISP,你可以有如下多的不同的服務(wù)選擇: 
                · 服務(wù)水平1: 花費¥100/月――瀏覽者獲得250Kbps的瀏覽頁面速度。 
                · 服務(wù)水平2: 花費¥150/月--250Kbps,但是如果帶寬允許的話在午夜0點 到臨晨6點之間可以達到1Mbps。 
                · 服務(wù)水平3: 花費¥200/月--250Kbps, 但是如果帶寬允許的話可以最大達到1Mbps,不限制時間(與服務(wù)水平2區(qū)別之處)。 
                · 服務(wù)水平4:花費¥500/月--提供1Mbps的高速的帶寬保證。適合視頻和音頻流的服務(wù)。 

                由上面的例子,我們可以利用TC很方便的指定各種有控制的服務(wù)規(guī)則。上面提到的每天不同時段提供不同的服務(wù),我們可以很容易的用crontab來定時運行一些腳本去改變帶寬分配規(guī)則來達到。這是一個比較好的例子,我們在后面將介紹一個實例。 

            TC的使用實例說明 

                下面我們提供一個利用TC來實現(xiàn)對在一個Linux服務(wù)器上的兩個虛擬主機實行不同的帶寬策略的例子。在該例中,我們將講述如何配置和測試TC。 

            編譯內(nèi)核 
                至于如何編譯一個新的內(nèi)核已經(jīng)不屬于本章節(jié)討論的范圍,我們假設(shè)你已經(jīng)知道如何重新編譯一個內(nèi)核。 
                編譯內(nèi)核時將以下幾個內(nèi)核選項選中:"kernel/User netlink socket"和"Netlink device emulation"。這樣TC就可以利用netlink來與內(nèi)核傳送信息。同時將所有的排隊算法選上,位于包括 

            "Fair queueing" 
            "CBQ packet scheduler" 
            "CSZ packet scheduler" 
            "the simples PRIO pseudoscheduler" 
            "RED queue" 
            "SFQ queue" 
            "TBF queue" 
            "QoS support" 
            "rate estimator" 
            "packet classifier API" 
            "routing-tables-based classifier" 
            "U32 classifier" 
            "special RSVP classifier and special RSVP classifier for IPv6"。 

                選中這些選項以后,按正常的編譯內(nèi)核步驟編譯內(nèi)核,然后安裝新內(nèi)核,并用新內(nèi)核重新啟動系統(tǒng)。 

            編譯TC軟件包 

                可以在下面的地址下載到我們需要的軟件,然后按照軟件包里的說明編譯它: 
            ftp://linux.wauug.org/pub/net/ip-routing/iproute2-current.tar.gz 通常我們要做的只是簡單的輸入make就可以了。 

            TC 的設(shè)定 

            圖1. CBQ 樹圖 
                圖 一是我們將配置的一個系統(tǒng)的簡單的樹形圖示范。兩個葉子節(jié)點從父節(jié)點分配帶寬,IP地址10.0.0.10(標識符1:1)和地址10.0.0.11(標 識符1:2)是接口eth0上的IP別名,它們共同分享父節(jié)點(標識符1:0)的帶寬。這個例子里面只涉及到了對一個接口上的流量控制,大家可以仿照這個 例子構(gòu)造自己感興趣的控制多個接口設(shè)備的配置。 
                配置QoS特性的第一步就是將qdisc加入到一個接口上,例如本例子: 
                qdisc add dev eth0 root handle 1: ... 

                然后定義你需要區(qū)別的類別。不同的類別對應(yīng)不同的流量控制類型。我們的例子中,使用如下的語句: 

                tc class add dev eth0 parent 1:0 classid X:Y ... 

                我 們的例子中只使用了一層深的類別樹。當然,我們可以構(gòu)造多層深度的復(fù)雜的樹,基本的原則是一樣的:就是一個子節(jié)點(如圖1所示)繼承一個父節(jié)點的資源同時 進一步根據(jù)類的定義去分配父節(jié)點的資源。例如,父類1:0擁有該設(shè)備的全部帶寬,那么子節(jié)點1:1不可能獲得超過10Mbits的帶寬,當然本例子中是限 制為1Mbps。 
                最后定義"IP分組--類別"的映射規(guī)則,用來告訴系統(tǒng)的分類器,經(jīng)過路由器調(diào)度的某IP分組該對應(yīng)什么類型。首先,將一個分類器與輸出接口關(guān)聯(lián)起來: 

                filter add dev eth0 parent 1:0 protocol ip ... 

                然后,定義"IP分組--類別"的映射規(guī)則。本例子中,將利用IP分組的源地址來作為分類的關(guān)鍵詞。 下面的腳本完成了這個功能。關(guān)于腳本中TC等命令的參數(shù),大家可以參考隨機的文檔,這里限于篇幅,不做介紹了。 

            #! /bin/sh 
            #path to tc and the ip utilities; 
            #change to reflect yours. 
            TC=./iproute2/tc/tc 
            IP=./iproute2/ip/ip 
            ################################################## 
            #Addresses to be aliased 
            #change or add more to reflect yours 

            ALIAS1=10.0.0.10 
            ALIAS2=10.0.0.11 
            ################################################## 
            # add ip aliasing support 
            #uncomment if you want to use the ip utility to 
            #add ip-aliasing for you 

            #$IP addr add $ALIAS1 dev eth0 
            #$IP addr add $ALIAS2 dev eth0 
            ################################################## 
            # Attaching a device queue discipline to an 
            # interface a device queue discipline is 
            # equivalent almost to a device manager 

            #Attach CBQ to eth0 
            #Things you might need to change: 
            # bandwidth -- the bandwidth of the eth0 device 
            # note it must match the devices real bandwidth 
            # allot -- it is safe to leave it at the MTU of 
            # the device 
            # avpkt -- the average packet size that you 
            # suspect will be seen safe to leave at 1000 
            # for Ethernet with MTU of 1514 bytes 
            # mpu -- minimum packet size 

            $TC qdisc add dev eth0 root handle 1: cbq 
            bandwidth 10Mbit allot 1514 cell 8 avpkt 1000 
            mpu 64 
            ################################################## 
            # Attaching class queue disciplines 
            # bounded -- it is bound to the rate allocated; 
            # can borrow even if there is a lot of idle 
            # bandwidth just sitting there isolated -- cannot 
            # share its bandwidth to other classes prio is the 
            # priority assigned 0 being the highest and 7 the 
            # lowest weight -- safer to leave at 1 
            # queue discipline setup. Classid 1:1 will have a 
            # rate of 1Mbps which is bounded. 

            $TC class add dev eth0 parent 1:0 classid 1:1 cbq 
            bandwidth 10Mbit rate 1Mbit avpkt 1000 prio 5 
            bounded isolated allot 1514 weight 1 maxburst 21 
            #rate 1Mbit avpkt 1000 prio 5 bounded allot 1514 
            #weight 1 maxburst 21 
            # Classid 1:2 will have a rate of 3Mbps which is 
            # bounded. 
            $TC class add dev eth0 parent 1:0 classid 1:2 cbq 
            bandwidth 10Mbit rate 3Mbit avpkt 1000 prio 5 
            bounded allot 1514 weight 1 maxburst 21 
            ################################################## 
            # Define the filter to be attached to eth0 
            # Create with hash table of 256 slots with ID 1: 

            $TC filter add dev eth0 parent 1:0 protocol ip 
            prio 5 handle 1: u32 divisor 256 
            ################################################## 
            # define the criteria for mapping incoming packets 
            # to classes. Add to the 5th slot of hash table a 
            # rule to select virtual address ALIAS1 direct it 
            # to class 1:1 

            $TC filter add dev eth0 parent 1:0 prio 5 u32 
            ht 1:6: match ip src $ALIAS1 flowid 1:1 
            # Add to 6th slot of hash table rule to select 
            # ALIAS2 direct it to class 1:2 
            $TC filter add dev eth0 parent 1:0 prio 5 u32 
            ht 1:6: match ip src $ALIAS2 flowid 1:2 
            ## Lookup hash table, if it is not fragmented 
            ## frame. Use protocol as hash key 

            $TC filter add dev eth0 parent 1:0 prio 5 handle 
            ::1 u32 ht 800:: match ip nofrag 
            offset mask 0x0F00 shift 6 
            hashkey mask 0x00ff0000 at 8 link 1: 

            #some more examples of how to use u32 
            # Add to 4th slot of hash table rule to select 
            # tcp/telnet to 193.233.7.75 direct it to class 
            # 1:4 and prescribe to fall to best effort, 
            # if traffic violates TBF (32kbit,5K) 
            #$TC filter add dev eth1 parent 1:0 prio 5 u32 
            # ht 1:4: match ip dst 193.233.7.75 
            # match tcp dst 0x17 0xffff 
            # flowid 1:4 
            # police rate 32kbit buffer 5kb/8 mpu 64 
            # mtu 1514 index 1 
            ## Add to 1st slot of hash table rule to select 
            ## icmp to 193.233.7.75 direct it to class 1:3 
            ## and prescribe to fall to best effort, 
            ## if traffic violate TBF (10kbit,5K) 
            #$TC filter add dev eth1 parent 1:0 prio 5 u32 
            # ht 1:4: match ip dst 193.233.7.75 
            # match tcp dst 0x17 0xffff 
            # flowid 1:4 
            # police rate 32kbit buffer 5kb/8 mpu 64 
            # mtu 1514 index 1 
            ## Add to 1st slot of hash table rule to select 
            ## icmp to 193.233.7.75 direct it to class 1:3 
            ## and prescribe to fall to best effort, 
            ## if traffic violate TBF (10kbit,5K) 
            #$TC filter add dev eth1 parent 1:0 prio 5 u32 
            # ht 1:: sample ip protocol 1 0xff 
            # match ip dst 193.233.7.75 flowid 1:3 
            # police rate 10kbit buffer 5kb/8 mpu 64 
            # mtu 1514 index 2 
            ################################################## 
            #Look at all that we created: 

            echo "---- qdisc parameters ----------" 
            $TC qdisc ls dev eth0 
            echo "---- Class parameters ----------" 
            $TC class ls dev eth0 
            echo "---- filter parameters ----------" 
            $TC filter ls dev eth0 

            測試 

                我們的例子當中,是有在同一個Linux服務(wù)器上有兩個虛擬WWW服務(wù)器,我們的設(shè)定是采用了IP別名,將兩個地址同時綁在一個接口上。我們可以用ftp來 測試。首先用ftp連接10.0.0.10服務(wù)器,我們可以獲得大概1Mbps的速率;然后ftp另外的地址10.0.0.11,我們可以獲得大概 3Mbps的速率。

            posted on 2011-06-01 14:44 艾斯維亞 閱讀(713) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲国产综合久久天堂| 一本色道久久综合狠狠躁| 久久国产视频99电影| 四虎亚洲国产成人久久精品| 久久久久国产精品嫩草影院| 2022年国产精品久久久久| 国产L精品国产亚洲区久久| 成人综合久久精品色婷婷| 欧美日韩精品久久久免费观看| 久久精品国产精品亚洲精品| 久久99精品久久久久久| 久久无码专区国产精品发布| 久久综合中文字幕| av无码久久久久不卡免费网站| 模特私拍国产精品久久| 青青草国产精品久久| 久久无码人妻一区二区三区午夜| 久久久无码精品午夜| 精品久久久久久久| 久久久久久九九99精品| 2021久久精品免费观看| 久久九九久精品国产免费直播| 国产精品美女久久久久网| 欧美一区二区三区久久综合| 综合久久一区二区三区 | 97久久超碰国产精品2021| 久久青青草视频| 久久精品国产亚洲AV影院| 亚洲美日韩Av中文字幕无码久久久妻妇 | 精品无码人妻久久久久久| 日本久久久精品中文字幕| 91精品国产综合久久精品| 亚洲AV日韩AV永久无码久久| 伊人久久大香线蕉av不卡| 久久久国产视频| 久久精品一本到99热免费| 久久精品卫校国产小美女| 久久丫忘忧草产品| 亚洲va久久久噜噜噜久久天堂| 久久永久免费人妻精品下载| 91视频国产91久久久|