研究RIP協(xié)議在Linux等多系統(tǒng)平臺中的應(yīng)用
RIP協(xié)議,是路由的基礎(chǔ),在很多組網(wǎng)結(jié)構(gòu)中,我們都會用到這個協(xié)議。那么今天我們關(guān)于RIP協(xié)議的基礎(chǔ)就不多贅述了。本例中使用的RIP協(xié)議是 Version 2 的,支持認證、MD5 加密、VLSM、CIDR等,在這里使用 Version 2 而不使用 Version 1,是因為 Windows Server 2003 和Linux均不支持 RIPv1.由于RIP 協(xié)議是國際標準,各個廠商都會有支持.所以不管我是用 Windows 還是Linux或是 UNIX,都應(yīng)該可以順利地運行RIP協(xié)議.
這里是本例中所使用的拓撲圖:
不僅用到了 VMnet1 和 VMnet8 做網(wǎng)絡(luò)接口,而且還使用了一個自定義的網(wǎng)絡(luò)—— VMnet2.那么首先,在 VMware 中新建一個 VMnet2 網(wǎng)絡(luò):
#p#
由于我已經(jīng)添加了,這里就不會有了,當然,也可以選擇 "VMnet3" 等:
添加完成之后,應(yīng)該可以在網(wǎng)絡(luò)連接中看到這個虛擬的 VMnet2 接口的網(wǎng)卡:
#p#
這里是我的 Host 上的網(wǎng)絡(luò)設(shè)置:
其中:192.168.100.241 是我的無線網(wǎng)卡的 IP,不用理會它.
然后,再設(shè)置 Windows XP 設(shè)置其網(wǎng)絡(luò)類型為 Customize --> VMnet2:
并將其默認網(wǎng)關(guān)設(shè)置為 192.168.10.2,指向 Windows Server 2003 的 VMnet2 接口.#p#
再來設(shè)置 Windows Server 2003,它上邊共有 2 塊網(wǎng)卡,一塊網(wǎng)卡接入 VMnet2 網(wǎng)絡(luò),其地址設(shè)置為 192.168.10.2,而另外一塊網(wǎng)卡接入 VMnet8 網(wǎng)絡(luò),地址設(shè)置為 192.168.246.20,千萬注意,一定不要把 IP 地址和網(wǎng)絡(luò)的對應(yīng)關(guān)系搞反了:
#p#
現(xiàn)在設(shè)置Linux上的網(wǎng)卡,Linux上有 2 塊網(wǎng)卡,一塊接入 VMnet8 網(wǎng)絡(luò),另一塊接入 VMnet1 網(wǎng)絡(luò),VMnet8 網(wǎng)絡(luò)接口的網(wǎng)卡 IP 地址設(shè)置為 192.168.246.10,而接入 VMnet1 網(wǎng)絡(luò)的網(wǎng)卡 IP 地址設(shè)置為 172.16.0.1.其中 eth0 是接入到 VMnet8 網(wǎng)絡(luò)的,而 eth1 是接入到 VMnet1 網(wǎng)絡(luò)的.這是用 SSH 客戶端連接到Linux上看到的:
如果要修改 IP 地址,可以到 /etc/sysconfig/network-scripts/下邊修改 ifcfg-eth0,ifcfg-eth1 兩個腳本,同樣,修改時也要注意不要改錯了,修改完之后可以使用 service network restart 命令來重新啟動網(wǎng)卡,使設(shè)置生效.(注:我使用的是 Redhat Linux 9,其他的Linux平臺的實現(xiàn)可能有所不同).
最后,設(shè)置 Windows 2000 IP 地址為172.16.0.20,2000 上邊只有一個接口,連接到 VMnet1 網(wǎng)絡(luò),并且把默認網(wǎng)關(guān)設(shè)置為 172.16.0.1(注:我的這個 2000 上邊有 2 塊網(wǎng)卡,有一塊是 NAT 網(wǎng)絡(luò)接入的,但是我已經(jīng)把它斷開了,相當于沒有這塊網(wǎng)卡)
#p#
OK,第一步,網(wǎng)絡(luò)設(shè)置完成了.現(xiàn)在開始配置兩臺路由器(Windows Server 2003、Linux),Windows 2003 的路由配置為:打開 "控制面板",找到"管理工具",然后找到" Route and Remote Access",在左邊的列表中,找到 Windows Server 2003 這臺主機(我的主機名是 "DC"),右鍵單擊它,然后選擇 "Config and Enable Routing and Remote Access":
然后選擇 "Next",在 "Configuration" 中選擇 "Custom configuration",然后選擇 "LAN Routing",接著按 "Next" 就結(jié)束配置了,如下圖:
完成后的界面:
#p#
當然,僅僅這么配置是不可以的,還得讓 Windows Server 2003 運行路由協(xié)議,這樣才能成為一臺真正的路由器,在左邊的樹形中右鍵單擊 "IP routing" 中的 "General",然后選擇 "New Routing Protocol...":
然后是選擇路由協(xié)議,這里當然選擇 "RIP Version 2 for Internet Protocol",這時候,在左邊已經(jīng)看到了RIP協(xié)議了,但是此時雖然運行了RIP協(xié)議,但并沒有把該網(wǎng)絡(luò)通告出來,還需要在這里添加 2 個接口:VMnet2 接口和 VMnet8 接口,首先添加 VMnet2:
#p#
這時候出現(xiàn)了協(xié)議屬性的設(shè)置:
其實都用默認的就可以了,因為都是 RFC 規(guī)定好的,不必要修改,只有一個"Incoming packet protocol",修改為 "RIP Version 2 only",因為這里只想運行純粹的 RIPv2,所以沒有必要接受 RIPv1 的廣播數(shù)據(jù).
重復(fù)此動作,可把 2 個網(wǎng)絡(luò)接口都通告進來,這樣的話,通過路由協(xié)議,將來Linux就可以學習到 VMnet2 中的路由了.
OK,現(xiàn)在 Windows Server 2003 就設(shè)置好了,那么現(xiàn)在來設(shè)置 Linux,需要一個路由組件:zebra,可在www.zebra.org下載最新版本,RedhatLinux9 在默認安裝的時候,是安裝有這個路由組件的,只需要做些簡單的配置就可以了.
下載之后,使用命令 tar -zvxf zebra-0.94.tar.gz 將其解壓縮,然后進入 zebra-0.94 目錄,分別使用命令:
- ./configure
- make
- make install
就可以完成軟件的默認安裝,該軟件的可執(zhí)行文件安裝在 /usr/local/sbin 目錄下,分別是"bgpd","ospfd","ripd","zebra",而該軟件的配置文件位于 /usr/local/etc 目錄下,分別為 "bgpd.conf.sample","ospfd.conf.sample","ripd.conf.sample","zebra.conf.sample",然后進入這個目錄,分別用命令:#p#
- cp bgpd.conf.sample bgpd.conf
- cp ospfd.conf.sample ospfd.conf
- cp ripd.conf.sample ripd.conf
- cp zebra.conf.sample zebra.conf
這里的幾個RIP協(xié)議的配置文件只是一個樣本,將來不會用到的,但是為了安全起見,還是保留它們,再復(fù)制一份出來,并把 .sample 后綴去掉,這個很重要,否則將來啟動程序的時候,是找不到配置文件的,這樣的話就啟動不了程序.然后看一下這個目錄中的 zebra.conf 文件,里邊是路由的一些配置,主要看的是 2 個東西:
- password zebra
- enable password zebra
這里分別是2個密碼,因為 zebra 運行之后是模擬了一個 cisco 路由器出來,所以這里的這個就相當于它的 startup-config 文件,默認的 telnet 密碼和 enable 密碼都是 zebra,在這里不需要修改什么,記著這么一個東西就好了.
然后,為了啟動方便起見,在 /usr/local/sbin 目錄下建立一個腳本文件:
- #!/bin/bash
- cd /usr/local/sbin
- ./bgpd -d
- ./ospfd -d
- ./ripd -d
- ./zebra -d
參數(shù) -d 是以 demon 的方式啟動(后臺),運行該腳本,這樣的話,這個路由器模擬程序就運行起來了,現(xiàn)在用 netstat -an看一下有沒有運行:
如果該程序正確地運行了,那么會監(jiān)聽 2601、2602、2604、2605 這幾個 TCP 端口,稍后就會用到這幾個端口.#p#
現(xiàn)在在Linux上使用命令:
- telnet 127.0.0.1 2601
登錄到該"路由器",可以看到它的界面:
當進行telnet時,它會提示:
- User Access Verification
輸入 telnet密碼(默認為 "zebra"),成功之后,再進入特權(quán)模式,使用 enable 命令,并輸入 enable 密碼(默認為 "zebra")
成功之后,應(yīng)該可以看到:
- Router#
怎么樣,很像 cisco 路由器吧.現(xiàn)在在這個端口的 telnet 不能開啟路由協(xié)議,只能做一些簡單的設(shè)置,現(xiàn)在只配 2 個 IP 地址即可.
分別使用命令:
- Router#config terminal
- Router(config)#int e0
- Router(config-if)#ip add 192.168.246.10/24
- Router(config-if)#exit
- Router(config)#int e1
- Router(config-if)#ip add 172.16.0.1/24
- Router(config-if)#end
注意,這里的 e0 和 e1 的接口地址要和在Linux中使用 ifconfig 看到的 IP 地址一致.#p#
然后,注意別忘記保存,使用命令:
- copy run start
然后使用 exit 命令退出,再來 telnet 2602 端口:
- telnet 127.0.0.1 2601
輸入同樣的密碼,就可以進入該路由器的特權(quán)模式了, 然后,使用簡單的幾條命令,分別通告 2 個網(wǎng)絡(luò):
- ripd#config t
- ripd(config)#router rip
- ripd(config-router)#network 192.168.246.0/24
- ripd(config-router)#network 172.16.0.0/16
- ripd(config-router)#end
- ripd#copy run start
然后,退出路由器配置模式,已經(jīng)配置好了.
OK,所有的配置都已經(jīng) over 了,現(xiàn)在來看一下這 2 個路由器是否能夠正確運行了,由于這 2 個路由器都連接在 VMnet8 網(wǎng)絡(luò)中,那么我在 Host 上抓取 VMnet8 下的數(shù)據(jù)包,應(yīng)該可以看到 RIPv2 的組播更新,協(xié)議分析器為 Sniffer Portable:
而且,在 Windows Server 2003 上邊,也已經(jīng)可以看到它的RIP協(xié)議的鄰居了:
#p#
現(xiàn)在來驗證一下,從 XP 上 tracert 172.16.0.20:
再從 2000 上 tracert 192.168.10.10:
OK,路由都是通的,證明路由器工作正常,至此,實驗完全結(jié)束.
RIP協(xié)議參考資料:
zebra 配置:
http://www.myfaq.com.cn/2005September/2005-09-13/202094.html
http://bbs.linuxsky.net/thread-2148-1-1.html
資源:
RFC2453:
http://www.faqs.org/rfcs/rfc2453.html