用Zebra 在Linux 上构建路由器实战手册
一、Zebra 介绍 Zebra 是一个 TPC/IP 路由软件,支持 BGP-4、BGP-4+、OSPFv2、 OSPFv3、RIPv1、RIPv2 和 RIPng。它的发行遵循 GNU 通用公共许可 协议,可以运行于 Linux 以及其他一些 Unix 变体操作系统上。 Zebra 是那些系统{zx1}的发行版本中的路由软件。{zx1}版本的 Zebra 以及文档可以从 GNU Zebra 网站上下载: Zebra 的设计独特,采用模块的方法来管理协议。可以根据网络需要 启用或者禁用协议。 Zebra 最为实用的一点是它的配置形式同 Cisco IOS 极其类似。尽 管它的配置与 IOS 相比还是有一些不同,但是这对于那些已经熟悉 IOS 的网络工程师来说在这种环境下工作将相当自如。 二、安装 1、下载 2、安装过程 # 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 可使用-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)。 1、Cisco 2610 配置 2、Redhat 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 动态路由协议: 3、查看 在Cisco 2610 路由器检查RIP 是否生效: 从sh ip route 输出结果(白色加显部分)可知,Cisco 2610 路由 器已成功学习到Redhat linux 服务器广播过来的RIP 路由条目。 在Redhat linux 服务器检查RIP 是否生效: 从sh ip rip 输出结果(白色加显部分)可知,Redhat linux 服务 器已成功学习到Cisco 2610 路由器广播过来的RIP 路由条目。 4、测试 在个人PC 机上添加一条到172.16.1.1/32 的静态路由: 从个人PC 机通过ping/tracert/telnet 测试网络: 从以上测试可知,Redhat linux 服务器运行的RIP 动态路由协议能 成功和Cisco 2610 路由器运行的RIP 动态路由协议配合工作。 5、特别说明 Redhat linux 服务器必须启用路由转发功能: # echo “1” > /proc/sys/net/ipv4/ip_forward 六、结尾语 1、对于小型公司来说,可能没这么多资金购买硬件路由产品,低成 本的PC 机+linux+zebra 提供了一个可行的解决方案; 2、现在很多培训机构,特别是小型培训机构,为了节省投资,也会 采取这种架构搭建实验环境。 |