QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 818|回复: 4

Linux下建立网络路由器[转贴]

[复制链接]
发表于 2004-11-24 16:26:58 | 显示全部楼层 |阅读模式
对于网络互联工程师们来说,建立一个互联网动态路由是非常重要的。这不仅需要了解路由的概念,而且还必须知道如何付诸实践。就目前而言,网络设备主要由 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 speed<I>meta</I>l
password zebra
enable password zebra
   
  
无论何时,当你进入交互式设置模式时,Hostname指令将指定路由器的名称。该名称可以任意设置,不一定和主机的名称相符。Password指令则确定交互式Zebra终端的登陆密码。  
  
/etc/zebra/zebra.conf建立后,我们可以执行下列指令来启动zebra无后台交互程序:  
  
# service zebra start
   
  
现在我们可以通过连接机器的2601端口进入Zebra交互对话模式。  
  
Zebra对话模式实例:  
  
[root@speed<I>meta</I>l 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
speed<I>meta</I>l> enable
Password: zebra
speed<I>meta</I>l# ?
[$nbsp][$nbsp]configure  Configuration from vty interface
[$nbsp][$nbsp]copy       Copy configuration
[$nbsp][$nbsp]debug      Debugging <I>function</I>s (see also 'undebug')
[$nbsp][$nbsp]disable    Turn off privileged mode command
[$nbsp][$nbsp]end        End current mode and change to enable mode.
[$nbsp][$nbsp]exit       Exit current mode and down to previous mode
[$nbsp][$nbsp]help       De<I>script</I>ion of the interactive help system
[$nbsp][$nbsp]list       Print command list
[$nbsp][$nbsp]no         Negate a command or set its defaults
[$nbsp][$nbsp]quit       Exit current mode and down to previous mode
[$nbsp][$nbsp]show       Show running system information
[$nbsp][$nbsp]terminal   Set terminal line parameters
[$nbsp][$nbsp]who        Display who is on vty
[$nbsp][$nbsp]write      Write running configuration to memory, network, or terminal
speed<I>meta</I>l#
   
  
我们很容易就能对此了如指掌,因为可以通过点击屏幕上的?键随时了解某一命令的含义。如果有过配置Cisco路由器的经验,相信对这一设置过程并不陌生。  
  
到目前为止,我们只完成了Zebra自身的设置和运行,对各种协议的设置还没有开始,如果你准备好了,就让我们继续吧
 楼主| 发表于 2004-11-24 16:27:16 | 显示全部楼层
第二部分:
设置和使用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文件复制到/<I> var</I>/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行间的指令块进行修改,修改后的指令块如下:  
  
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所示。  
  
实验室配置  
  
我们的实验室配置包括2台Cisco 3620路由器和一台ThinkPad X20。ThinkPad X20除了具备内置以太网端口,还装有一个Home-and-Away PCMCIA以太网卡。两台Cisco 3620路由器之间的通信主要靠串口连接来实现,它们与ThinkPad X20的连接则是靠以太网来实现的,总体架构如图2所示。
回复

使用道具 举报

 楼主| 发表于 2004-11-24 16:27:33 | 显示全部楼层
第三部分
利用Zebra设置网络端口  
  
我们利用Zebra软件对网络进行管理首先要靠RIP来实现。上文提到我们已经在ThinkPad上安装了Zebra。由于我们需要在ThinkPad上建立另外一个网络接口,为此我们必须首先设置一个虚拟网络设备,如:  
  
# modprobe dummy  
# ifconfig dummy0  
  
接下来,我们就可以连接进入Zebra程序端口开始设置。我们与Zebra的对话须按下列顺序进行。  
  
端口设置顺序:  
  
User Access Verification  
Password: zebra  
speed<I>meta</I>l> enable  
Password: zebra  
speed<I>meta</I>l# configure terminal  
speed<I>meta</I>l(config)# interface eth0  
speed<I>meta</I>l(config-if)# ip address 192.168.2.1/30  
speed<I>meta</I>l(config-if)# quit  
speed<I>meta</I>l(config)# interface eth1  
speed<I>meta</I>l(config-if)# ip address 192.168.1.1/30  
speed<I>meta</I>l(config-if)# quit  
speed<I>meta</I>l(config)# interface dummy0  
speed<I>meta</I>l(config-if)# ip address 10.0.2.1/24  
speed<I>meta</I>l(config-if)# write  
Configuration saved to /etc/zebra/zebra.conf  
speed<I>meta</I>l(config-if)# end  
speed<I>meta</I>l# show run  
Current configuration:  
!  
hostname speed<I>meta</I>l  
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  
!  
end  
  
注意:我们并没有按照常规方法在ThinkPad上设置IP地址,而是通过Zebra来设置它们的。这些设置保存在/etc/zebra/zebra.conf文件中,因此每当Zebra服务启动时,这些设置便被激活。  
  
zebra.conf文件的主要内容如下:  
  
/etc/zebra/zebra.conf文件的内容  
  
!  
! Zebra configuration saved from vty  
! 2003/08/20 00:07:51  
!  
hostname speed<I>meta</I>l  
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  
!  
  
我们也可以使用MRLG查看各网络端口的状态,具体步骤是选择缺省状态“router1”,然后选择“show interface”按键,点击“Execute”。  
  
利用Zebra设置RIP路由选择  
  
由于我们已在ThinkPad路由器上设置了网络端口,接下来我们就可以对路由器进行设置使它与RIP同步工作了。Zebra使用不同的无后台交互程序支持不同的路由协议,因此我们要先建立一个简单的设置文件/etc/zebra /ripd.conf。  
  
基本/etc/zebra/ripd.conf文件:  
  
hostname speed<I>meta</I>l-rip  
password zebra  
enable password zebra  
  
运行ripd 无后台交互程序:  
  
# service ripd start  
  
然后,我们就可以通过连入Zebra路由器的2602接口,对RIP无后台交互程序进行设置了。  
  
RIP设置:  
  
User Access Verification  
Password: zebra  
speed<I>meta</I>l-rip> enable  
Password: zebra  
speed<I>meta</I>l-rip# configure terminal  
speed<I>meta</I>l-rip(config)# router rip  
speed<I>meta</I>l-rip(config-router)# network 10.0.0.0/8  
speed<I>meta</I>l-rip(config-router)# network 192.168.0.0/16  
speed<I>meta</I>l-rip(config-router)# end  
speed<I>meta</I>l-rip# show run  
Current configuration:  
!  
hostname speed<I>meta</I>l-rip  
password zebra  
enable password zebra  
!  
interface lo  
!  
interface eth0  
!  
interface dummy0  
!  
router rip  
network 0.0.0.0/0  
network 192.168.0.0/16  
!  
line vty  
!  
end  
speed<I>meta</I>l-rip# write  
Configuration saved to /etc/zebra/ripd.conf  
speed<I>meta</I>l-rip#  
  
设置后的/etc/zebra/ripd.conf 文件为:  
  
!  
! Zebra configuration saved from vty  
! 2003/08/19 13:50:30  
!  
hostname speed<I>meta</I>l-rip  
password zebra  
enable 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  
!  
  
在Cisco路由器上建立RIP路由选择  
  
为了使两台Cisco 3620路由器的设置更加简便,我们将其命名为“A”和“B”,我们这里只对做最基本的设置以便它们可以正常工作。这些设置包括设置端口IP地址、回送地址和用于正常串口通信的串口时钟频率。  
  
对路由器A的设置:  
  
Router#config terminal  
Router(config)#hostname RouterA  
RouterA(config)#int s0/0  
RouterA(config-if)#ip address 192.168.0.1 255.255.255.252  
RouterA(config-if)#no shut  
RouterA(config-if)# interface fastEthernet 0/0  
RouterA(config-if)#ip address 192.168.2.2 255.255.255.252  
RouterA(config-if)#no shut  
RouterA(config-if)#int loopback 0  
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0  
RouterA(config-if)#end  
RouterA#write  
  
用同样的方法可以对路由器B进行设置:  
  
Router#configure terminal  
Router(config)#hostname RouterB  
RouterB(config)#int s0/0  
RouterB(config-if)#ip address 192.168.0.2 255.255.255.252  
RouterB(config-if)#no shut  
RouterB(config-if)#int fastEthernet0/0  
RouterB(config-if)#ip address 192.168.1.2 255.255.255.252  
RouterB(config-if)#no shut  
RouterB(config-if)#int loopback 0  
RouterB(config-if)#ip address 10.0.1.1 255.255.255.0  
RouterB(config-router)#end  
RouterB#write  
  
在3620路由器上设置RIP与Zebra中的命令十分类似。我们通过控制线连接到两台3620路由器,并执行下列命令。  
  
为路由器A设置RIP:  
  
RouterA#conf t  
Enter configuration commands, one per line. End with CNTL/Z.  
RouterA(config)#router rip  
RouterA(config-router)#network 10.0.0.0  
RouterA(config-router)#network 192.168.0.0  
RouterA(config-router)#network 192.168.2.0  
RouterA(config-router)#version 2  
RouterA(config-router)#end  
RouterA#write  
  
为路由器B设置RIP:  
  
RouterB#conf t  
Enter configuration commands, one per line. End with CNTL/Z.  
RouterB(config)#router rip  
RouterB(config-router)#network 10.0.1.0  
RouterB(config-router)#network 192.168.0.0  
RouterB(config-router)#network 192.168.1.0  
RouterB(config-router)#version 2  
RouterB(config-router)#end  
RouterB#write  
  
路由器的rip命令主要负责激活RIP进程,该网络命令可以告知路由器RIP将向哪个网络蔓延。  
  
用RIP进行路径拓展  
  
现在我们已经完成了Cisco路由器和Zebra软件的设置,接下来我们可以查看那些正在拓展的路径。在MRLG状态下,我们选择“show ip route”项,点击“Execute”,我们将获得一些报告。  
  
利用Zebra显示的RIP路径:  
  
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,  
        B - BGP, > - selected route, * - FIB route  
R>* 10.0.0.0/24 [120/2] via 192.168.2.2, eth0, 00:11:05  
R>* 10.0.1.0/24 [120/2] via 192.168.1.2, eth1, 00:02:08  
C>* 10.0.2.0/24 is directly connected, dummy0  
K * 127.0.0.0/8 is directly connected, lo  
C>* 127.0.0.0/8 is directly connected, lo  
R>* 192.168.0.0/30 [120/2] via 192.168.2.2, eth0, 00:11:05  
C>* 192.168.1.0/30 is directly connected, eth1  
C>* 192.168.2.0/30 is directly connected, eth0  
  
有R标志的路径是通过RIP获得的。  
  
Zebra现在已经识别了基于路由器A和路由器B的两个网络10.0.0.0/24 和 10.0.1.0/24。我们可以在ThinkPad上运行ping 10.0.0.1和ping 10.0.1.1对网络连通情况进行检测。  
  
为了检验网络发生故障时的应对措施,我们将连接路由器A的网络断开,大约超时2分钟后,Zebra开始通过路由器B绕道连接入10.0.0.0/24网。我们将在下期文中详解。
回复

使用道具 举报

发表于 2004-11-24 18:17:35 | 显示全部楼层
收到!
回复

使用道具 举报

发表于 2004-11-24 22:43:30 | 显示全部楼层
To suowei1979,  转贴请注明出处,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 01:42 , Processed in 0.039596 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表