Zebra 是一个开源的 TCP/IP 路由软件,同 Cisco Internet 网络操作系统(IOS)类似。它灵活而且具有强大的功能,可以管理IPv4和IPv6路由的工具。它支持BGP-4协议、BGP-4+协议、RIPv1协议、RIPv2协议、RIPng协议、OSPFv2协议和OSPFv3协议。从 www.Zebra.org 网站下载 Zebra 的最新源程序。
安装

tar -zvxf zebra-0.93b.tar.gz 
 cd zebra-0.93b 
   ./configure 
   make 
   make install


  配置脚本会搜索系统上已经安装的 IP 栈并且自动地设置成支持他们。当前,IP 栈很可能仅仅是指 IPv4,但是 IPv6 用户也不用担心,因为 Zebra 也会发现并且支持它。
在解压后的文件夹中,有一个文件,SERVICES,以下是该文件的内容:

# As long as this software is in alpha testing it is not yet included 
 # in /etc/services files. This means that you may need to add the following 
 # lines into your /etc/services file on your hosts. 
 # --- Please add this to your /etc/services --- 
 # GNU Zebra services 
 zebrasrv 2600/tcp 
 zebra 2601/tcp 
 ripd 2602/tcp 
 ripng 2603/tcp 
 ospfd 2604/tcp 
 bgpd 2605/tcp 
 ospf6d 2606/tcp


从这个文件看出,我们得在/etc/services中增加命令行。Zebra 的守护程序在他们自己的虚拟终端连接(VTY)下运行,所以你的系统必须知道这些虚拟终端连接。这里是你应该增加的一些连接∶
 

zebrasrv 2600/tcp # zebra service 
   zebra 2601/tcp # zebra vty 
   ripd 2602/tcp # RIPd vty 
   ripngd 2603/tcp # RIPngd vty 
   ospfd 2604/tcp # OSPFd vty 
   bgpd 2605/tcp # BGPd vty 
   ospf6d 2606/tcp # OSPF6d vty


配置 Zebra
在安装后的etc目录中里,还有个文件zebra.conf.sample(同时还有bgpd.conf.sample,ospfd.conf.smaple,ripd.conf.sample等),OK,把这个文件复制成zebra.conf,里边会有下边几行:
hostname Router
password zebra
enable password zebra
hostname 指定了当您进入交互式配置方式时的路由器名,它其实是一个标识。
password 指定了登录进入交互式 Zebra 终端时需要的密码。
enable password 指定了当您想要改变配置时以较高级别身份访问 Zebra 所需要的密码。
如果你的CISCO的路由器熟悉的话,这些就成废话了。
接下来就可以启动zebra了(我实验的时候用的是直接运行的,不知道为什么后台运行不行,为此不得不多开一个控制台)
运行service zebra start 启动或者直接运行zebra
现在让我们telnet 127.0.0.1 2601看看

[root@linux /etc 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> en 
 Password: zebra 
 Router# ? 
 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 
 Router#


是不是和CISCO的路由器很像呢,接下来可以进行实验了。
下面试试rip
  如果你已经熟悉 Cisco IOS,那你就能在短时间内掌握 Zebra,因为你会发现两者极为相似。Zebra 的每个守护程序使用一个单独的 VTY,这些 VTY 可以通过一个远程登录会话进行动态配置。所以,如果你需要设置 OSPF,简单地远程登录到该 Linux 上 2604 端口;为了修改内核的路由表或设置路由协议间的再分发,你可以远程登录到端口 2601,该 Zebra 守护程序充当内核管理器,管理其他的守护程序和系统本身之间的通信。
为了启动rip,需要一个ripd.conf,如你所预料的,我们只需要做一件事,生成一个ripd.conf,还记得上边的zebra.conf是怎么来的吗?好了,用同样的方法生成一个ripd.conf, 这个文件的内容也很简单,或者你自己写一个,内容如下:
hostname ripd
password zebra
enable password zebra
下边我们可以启动ripd,运行service ripd start 启动或者直接运行ripd
接下来,telnet 127.0.0.1 2602 (还记得我们在services中添的几句话吗,2602端口是给rip用的)

[root@linux /etc telnet]# 127.0.0.1 2602 
 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 
 ripd> en 
 ripd#

 

回复:Zebra路由器


有关Zebra的相关介绍

安装 Zebra
你既可以从 Zebra.org 网站下载 Zebra 的最新源程序,也能从 Redhat 和 Debian 中获得它,但不一定是最新版的。从源代码中进行软件安装,你就会发现使用的是一些普通的安装过程。简介如下:


./configuremakemake install


配置脚本会搜索系统上已经安装的 IP 栈并且自动地设置成支持他们。当前,IP 栈很可能仅仅是指 IPv4,但是 IPv6 用户也不用担心,因为 Zebra 也会发现并且支持它。

程序安装之后,还可能必须在 /etc/services 中增加一些命令行。Zebra 的守护程序在他们自己的虚拟终端连接(VTY)下运行,所以你的系统必须知道这些虚拟终端连接。这里是你应该增加的一些连接∶


zebrasrv 2600/tcp # zebra servicezebra 2601/tcp # zebra vtyripd 2602/tcp # RIPd vtyripngd 2603/tcp # RIPngd vtyospfd 2604/tcp # OSPFd vtybgpd 2605/tcp # BGPd vtyospf6d 2606/tcp # OSPF6d vty


配置 Zebra
如果你已经熟悉 Cisco IOS,那你就能在短时间内掌握 Zebra,因为你会发现两者极为相似。Zebra 的每个守护程序使用一个单独的 VTY,这些 VTY 可以通过一个远程登录会话进行动态配置。所以,如果你需要设置 OSPF,简单地远程登录到该 Linux 上 2604 端口;为了修改内核的路由表或设置路由协议间的再分发,你可以远程登录到端口 2601,该 Zebra 守护程序充当内核管理器,管理其他的守护程序和系统本身之间的通信。

现在介绍如何在一个服务器上创建和运行 OSPF 和 BGP。Zebra 的守护程序运用纯文本文件储存它们的配置。对于 OSPF/BGP 路由器,将用到三个文件∶zebra.conf、ospfd.conf 和 bgpd.conf。举例来说,zebra.conf 文件可能会是这样:


! Zebra configuration saved from vty! 2002/02/28 01:46:12!hostname LinuxRouter /*主机名为 LinuxRouter*/password zebra /*口令为 zebra*/enable password z3bRa /*进入特权模式时的口令为 z3bRa */log file /var/log/zebra/zebra.log /*日志文件的地址*/!interface eth0 /*以太接口 eth0*/description Interface to External Network/*对接口的描述*/ip address 10.0.0.1/24 /*该接口的 IP 地址*/!interface eth1/*以太接口 eth0*/description Interface to Internal Network/*对接口的描述*/ip address 192.168.66.1/24/*该接口的 IP 地址*/


这里的感叹号充当注解标识或分隔符。尽管存在大量不同的网络接口类型(Ethernet、ISDN 等等),但只要是 Linux 内核能够辨认的网络接口类型,Zebra 都可以使用。

子网掩码都带有网络位的位数(例如/24),默认掩码则不然(比如 255.255.255.0)。注意存在两个口令,一个用于用户模式而另一个用于特权模式。这不仅有利于向非管理员提供访问权限,而且对于创建路由服务器或者路由探测镜也是非常重要的。所有 BGP 管理员都知道,这些探测镜是调试路由问题的关键,因为他们能够使你就象从一个外部 AS( AS代表自治系统)一样查看路由。 BGP 路由需要用到 AS 编号,AS 编号是一些由 ARIN (美国互联网络号码注册机构)控制的注册号码。

下一步将启动一些必要的程序。用以下命令完成∶


/usr/sbin/zebra -dk/usr/sbin/ospfd -d/usr/sbin/bgpd -d


第一个命令,启动 zebra,该守护程序实际上用来更新内核的路由表。-dk 告诉该程序作为一个守护程序运行(d),它的大部分时间在后台运行。k 是另外的一个选项,告诉 Zebra 维护所有已配置的路由。它用来保证在你测试 Zebra 的时候不会意外地删除路由表。一般情况下,设置路由和接口,需要将 ifconfig 和 route 这两个命令配合使用。而 Zebra 完全可以替代这种路由管理方式,使用起来更为简洁。

设置OSPF
至此,基本的服务已经具备,现在让我们 Telnet 到本地机器的 2604 端口,开始配置 OSPF。为进入特权模式,键入 enable (正如在Cisco IOS 中一样),然后键入特权模式口令。接下来,用 configuration terminal 命令切换到配置模式。值得一提的是 Zebra 也能接受命令缩写形式,这与 Cisco 极为相似,如 configuration terminal 可以简写为 config t,这大大缩短了输入时间,使用起来更为方便。另外,如果输入 list 和 ?,它将显示一个当前可用命令的清单,并附有一些简略解释。除此之外,还可以键入 tab 用于命令的自动完成。这就是说,如果你想键入命令 clock,只要键入前两个字母 cl 然后按 tab 键,机器就会自动"补全"这条命令--前提是你键入的字符足以唯一地确定这条命令。这是一个很好的功能,尤其是当你习惯于这种用法时。

接下来,我们还需要告诉守护程序将通过 OSPF 广播哪些网络以及相关的域(area)。OSPF 的可伸缩性允许它支持多个域。键入 router ospf 开始配置 OSPF,然后键入 network 192.168.66.0/24 area 0。这告诉路由器,我们将使用 OSPF 广播一个子网掩码为 255.255.255.0 的 192.168.66.0 网络。

在本例中,我们让 eth0 接口变成一个被动(passive)接口,以便使它不能发送路由更新。这对于实验是非常重要的,因为在那个方向上的其他的路由器可能监听到发送的路由更新,将接口变成一个被动(passive)接口,从而有效的避免扰乱网络的正常运行。为此,键入命令 passive - interface eth0。如果打算将此路由器作为工作路由器使用时,就没有这个必要了。一旦你完成修改,用 end 命令从配置模式中退出,然后用 write file 命令保存。这里是一个快照:

labrat:~# telnet 0 2604  /*Telnet 到本地机器的 2604 端口*/
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.  /*用 '^]'退出该会话*/
Hello, this is zebra (version 0.84b)
Copyright 1996-2000 Kunihiro Ishiguro
User Access Verification
Password:  /*在此键入口令,如 zebra*/
ospfd> enable/*进入特权模式*/
Password:  /*输入特权模式口令,如 z3bRa*/
ospfd# configure terminal  /*从终端配置路由器*/
ospfd(config)# router ospf  /*配置 OSPF*/
ospfd(config-router)# network 192.168.66.0/24 area 0  /*通过 OSPF 广播网络 network 192.168.66.0,/24 指出子网掩码为 24 位,area 0 指出该网络所在的域*/
ospfd(config-router)# passive-interface eth0  /*将 eth0 接口设置成一个被动(passive)接口*/
ospfd(config-router)# end  /*退出配置模式*/
ospfd# write file  /*保存修改*/
Configuration saved to /etc/zebra/ospfd.conf


请记住,为了让 OSPF 或 BGP 在某接口上工作,那么该接口必须处于"运行"状态。为手工运行一个接口,登录到端口 2601 并且在该接口上执行 no shut 命令。

建立 BGP
BGP 与 OSPF 的配置大致相同。开始,打开一个远程登录会话到端口 2605。之后执行 configure terminal,输入 router bgp <AS #_> 进入 BGP 配置模式。如前所述,BGP 使用 AS 编号建立邻机关系并路由通信流。在我们的试验中,我们将使用一个范围在 64512 到 65534 之间的私有 AS 号码(换句话说,该号码旨在机构内部有效,而在因特网上无效)。用 network 命令设置由 BGP 广播的那些网络,如 network 192.168.66.0/24.。与 OSPF 不同的是,BGP 邻机必须静态指定。如同下述∶neighbor <neighbor IP> remote-as <remote AS #>。这里是一个范例:


labrat:~# telnet 0 2605
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Hello, this is zebra (version 0.84b)
Copyright 1996-2000 Kunihiro Ishiguro
User Access Verification
Password:
bgpd> enable
Password:
bgpd# configure terminal
bgpd(config)# router bgp 65530  /*配置 BGP,65530 是自治系统编号。也就是将该系统配置成自治系统 65530 上的外部网关*/
bgpd(config-router)# network 192.168.66.0/24  /*由 BGP 广播的网络*/
bgpd(config-router)# neighbor 10.0.0.5 remote-as 65531  /*静态指定自治系统 65531 上 IP 地址为 10.0.0.5 的路由器为本机的邻机*/
bgpd(config-router)# end
bgpd# write file
Configuration saved to /etc/zebra/bgpd.conf
————————————————


对于 OSPF 和 BGP,有大量选项可用,限于篇幅不能在此一一介绍。对于每个协议,我建议在实际使用之前,不妨先研究一番。为此,可以参考 GNU Zebra 文档,它会给你提供许多帮助。

结束语
在网络中,路由通信流的方法有若干种。就路由器而论,虽然有用各种硬件可用,但是费用较高--人们自然就会想到运行一个用 Linux 系统构筑的功能丰富的路由器作为代替。Zebra 路由守护程序已经使这一切变为现实。因为支持 IPv4、IPv6 和其它各式各样的协议,所以 Zebra 能够满足我们所有的路由需求。它还有一个好处就是,因为 Cisco IOS 和 Zabra 极为相似,如果你以前在 Cisco IOS 环境中工作,可以轻松的过渡到 Zebra 系统;同时,使用 Zebra 也能让你积累起丰富的类似于使用 Cisco IOS 路由器的经验和知识。


webbers发表评论于2005-4-26 23:27:32