用用用用 ZebraZebraZebraZebra 在在在在 LinuxLinuxLinuxLinux 上构建路由器上构建路由器上构建路由器上构建路由器
一一一一、、、、ZebraZebraZebraZebra 介绍介绍介绍介绍
Zebra 是一个 TPC/IP 路由软件,支持 BGP-4、BGP-4+、OSPFv2、
OSPFv3、RIPv1、RIPv2 和 RIPng。它的发行遵循 GNU 通用公共许可
,可以运行于 Linux 以及其他一些 Unix 变体操作系统上。
Zebra 是那些系统最新的发行版本中的路由软件。最新版本的 Zebra
以及文档可以从 GNU Zebra 网站上下载:http://www.zebra.org/
Zebra 的
独特,采用模块的方法来管理协议。可以根据网络需要
启用或者禁用协议。
Zebra 最为实用的一点是它的配置形式同 Cisco IOS 极其类似。尽
管它的配置与 IOS 相比还是有一些不同,但是这对于那些已经熟悉
IOS 的网络工程师来说在这种环境下工作将相当自如。
二二二二、、、、安装安装安装安装
1111、、、、下载下载下载下载
ftp://ftp.zebra.org/pub/zebra/zebra-0.95a.tar.gz
2222、、、、安装过程安装过程安装过程安装过程
# gunzip zebra-0.95a.tar.gz
#tar xvf zebra-0.95a.tar
会在当前目录下自动生成一个 zebra-0.95a 子目录,进入
zebra-0.95a 目录后执行以下命令安装:
# ./configure
# make
# make install
安装完成后执行文件位于/usr/local/sbin,如下所示:
# ls -l /usr/local/sbin
total 6480
-rwxr-xr-x 1 root root 1891727 Jan 31 23:37 bgpd
-rwxr-xr-x 1 root root 1090742 Jan 31 23:37 ospf6d
-rwxr-xr-x 1 root root 1398401 Jan 31 23:37 ospfd
-rwxr-xr-x 1 root root 824695 Jan 31 23:37 ripd
-rwxr-xr-x 1 root root 713611 Jan 31 23:37 ripngd
-rwxr-xr-x 1 root root 677048 Jan 31 23:37 zebra
配置
文件位于/usr/local/etc,如下所示:
# ls -l /usr/local/etc
total 44
-rw------- 1 root root 572 Jan 31 23:37 bgpd.conf.sample
-rw------- 1 root root 2801 Jan 31 23:37 bgpd.conf.sample2
-rw------- 1 root root 1110 Jan 31 23:37 ospf6d.conf.sample
-rw------- 1 root root 180 Jan 31 23:37 ospfd.conf.sample
-rw------- 1 root root 412 Jan 31 23:37 ripd.conf.sample
-rw------- 1 root root 396 Jan 31 23:37 ripngd.conf.sample
-rw------- 1 root root 375 Jan 31 23:37 zebra.conf.sample
三三三三、、、、运行运行运行运行
各个 zebra 模块运行时需要事先定义一个配置文件(*.conf),可直
接使用样本配置文件。
# cd /usr/local/etc
# cp zebra.conf.sample zebra.conf
可通过-h 参数查看 help:
# zebra -h
Usage : zebra [OPTION...]
Daemon which manages kernel routing table management and
redistribution between different routing protocols.
-b, --batch Runs in batch mode
-d, --daemon Runs in daemon mode
-f, --config_file Set configuration file name
-i, --pid_file Set process identifier file name
-k, --keep_kernel Don't delete old routes which installed by
zebra.
-l, --log_mode Set verbose log mode flag
-A, --vty_addr Set vty's bind address
-P, --vty_port Set vty's port number
-r, --retain When program terminates, retain added route
by zebra.
-v, --version Print program version
-h, --help Display this help and exit
Report bugs to bug-zebra@gnu.org
可使用-d 参数以后台进程模式启动各模块,比如 zebra:
# zebra –d
查看 zebra 进程是否运行:
# ps -ef | grep zebra
root 3039 1 0 14:52 ? 00:00:00 zebra -d
root 3131 2963 0 15:31 pts/3 00:00:00 grep zebra
检查后台进程监听端口:
# lsof -i:2601
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
zebra 3039 root 10u IPv6 9912 TCP
*:discp-client (LISTEN)
zebra-0.95a 安装好后会自动往系统/etc/service 中添加定义:
四四四四、、、、配置配置配置配置
zebra 是基本进程,诸如路由器 hostname、接口 IP 等基本信息都在
这个模块中配置。
可通过以下命令进入 zebra 模块:
# telnet localhost 2601
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Hello, this is zebra (version 0.95a).
Copyright 1996-2004 Kunihiro Ishiguro.
User Access Verification
Password:
密码缺省为 zebra,输入密码后进入到以下配置界面,是不是感觉进
入到了一台真正的 Cisco 路由器?
操作模式及命令跟 Cisco IOS 很相似,如查看配置也是使用 show
running-config,如下所示:
Router# sh run
Current configuration:
!
hostname Router
password zebra
enable password zebra
!
interface lo
!
interface eth1
ipv6 nd suppress-ra
!
interface peth0
ipv6 nd suppress-ra
!
interface sit0
ipv6 nd suppress-ra
!
interface vif0.0
ipv6 nd suppress-ra
!
interface eth0
ipv6 nd suppress-ra
!
interface vif0.1
ipv6 nd suppress-ra
!
interface veth1
ipv6 nd suppress-ra
!
interface vif0.2
ipv6 nd suppress-ra
!
interface veth2
ipv6 nd suppress-ra
!
interface vif0.3
ipv6 nd suppress-ra
!
interface veth3
ipv6 nd suppress-ra
!
interface xenbr0
ipv6 nd suppress-ra
!
line vty
!
end
下面是为接口 eth1 配置一个 ip 过程:
查看接口 eth1 配置:
五五五五、、、、案例案例案例案例
案例网络拓朴如下:
说明:在 Redhat linux 服务器和 Cisco 2610 路由器上启用 RIP 动态
路由器协议,实现个人 PC 机(10.200.51.202/8)能访问到 Cisco 2610
路由器 Loopback 1(172.16.1.1/24)。
1111、、、、Cisco 2610Cisco 2610Cisco 2610Cisco 2610 配置配置配置配置
2222、、、、RedhRedhRedhRedhat linuxat linuxat linuxat linux 服务器配置服务器配置服务器配置服务器配置::::
确保 zebra 和 ripd 模块已运行:
# ps -ef | grep zebra
root 3039 1 0 14:52 ? 00:00:00 zebra -d
root 3314 2901 0 17:02 pts/1 00:00:00 grep zebra
# ps -ef | grep ripd
root 3052 1 0 14:54 ? 00:00:00 ripd -d
root 3316 2901 0 17:02 pts/1 00:00:00 grep ripd
配置 Reahat linux 服务器 Eth1 网卡 ip:
配置 Redhat linux 服务器 RIP 动态路由协议:
3333、、、、查看查看查看查看
在 Cisco 2610 路由器检查 RIP 是否生效:
从 sh ip route 输出结果(白色加显部分)可知,Cisco 2610 路由
器已成功学习到 Redhat linux 服务器广播过来的 RIP 路由条目。
在 Redhat linux 服务器检查 RIP 是否生效:
从 sh ip rip 输出结果(白色加显部分)可知,Redhat linux 服务
器已成功学习到 Cisco 2610 路由器广播过来的 RIP 路由条目。
4444、、、、测试测试测试测试
在个人 PC 机上添加一条到 172.16.1.1/32 的静态路由:
从个人 PC 机通过 ping/tracert/telnet 测试网络:
从以上测试可知,Redhat linux 服务器运行的 RIP 动态路由协议能
成功和 Cisco 2610 路由器运行的 RIP 动态路由协议配合工作。
5555、、、、特别说明特别说明特别说明特别说明
Redhat linux 服务器必须启用路由转发功能:
# echo “1” > /proc/sys/net/ipv4/ip_forward
六六六六、、、、结结结结尾尾尾尾语语语语
1111、、、、对于小型公司来说对于小型公司来说对于小型公司来说对于小型公司来说,,,,可能没这么多资金购买硬件路由产品可能没这么多资金购买硬件路由产品可能没这么多资金购买硬件路由产品可能没这么多资金购买硬件路由产品,,,,低成低成低成低成
本的本的本的本的 PCPCPCPC 机机机机+linux+zebra+linux+zebra+linux+zebra+linux+zebra 提供了一个可行的解决
提供了一个可行的解决方案提供了一个可行的解决方案提供了一个可行的解决方案;;;;
2222、、、、现在很多培训机构现在很多培训机构现在很多培训机构现在很多培训机构,,,,特别是小型培训机构特别是小型培训机构特别是小型培训机构特别是小型培训机构,,,,为了节省投资为了节省投资为了节省投资为了节省投资,,,,也会也会也会也会
采采采采取这种架构搭建实验环境取这种架构搭建实验环境取这种架构搭建实验环境取这种架构搭建实验环境。。。。
王忠昆
工程部
2008 年 2 月 2 日