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