RIP协议,是路由的基础,在很多组网结构中,我们都会用到这个协议。那么今天我们关于RIP协议的基础就不多赘述了。本例中使用的RIP协议是 Version 2 的,支持认证、MD5 加密、VLSM、CIDR等,在这里使用 Version 2 而不使用 Version 1,是因为 Windows Server 2003 和Linux均不支持 RIPv1.由于RIP 协议是国际标准,各个厂商都会有支持.所以不管我是用 Windows 还是Linux或是 UNIX,都应该可以顺利地运行RIP协议.
这里是本例中所使用的拓扑图:
不仅用到了 VMnet1 和 VMnet8 做网络接口,而且还使用了一个自定义的网络—— VMnet2.那么首先,在 VMware 中新建一个 VMnet2 网络:
#p#
由于我已经添加了,这里就不会有了,当然,也可以选择 "VMnet3" 等:
添加完成之后,应该可以在网络连接中看到这个虚拟的 VMnet2 接口的网卡:
#p#
这里是我的 Host 上的网络设置:
其中:192.168.100.241 是我的无线网卡的 IP,不用理会它.
然后,再设置 Windows XP 设置其网络类型为 Customize --> VMnet2:
并将其默认网关设置为 192.168.10.2,指向 Windows Server 2003 的 VMnet2 接口.#p#
再来设置 Windows Server 2003,它上边共有 2 块网卡,一块网卡接入 VMnet2 网络,其地址设置为 192.168.10.2,而另外一块网卡接入 VMnet8 网络,地址设置为 192.168.246.20,千万注意,一定不要把 IP 地址和网络的对应关系搞反了:
#p#
现在设置Linux上的网卡,Linux上有 2 块网卡,一块接入 VMnet8 网络,另一块接入 VMnet1 网络,VMnet8 网络接口的网卡 IP 地址设置为 192.168.246.10,而接入 VMnet1 网络的网卡 IP 地址设置为 172.16.0.1.其中 eth0 是接入到 VMnet8 网络的,而 eth1 是接入到 VMnet1 网络的.这是用 SSH 客户端连接到Linux上看到的:
如果要修改 IP 地址,可以到 /etc/sysconfig/network-scripts/下边修改 ifcfg-eth0,ifcfg-eth1 两个脚本,同样,修改时也要注意不要改错了,修改完之后可以使用 service network restart 命令来重新启动网卡,使设置生效.(注:我使用的是 Redhat Linux 9,其他的Linux平台的实现可能有所不同).
最后,设置 Windows 2000 IP 地址为172.16.0.20,2000 上边只有一个接口,连接到 VMnet1 网络,并且把默认网关设置为 172.16.0.1(注:我的这个 2000 上边有 2 块网卡,有一块是 NAT 网络接入的,但是我已经把它断开了,相当于没有这块网卡)
#p#
OK,第一步,网络设置完成了.现在开始配置两台路由器(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" 就结束配置了,如下图:
完成后的界面:
#p#
当然,仅仅这么配置是不可以的,还得让 Windows Server 2003 运行路由协议,这样才能成为一台真正的路由器,在左边的树形中右键单击 "IP routing" 中的 "General",然后选择 "New Routing Protocol...":
然后是选择路由协议,这里当然选择 "RIP Version 2 for Internet Protocol",这时候,在左边已经看到了RIP协议了,但是此时虽然运行了RIP协议,但并没有把该网络通告出来,还需要在这里添加 2 个接口:VMnet2 接口和 VMnet8 接口,首先添加 VMnet2:
#p#
这时候出现了协议属性的设置:
其实都用默认的就可以了,因为都是 RFC 规定好的,不必要修改,只有一个"Incoming packet protocol",修改为 "RIP Version 2 only",因为这里只想运行纯粹的 RIPv2,所以没有必要接受 RIPv1 的广播数据.
重复此动作,可把 2 个网络接口都通告进来,这样的话,通过路由协议,将来Linux就可以学习到 VMnet2 中的路由了.
OK,现在 Windows Server 2003 就设置好了,那么现在来设置 Linux,需要一个路由组件:zebra,可在www.zebra.org下载最新版本,RedhatLinux9 在默认安装的时候,是安装有这个路由组件的,只需要做些简单的配置就可以了.
下载之后,使用命令 tar -zvxf zebra-0.94.tar.gz 将其解压缩,然后进入 zebra-0.94 目录,分别使用命令:
- ./configure
- make
- make install
就可以完成软件的默认安装,该软件的可执行文件安装在 /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协议的配置文件只是一个样本,将来不会用到的,但是为了安全起见,还是保留它们,再复制一份出来,并把 .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
参数 -d 是以 demon 的方式启动(后台),运行该脚本,这样的话,这个路由器模拟程序就运行起来了,现在用 netstat -an看一下有没有运行:
如果该程序正确地运行了,那么会监听 2601、2602、2604、2605 这几个 TCP 端口,稍后就会用到这几个端口.#p#
现在在Linux上使用命令:
- telnet 127.0.0.1 2601
登录到该"路由器",可以看到它的界面:
当进行telnet时,它会提示:
- User Access Verification
输入 telnet密码(默认为 "zebra"),成功之后,再进入特权模式,使用 enable 命令,并输入 enable 密码(默认为 "zebra")
成功之后,应该可以看到:
- Router#
怎么样,很像 cisco 路由器吧.现在在这个端口的 telnet 不能开启路由协议,只能做一些简单的设置,现在只配 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
输入同样的密码,就可以进入该路由器的特权模式了, 然后,使用简单的几条命令,分别通告 2 个网络:
- 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
然后,退出路由器配置模式,已经配置好了.
OK,所有的配置都已经 over 了,现在来看一下这 2 个路由器是否能够正确运行了,由于这 2 个路由器都连接在 VMnet8 网络中,那么我在 Host 上抓取 VMnet8 下的数据包,应该可以看到 RIPv2 的组播更新,协议分析器为 Sniffer Portable:
而且,在 Windows Server 2003 上边,也已经可以看到它的RIP协议的邻居了:
#p#
现在来验证一下,从 XP 上 tracert 172.16.0.20:
再从 2000 上 tracert 192.168.10.10:
OK,路由都是通的,证明路由器工作正常,至此,实验完全结束.
RIP协议参考资料:
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