开源路由软件zebra介绍和和在Linux环境下的安装

感谢:http://www.cnblogs.com/iTsihang/archive/2012/11/22/2783249.html


============================================================================================================

    说到路由软件,我第一印象就想起了Cisco的IOS。这是一款由Cisco自主开发的闭源路由器软件;说到开源路由软件,比较有意思的是这样两款难兄弟软件:Zebra(斑马)和Quagga(斑驴)。做过防火墙,交换机或者路由器的人应该明白CLI,命令行接口是什么意思。操作者通过命令行接口,将设备的配置(ACL等)、状态查询(流量统计等)操作,以命令的方式下发给设备,从而配置其工作状态(如隔离端口,过滤数据流、抑制风暴,防止各类攻击等)。这些接口通过CLI的形式呈现,口语化的配置,使得复杂的配置变得简单起来。

    前面介绍的zebra到2005年发行zebra-0.95a后停止更新。后来修改版本将 zebra作为守护进程,发行新的版本改名Quagga,由savannah.gnu.org这个组织维护。

    而我最早接触Zebra是刚毕业那年,即2011年四月份,在第一家公司做基于MIPS和Intel Xscale的网络分析仪(专门提供给网络安全部门,集监控、采集和分析为一体的智能网络监控设备)。又因为我在Cisco的模拟器:Cisco Packet Tracer 上做过基于Cisco产品的网络架构项目。所以当得知有一款能和Cisco IOS媲美的路由软件,而且代码是开放的的时候,我很兴奋,于是赶紧学习起来。公司用的是zebra,版本我忘记了,遗憾的是当时没有写博的习惯,以致学习源码设计的各类辅助理解的图,都遗失了。如今只能根据自己的理解,加上温故源码慢慢回忆。

    到目前为止,zebra和Quagga与Cisco IOS的命令架构,配置格式十分相近,同时它们的开源性,有力阻止了闭源的Cisco的IOS对整个路由软件市场的垄断。尽管它与IOS之间存在着一些差异,但是熟悉IOS的网络工程师们会很快适应zebra和Quagga的网络环境的。Zebra和Quagga可以利用模块法对各种协议进行管理,这种设计是独一无二的。它可以根据网络的需要激活或者停止协议。而且安装有这款路由软件的主机,通过适当配置可以变成一个路由设备,这点让我很兴奋。目前,zebra已经停止发行,Quagga今年五月份推出quagga-0.99.21。不过对于国内的设备开发,这款开源软件已经足够了。

废话少说,进入正题



环境:ubuntu 12.04;

我只粗略看过Quagga的源码,框架上和zebra类似,所以下面就只介绍zebra的安装和使用,以及安装编译过程中可能出现的问题,和大家一起探讨。但是Quagga的源码,我在这里给出连接,希望好学之士能够学习。后面我尝试使用,有问题一起解决。

Quagga 源码:http://download.savannah.gnu.org/releases/quagga/

 

zebra安装

下载zebra源码

  地址:https://www.mangob2b.com/en/zebra/download-zebra

解压

1 tar -xvf  zebra-0.95a.tar.gz
2 cd zebra-0.95a/

修改zebra.h

vi ./lib/zebra.h +103

增加:

1 #ifdef GNU_LINUX
2 #define  __USE_GNU
3 #endif

告知在编译的时候使用GNU标准编译,同时这样做是因为增加了zebra对IPV6的支持。在系统头文件的in.h中定义了一个结构体:struct in6_pktinfo等结构,在zebra中被引用,所以增加定义宏以支持ipv6。

配置

./configure

编译和安装

make;make install【如果需要权限,请sudo】
如果编译过程中,出现个别库文件没有安装,请先安装依赖库文件,在后面配置vtysh的时候,可能会要求安装quagga支持;
服务程序将被默认安装在/usr/local/sbin下,有:bgpd ospf6d ospfd ripd ripngd zebra六个服务程序。

 




配置zebra运行环境

配置zebra

生成zebra配置文件。因为系统中有简单的例子,于是就用现有的配置文件,配置登陆和进入特权模式的密码,主机名等。

sudo cp zebra.conf.sample /usr/local/etc/zebra.conf

配置vtysh

sudo cp vtysh.conf.sample /usr/local/etc/vtysh.conf

启动zebra demo程序

./zebra –d

远程登陆

复制代码
 
 
telnet 127.0.0.1 2601  //如果是在局域网内登陆,则将IPaddress 改为具体的主机地址
2601是zebra demo的服务端口号,其他协议的端口号自行查找相关文件获悉。
如果需要启动Zebra提供的其他服务,在/usr/local/etc/下生成特定服务的配置文件。例如,希望启动RIP协议服务,则将rip相关的配置文件和上例一样拷贝到/usr/local/etc/下,在控制台运行:ripd –d,然后ps查看,会发现ripd已经在后台运行。
复制代码

 

最后,你可以大肆修改这个工程,增加自己的实现,这工程里面也有好多漂亮的代码,如日志管理,内存管理等,是一款不可多得的学习代码。


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux系统上,可以使用Zebra实现动态路由Zebra是一个开源路由软件套件,包含了各种路由协议的实现,例如RIPv1/v2、OSPF、BGP等。 首先,需要在Linux系统上安装Zebra软件包。可以通过包管理工具(如yum)来安装安装完成后,可以使用`service zebra start`命令启动Zebra服务。 接下来,可以通过编辑配置文件来配置Zebra。配置文件通常位于`/etc/zebra/zebra.conf`。在配置文件中,可以指定需要运行的路由协议(如RIPv1/v2、OSPF)以及对应的参数。例如,可以通过添加以下行来启用RIPv2协议: ``` router rip version 2 network 192.168.0.0/24 ``` 在配置文件中,还可以指定路由转发表的更新方式,例如使用RIP、OSPF协议等。可以通过以下行来指定使用RIP协议来更新路由表: ``` redistribute rip ``` 配置完成后,保存并退出配置文件。然后可以重新启动Zebra服务,使配置生效。 在动态路由环境下,Zebra将会接收邻居路由器发送的路由信息,并根据协议的规则更新本地路由表。可以使用`show ip route`命令查看当前路由表信息。 最后需要注意的是,Zebra还提供了一些管理和监控动态路由的命令,例如`show ip rip database`可以查看RIP协议的路由信息,`debug rip`可以开启RIP路由调试模式等。 总结来说,通过安装和配置Zebra,在Linux系统上就可以实现动态路由的功能。通过指定需要运行的路由协议和相关参数,Zebra可以自动更新路由表,提高网络的灵活性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值