動態(tài)、健壯的路由對于 Internet 網(wǎng)絡(luò)來說極其重要,因此任何一個初涉此領(lǐng)域的網(wǎng)絡(luò)工程師不僅需要理解路由的概念,而且要有能力在真正的環(huán)境下駕馭它。但是,路由領(lǐng)域由高端網(wǎng)絡(luò)設(shè)備供應(yīng)商(比如 Cisco)提供的產(chǎn)品一統(tǒng)天下,這就意味著對于大多數(shù)人來說,只能在學?;蛘邔嶒炇噎h(huán)境中才能學習路由,而且還要一直受到實踐時間和實踐條件的困擾。
我們在組織一門關(guān)于 TCP/IP 路由的課程時就遇到了這樣的困難。在一個小型的測試環(huán)境下,我們想演示在使用路由信息協(xié)議(RIP)和開放式最短路徑優(yōu)先協(xié)議(OSPF)時各種不同的負載平衡情形。但是,我們手頭上的 Cisco 路由器數(shù)量有限。不過我們有一些 PC 機可以使用,于是我們開始想辦法用 Linux 來仿真 Cisco 路由器以解決這個問題。
開始時我們嘗試使用傳統(tǒng)的路由和網(wǎng)關(guān)守護進程來構(gòu)建我們的測試網(wǎng)絡(luò),但我們很快就發(fā)現(xiàn)對它們進行配置比較困難,而且它們的能力有限,我們的工作得不償失。于是我們決定嘗試使用更先進的方法來完成我們的測試網(wǎng)絡(luò),很幸運,我們找到了 Zebra。
什么是 Zebra? Zebra 是一個 TPC/IP 路由軟件,支持 BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2 和 RIPng。它的發(fā)行遵循 GNU 通用公共許可協(xié)議,可以運行于 Linux 以及其他一些 Unix 變體操作系統(tǒng)上。Zebra 是那些系統(tǒng)最新的發(fā)行版本中的路由軟件。最新版本的Zebra以及文檔可以從GNU Zebra網(wǎng)站上下載http://www.zebra.org/
最初的 Zebra 軟件包由 Kunihiro Ishiguro 和 Yoshinari Yoshikawa 于1996年完成?,F(xiàn)在,這個軟件包主要由 IP Infusion――CTO 是 Ishiguro 先生――在多名網(wǎng)絡(luò)工程師以及開源志愿者的幫助下來維持。
Zebra 的設(shè)計獨特,采用模塊的方法來管理協(xié)議。可以根據(jù)網(wǎng)絡(luò)需要啟用或者禁用協(xié)議。
Zebra 最為實用的一點是它的配置形式同 Cisco IOS 極其類似。盡管它的配置與 IOS 相比還是有一些不同,但是這對于那些已經(jīng)熟悉 IOS 的網(wǎng)絡(luò)工程師來說在這種環(huán)境下工作將相當自如。
安裝 Zebra 我們的 Zebra 測試平臺是一臺舊的但是依然很好用的 ThinkPad X20,其運行的是 Red Hat Linux 9。ThinkPad 有一個內(nèi)置的以太網(wǎng)接口,我們又給它加了一塊 PCMCIA 以太網(wǎng)卡,使之可以完成路由器的功能。在安裝 Zebra 之前,我們確認兩塊網(wǎng)卡都已經(jīng)被 Linux 認出并且正常工作。
在 Red Hat 9 中已經(jīng)附帶了 Zebra-0.93b 的 RPM 安裝包。這個版本與 Zebra 網(wǎng)站上提供的版本相同,因此我們決定直接使用它,而不再去從網(wǎng)上下載并自己編譯。Zebra RPM 將安裝二進制文件、腳本和配置文件,以及必需的手冊、例子和文檔文件。
Zebra 基本配置 zebra 守護進程是實際的路由管理者,控制著其他模塊;而且用戶主要通過它進行交互。我們最先需要配置 Zebra 守護進程,對應(yīng)的配置文件是 /etc/zebra/zebra.conf。
Zebra RPM 包中有一個完整的配置文件樣例。不過,就最簡化的情形來說,我們實際上只需要創(chuàng)建一個包含以下幾行的 /etc/zebra/zebra.conf 文件:
清單 1.一個最簡的 Zebra 配置文件
hostname speedmetal
password zebra
enable password zebra
hostname 指定了當您進入交互式配置方式時的路由器名。它可以是任何一個標識,不一定要和機器的主機名相同。
assword 指定了登錄進入交互式 Zebra 終端時需要的密碼。
enable password 指定了當您想要改變配置時以較高級別身份訪問 Zebra 所需要的密碼。
創(chuàng)建了 /etc/zebra/zebra.conf 文件以后,我們現(xiàn)在可以執(zhí)行下面的命令來啟動 zebra 守護進程:
# service zebra start
現(xiàn)在通過 telnet 到我們的機器的 2601 端口就可以進入 Zebra 交互式會話。
清單 2. 一個 Zebra 會話樣例
[root@speedmetal zebra]# telnet 127.0.0.1 2601
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
Hello, this is zebra (version 0.93b).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password: zebra
speedmetal> enable
Password: zebra
speedmetal# ?
configure Configuration from vty interface
copy Copy configuration
debug Debugging functions (see also ‘undebug‘)
disable Turn off privileged mode command
end End current mode and change to enable mode.
exit Exit current mode and down to previous mode
help Description of the interactive help system
list Print command list
no Negate a command or set its defaults
quit Exit current mode and down to previous mode
show Show running system information
terminal Set terminal line parameters
who Display who is on vty
write Write running configuration to memory, network, or terminal
speedmetal#
在交互式終端中操作很簡單。要獲得可用命令的提示,您可以在任何時刻按 ?鍵,然后命令的選項就會出現(xiàn)在屏幕上。如果您正在構(gòu)建您自己的 Zebra 路由器,而且您有配置 Cisco 路由器的經(jīng)驗的話,您會覺得這個配置過程非常熟悉。
到現(xiàn)在為止,還只有 Zebra 被配置好并且運行起來了,但是還沒有任何其他的協(xié)議。接下來將開始配置的實質(zhì)內(nèi)容,我們將向您介紹我們的這一過程。
MRLG 的配置和使用 Multi-Router Looking Glass,簡稱 MRLG,由 EnterZone 的 John Frazier 開發(fā),是一個基于 Web 的工具,可以用來顯示 Zebra 識別出來的接口和路由。MRLG 其實僅僅是 Zebra shell 的一個 Web 界面,只能使用有限的命令集,但是在我們的測試過程中,我們發(fā)現(xiàn)使用它是顯示路由的一個快速而有效的途徑。所以,在開始配置 Zebra 協(xié)議之前,我們先向您介紹如何安裝 MRLG。
MRLG 需要 Net::Telnet Perl 軟件包的支持才能與 Zebra shell 通信。
由于 MRLG 是作為一個 CGI 應(yīng)用程序來運行,因此我們還需要安裝一個 Web 服務(wù)器。如果您是自己在嘗試這些事情,您可以直接使用 Red Hat 9 自帶的 httpd RPM。
我們將 /usr/share/doc/zebra-0.93b/tools 目錄中的 mrlg.cgi 文件拷貝到 /var/www/cgi-gin 目錄下。然后,我們修改 mrlg.cgi 文件的第36行,將
$url="http://www.sample.com/mrlg.cgi";
修改為:
$url="http://127.0.0.1/cgi-bin/mrlg.cgi";
我們還修改了第168行到第174行的部分內(nèi)容,如下所示:
if ($Form{‘router‘} eq ‘router1‘) { $server = ‘127.0.0.1‘; $login_pass = ‘zebra‘; $bgpd = "2605"; $zebra = "2601"; $full_tables=1;
為了訪問 MRLG,將瀏覽器定向到 http://127.0.0.1/cgi-bin/mrlg.cgi。
圖 1. Multi-Router Looking Glass
基本的實驗室配置 我們的實驗室配置包括兩個 Cisco 3620 路由器和一個 ThinkPad X20(有一個內(nèi)置的以太網(wǎng)接口和一個 Home-and-Away PCMCIA 以太網(wǎng)卡)。兩個路由器通過串行線聯(lián)接起來,并且每個路由器通過以太網(wǎng)連接到 ThinkPad。見我們的連接圖:
圖 2. 實驗室連接圖
使用 Zebra 配置接口 我們首先從 RIP 協(xié)議開始講述使用 Zebra 來管理路由。如前所述,我們已經(jīng)在 ThinkPad 上安裝了 Zebra。由于我們在 ThinkPad 上還需要另一個網(wǎng)絡(luò)接口,我們安裝了一個虛擬的網(wǎng)絡(luò)設(shè)備,如下:
# modprobe dummy
# ifconfig dummy0
我們 telnet 到 Zebra 端口來開始配置。我們按照以下順序與 Zebra 會話:
清單 3. 配置 IP 接口
User Access Verification
Password: zebra
speedmetal> enable
Password: zebra
speedmetal# configure terminal
speedmetal(config)# interface eth0
speedmetal(config-if)# ip address 192.168.2.1/30
speedmetal(config-if)# quit
speedmetal(config)# interface eth1
speedmetal(config-if)# ip address 192.168.1.1/30
speedmetal(config-if)# quit
speedmetal(config)# interface dummy0
speedmetal(config-if)# ip address 10.0.2.1/24
speedmetal(config-if)# write
Configuration saved to /etc/zebra/zebra.conf
speedmetal(config-if)# end
speedmetal# show run
Current configuration:
!
hostname speedmetal
password zebra
enable 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
!
e