1. 理论部分
1.1 软件简介
Quagga中文翻译斑驴,是一种先进的路由软件包,提供一套基于TCP/IP的路由协议。
1.2 斑驴的应用场景
– 使得操作系统变成专业的路由
– 使得操作系统具有与传统路由通过路由协议直接对接
1.3 斑驴支持的路由协议
– BGP
– OSPF
– RIP
– IS-IS
– MPLS
– LDP
– BFD
– PIM-SSM
1.4 斑驴与传统路由的区别
– 传统路由以提供所有路由协议的过程程序的方式运行
– 斑驴由多个守护进程共同构建路由表的方式运行
1.5 斑驴的架构
+----+ +----+ +-----+ +-----+ |bgpd| |ripd| |ospfd| |zebra| +----+ +----+ +-----+ +-----+ | +---------------------------|--+ | v | | UNIX Kernel routing table | | | +------------------------------+ Quagga System Architecture
如上图所示:
– ripd,负责处理RIP协议
– ospfd,负责处理ospf v2协议
– bgpd,负责处理BGP v4协议
– zebra,作为内核路由表管理器
其他守护进程:
– ripngd
– ospf6d
1.6 斑驴支持的系统平台
– GNU/Linux
– FreeBSD
– NetBSD
– OpenBSD
另外,以下平台将来也可能支持
– Solaris
– Mac OSX
1.7 斑驴对C库的依赖
– GNU’s CCC
– LLVM’s clang
– Intel’s ICC
注:以上C库经过充分的测试
2. 实践部分
2.1 环境信息
2.1.1 环境信息
IP Address = 10.168.0.60
OS = CentOS 7.3 x86_64
2.2 基本配置
2.2.1 基础安装包配置
yum install -y quagga
2.2.2 确认样例文件位置
rpm -ql quagga | grep conf.sample
信息显示如下:
/usr/share/doc/quagga-0.99.22.4/babeld.conf.sample /usr/share/doc/quagga-0.99.22.4/bgpd.conf.sample /usr/share/doc/quagga-0.99.22.4/bgpd.conf.sample2 /usr/share/doc/quagga-0.99.22.4/isisd.conf.sample /usr/share/doc/quagga-0.99.22.4/ospf6d.conf.sample /usr/share/doc/quagga-0.99.22.4/ospfd.conf.sample /usr/share/doc/quagga-0.99.22.4/ripd.conf.sample /usr/share/doc/quagga-0.99.22.4/ripngd.conf.sample /usr/share/doc/quagga-0.99.22.4/zebra.conf.sample
2.2.3 使用默认配置
cp /usr/share/doc/quagga-0.99.22.4/zebra.conf.sample /etc/quagga/zebra.conf
以上配置文件是核心配置,如果要开通OSPF协议,请使用以下配置,
cp /usr/share/doc/quagga-0.99.22.4/ospfd.conf.sample /etc/quagga/ospfd.conf
2.2.4 配置路由远程管理
vim /etc/sysconfig/quagga
修改如下配置,
OSPFD_OPTS="-A 0.0.0.0" ZEBRA_OPTS="-A 0.0.0.0"
注:以上定义所有地址都可管理,基于安全考量,我们建议你定义一个管理段的地址,例如“10.168.0.60”。
2.2.5 启动服务并配置服务自启动
systemctl start zebra.service systemctl enable zebra.service systemctl start ospfd.service systemctl enable ospfd.service
启动完毕后,请使用以下命令确认服务启动,
netstat -anp | egrep "ospfd|zebra"
可见如下输出,
tcp 0 0 0.0.0.0:2601 0.0.0.0:* LISTEN 2746/zebra tcp 0 0 0.0.0.0:2604 0.0.0.0:* LISTEN 2753/ospfd raw 0 0 0.0.0.0:89 0.0.0.0:* LISTEN 2753/ospfd raw6 0 0 :::58 :::* 7 2746/zebra
注:ospfd进程的89端口可能要等路由发布才能看到
2.2.6 允许路由的协议或端口通讯
egrep "89|58" /etc/protocols
可见如下信息,
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 ospf 89 OSPFIGP # Open Shortest Path First IGP
由于89与58端口不是IP协议是一种socket的类型,所以使用允许协议的方式配置,
firewall-cmd --permanent --add-protocol=ospf firewall-cmd --permanent --add-protocol=ipv6-icmp firewall-cmd --reload firewall-cmd --list-all
另外两个管理端口使用如下命令配置,
firewall-cmd --permanent --add-port 2601/tcp firewall-cmd --permanent --add-port 2604/tcp firewall-cmd --reload firewall-cmd --list-all
2.2.7 安装管理工具
yum install -y telnet
2.2.8 测试路由功能
telnet 127.0.0.1 2601
向导如下:
Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Hello, this is Quagga (version 0.99.22.4). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: Router>
以上是测试zebra进程,如果测试ospfd进程,请使用如下命令,
telnet 127.0.0.1 2604
向导如下:
Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Hello, this is Quagga (version 0.99.22.4). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: ospfd>
注,默认密码是“zebra”
2.2.9 允许写入配置文件
setsebool -P zebra_write_config 1
2.3 zebra进程的常用命令
2.3.1 模式的切换
2.3.1.1 进入特权模式
Router> enable Password: Router#
注:默认密码是zebra
2.3.1.2 进入配置模式
Router# configure terminal Router(config)#
2.3.1.3 退出配置模式
R1(config)# exit R1#
2.3.1.4 退出特权模式
R1# exit
信息显示如下:
Connection closed by foreign host.
2.3.2 配置路由名称
Router(config)# hostname R1 R1(config)#
2.3.3 密码相关配置
2.3.3.1 配置路由登录密码
R1(config)# password zebra
2.3.3.2 配置路由特权模式密码
R1(config)# enable password zebra
2.3.3.3 启用密码非明文模式
R1(config)# service password-encryption
2.3.4 接口相关配置
2.3.4.1 进入子接口模式
R1(config)# interface ens33 R1(config-if)#
2.3.4.2 配置接口IP地址
R1(config-if)# ip address 172.16.0.1/24 R1(config-if)# no shutdown R1(config-if)# ip address 172.16.0.2/24 R1(config-if)# no shutdown
2.3.4.3 禁用接口IP地址
R1(config-if)# no ip address 172.16.0.2/24 R1(config-if)# no shutdown
2.3.5 接口相关操作
2.3.5.1 查看所有物理接口
R1# show interface description
信息显示如下:
Interface Status Protocol Description ens33 up unknown lo up unknown
2.3.5.2 查看所有物理接口配置
R1# show interface
信息显示如下:
Interface ens33 is up, line protocol detection is disabled index 2 metric 1 mtu 1500 flags: HWaddr: 00:0c:29:ac:9d:6f inet 10.168.0.60/24 broadcast 10.168.0.255 inet 172.16.0.1/24 broadcast 172.16.0.255 inet6 fe80::20c:29ff:feac:9d6f/64 Interface lo is up, line protocol detection is disabled index 1 metric 1 mtu 65536 flags: inet 127.0.0.1/8 inet6 ::1/128
2.3.5.3 查看指定物理接口
R1# show interface ens33
信息显示如下:
Interface ens33 is up, line protocol detection is disabled index 2 metric 1 mtu 1500 flags: HWaddr: 00:0c:29:ac:9d:6f inet 10.168.0.60/24 broadcast 10.168.0.255 inet 172.16.0.1/24 broadcast 172.16.0.255 inet6 fe80::20c:29ff:feac:9d6f/64
2.3.6 路由操作
2.3.6.1 查看路由信息
R1# show ip route
信息显示如下:
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, A - Babel, > - selected route, * - FIB route K>* 0.0.0.0/0 via 10.168.0.1, ens33 C>* 10.168.0.0/24 is directly connected, ens33 C>* 127.0.0.0/8 is directly connected, lo C>* 172.16.0.0/24 is directly connected, ens33
2.3.7 ACL相关操作
2.3.7.1 配置允许转发的网段
R1(config)# access-list private-only permit 172.16.0.0/24
2.3.7.2 查看允许转发的网段
R1# show ip access-list
信息显示如下:
ZEBRA: Zebra IP access list private-only permit 172.16.0.0/24
2.3.8 配置相关操作
2.3.8.1 查看当前运行的配置
R1# show running-config
信息显示如下:
Current configuration: ! hostname R1 password 8 nZ6u2H61cc6C6 enable password 8 XjKyrETErdUhM service password-encryption ! interface ens33 ip address 172.16.0.1/24 ipv6 nd suppress-ra ! interface lo ! access-list private-only permit 172.16.0.0/24 ! ! ! line vty ! end
2.3.8.2 查看下次启动的配置
R1# show startup-config
信息显示如下:
! -*- zebra -*- ! ! zebra sample configuration file ! ! $Id: zebra.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $ ! hostname Router password zebra enable password zebra ! ! Interface's description. ! !interface lo ! description test of desc. ! !interface sit0 ! multicast ! ! Static default route sample. ! !ip route 0.0.0.0/0 203.181.89.241 ! !log file zebra.log
2.3.8.3 保存配置到启动
R1# copy running-config startup-config
参阅文档:
=======================================
http://www.nongnu.org/quagga/docs/docs-info.html
没有评论