對于網絡互聯工程師們來說,建立一個互聯網動態路由是非常重要的。這不僅需要了解路由的概念,而且還必須知道如何付諸實踐。就目前而言,網絡設備主要由Cisco這樣的大公司來提供。大多數獨立的路由開發者們經常受到學校或實驗室環境的制約,無法充分利用現有的資源。而利用Cisco技術設備打造網絡需要大量的成本。為了打破這種局面,我們利用一個小型的實驗網絡,應用路由信息協議(Rip)和開放式最短路徑優先(OSPF)兩種技術,展示各自不同的平衡加載方案。 
在我們使用的三個路由器中,有一個是利用linux技術模擬的。最初,我們試圖利用傳統的路由和選通無交互后臺程序來組建測試網絡,但很快發現這種方法設置起來十分復雜而且功能有限。最后,我們決定找一個更先進的方法建立測試網絡,幸運的是我們找到了Zebra。 
什么是Zebra 
Zebra是一種TCP/IP路由軟件,它支持BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2和RIPng。它符合GNU的GPL標準,可以運行在Linux和其它Unix變體系統上。Zebra是最先進的路由軟件之一,最新版本可以從GUN Zebra Web站點上下載。 
最早的Zebra套件是由Kunihiro Ishiguro和Yoshinari Yoshikawa在1996年開發的。目前,Zebra套件主要由IP Infusion公司負責維護,軟件的創始人之一Ishiguro是公司的CTO。 
Zebra可以利用模塊法對各種協議進行治理,這種設計是獨一無二的。它可以根據網絡的需要激活或者停止協議。到目前為止,我們發現Zebra最有用的地方在于它與Cisco IOS設置格式十分相近。盡管它與IOS之間存在著一些差異,但是那些熟悉IOS的網絡工程師們會很快適應Zebra網絡環境的。目前,Zebra 1.0還沒有推出,最新的版本是Zebra 0.93b,它對于一個小型網絡已經足夠了。 
Zebra的安裝 
我們選擇了性能穩定的ThinkPad X20作為Zebra的硬件測試平臺,Red Hat Linux 9作為其軟件測試平臺。ThinkPad X20擁有一個內置的以太網接口。為了使其能充當路由器使用,我們為它增加了一個PCMCIA以太網卡。在安裝Zebra前,首先要確定所有的網卡都能被Linux系統識別。 
Red Hat 9中已經集成了Zebra 0.93b的RPM。當然,你也可以從網上下載Zebra 軟件。為了方便起見,我們決定安裝 Zebra 0.93b RPM。Zebra RPM的安裝過程與其它軟件基本相同。安裝的項目包括二進制設置命令、小型程序、配置文件以及必需項目菜單、實例和文檔等。 
Zebra的基本設置 
Zebra無后臺交互程序是實實在在的路由治理程序。它控制著其它的軟件模塊,同時還提供與客戶交互的主端口。Zebra RPM套件中包括一個完整的參考設置文件。但是,我們只需要建立一個包括以下內容的/etc/zebra/zebra.conf文件就可以對Zebra進行設置了。 
最簡單的Zebra設置文件: 
無論何時,當你進入交互式設置模式時,Hostname指令將指定路由器的名稱。該名稱可以任意設置,不一定和主機的名稱相符。Password指令則確定交互式Zebra終端的登陸密碼。 
/etc/zebra/zebra.conf建立后,我們可以執行下列指令來啟動zebra無后臺交互程序: 
現在我們可以通過連接機器的2601端口進入Zebra交互對話模式。 
Zebra對話模式實例: 
            
我們很輕易就能對此了如指掌,因為可以通過點擊屏幕上的?鍵隨時了解某一命令的含義。假如有過配置Cisco路由器的經驗,相信對這一設置過程并不生疏。 
到目前為止,我們只完成了Zebra自身的設置和運行,對各種協議的設置還沒有開始,假如你預備好了,就讓我們繼續吧。 
設置和使用MRLG 
MRLG(Multi-Router Looking Glass)是EnterZone公司John Frazier編寫的一種網基工具。它可以用來顯示可被Zebra識別的接口和路徑。MRLG實際上只是一個由有限命令組成的Zebra指定命令行處理程序的Web接口。但是我們在測試過程中,發現它可以快速顯示路徑。這一點對于網絡協議來說十分重要,因此,在設置協議前要先安裝MRLG。 
MRLG需要Net::Telnet Per套件才能與Zebra指定命令行處理程序進行通信。不幸的是我們在Red Hat 9 中無法找到Net::Telnet Per套件,因此只有在網上下載了。 
由于MRLG是作為一個CGI應用程序來運行的,因此我們還需要安裝一個網絡服務器軟件。用戶可以作用Red Hat 9中集成的HTTPD RPM。 
我們將/usr/share/doc/zebra-0.93b/tools中的mrlg.cgi文件復制到/var/www/cgi-bin中,然后再對mrlg.cgi的第36行進行修改,由$url="http://www.sample.com/mrlg.cgi";改為$url=http://127.0.0.1/cgi-bin/mrlg.cgi。另外,我們還要對168到174行間的指令塊進行修改,修改后的指令塊如下: 
最后,要連接MRLG,還要將瀏覽器中的地址欄中輸入http://127.0.0.1/cgi-bin/mrlg.cgi.,結果如圖1所示。 
 
 
實驗室配置 
我們的實驗室配置包括2臺Cisco 3620路由器和一臺ThinkPad X20。ThinkPad X20除了具備內置以太網端口,還裝有一個Home-and-Away PCMCIA以太網卡。兩臺Cisco 3620路由器之間的通信主要靠串口連接來實現,它們與ThinkPad X20的連接則是靠以太網來實現的,總體架構如圖2所示。 
 
 # modprobe dummy# ifconfig dummy0 
User Access VerificationPassword: zebraspeedmetal> enablePassword: zebraspeedmetal# configure terminalspeedmetal(config)# interface eth0speedmetal(config-if)# ip address 192.168.2.1/30speedmetal(config-if)# quitspeedmetal(config)# interface eth1speedmetal(config-if)# ip address 192.168.1.1/30speedmetal(config-if)# quitspeedmetal(config)# interface dummy0speedmetal(config-if)# ip address 10.0.2.1/24speedmetal(config-if)# writeConfiguration saved to /etc/zebra/zebra.confspeedmetal(config-if)# endspeedmetal# show runCurrent configuration:!hostname speedmetalpassword zebraenable password zebra!interface lo!interface eth0 ip address 192.168.2.1/30!interface dummy0 ip address 10.0.2.1/24!interface eth1 ip address 192.168.1.1/30!!line vty!end 
!! Zebra configuration saved from vty! 2003/08/20 00:07:51!hostname speedmetalpassword zebraenable password zebra!interface lo!interface eth0 ip address 192.168.2.1/30!interface dummy0 ip address 10.0.2.1/24!interface eth1 ip address 192.168.1.1/30!!line vty! 
hostname speedmetal-rippassword zebraenable password zebra 
# service ripd start 
User Access VerificationPassword: zebraspeedmetal-rip> enablePassword: zebraspeedmetal-rip# configure terminalspeedmetal-rip(config)# router ripspeedmetal-rip(config-router)# network 10.0.0.0/8speedmetal-rip(config-router)# network 192.168.0.0/16speedmetal-rip(config-router)# endspeedmetal-rip# show runCurrent configuration:!hostname speedmetal-rippassword zebraenable password zebra!interface lo!interface eth0!interface dummy0!router rip network 0.0.0.0/0 network 192.168.0.0/16!line vty!endspeedmetal-rip# writeConfiguration saved to /etc/zebra/ripd.confspeedmetal-rip# 
!! Zebra configuration saved from vty! 2003/08/19 13:50:30!hostname speedmetal-rippassword zebraenable password zebra!interface lo!interface eth0!interface eth1!interface dummy0!router rip network 10.0.0.0/8 network 192.168.0.0/16!line vty! 
Router#config terminalRouter(config)#hostname RouterARouterA(config)#int s0/0RouterA(config-if)#ip address 192.168.0.1 255.255.255.252RouterA(config-if)#no shutRouterA(config-if)# interface fastEthernet 0/0RouterA(config-if)#ip address 192.168.2.2 255.255.255.252RouterA(config-if)#no shutRouterA(config-if)#int loopback 0RouterA(config-if)#ip address 10.0.0.1 255.255.255.0RouterA(config-if)#endRouterA#write 
Router#configure terminalRouter(config)#hostname RouterBRouterB(config)#int s0/0RouterB(config-if)#ip address 192.168.0.2 255.255.255.252 
RouterB(config-if)#no shutRouterB(config-if)#int fastEthernet0/0RouterB(config-if)#ip address 192.168.1.2 255.255.255.252RouterB(config-if)#no shutRouterB(config-if)#int loopback 0RouterB(config-if)#ip address 10.0.1.1 255.255.255.0RouterB(config-router)#endRouterB#write
RouterA#conf tEnter configuration commands, one per line. End with CNTL/Z.RouterA(config)#router ripRouterA(config-router)#network 10.0.0.0RouterA(config-router)#network 192.168.0.0RouterA(config-router)#network 192.168.2.0RouterA(config-router)#version 2RouterA(config-router)#endRouterA#write 
RouterB#conf tEnter configuration commands, one per line. End with CNTL/Z.RouterB(config)#router ripRouterB(config-router)#network 10.0.1.0RouterB(config-router)#network 192.168.0.0RouterB(config-router)#network 192.168.1.0RouterB(config-router)#version 2RouterB(config-router)#endRouterB#write 
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, B - BGP, > - selected route, * - FIB routeR>* 10.0.0.0/24 [120/2] via 192.168.2.2, eth0, 00:11:05R>* 10.0.1.0/24 [120/2] via 192.168.1.2, eth1, 00:02:08C>* 10.0.2.0/24 is directly connected, dummy0K * 127.0.0.0/8 is directly connected, loC>* 127.0.0.0/8 is directly connected, loR>* 192.168.0.0/30 [120/2] via 192.168.2.2, eth0, 00:11:05C>* 192.168.1.0/30 is directly connected, eth1C>* 192.168.2.0/30 is directly connected, eth0 
| 
 
 | 
新聞熱點
疑難解答