Quagga简介、安装、配置说明

    Quagga软件原名是Zebra是由一个日本开发团队编写的一个以GNU版权方式发布的软件。可以使用Quagga将linux机器打造成一台功能完备的路由器。

模块化设计:Quagga基于模块化方案的设计,即对每一个路由协议使用单独的守护进程。
运行速度快:因为使用了模块化的设计,使得Quagga的运行速度比一般的路由选择程序要快。
可靠性高:在所有软件模块都失败的情况下,路由器可以继续保持连接并且daemons也会继续运行。故障诊断不必离线的状态下被诊断和更正
支持Ipv6:Quagga不仅支持Ipv4,还支持Ipv6。

Quagga的运行机制

由于Quagga采用模块化的设计,因此Quagga运行时要运行多个守护进程,包括ripd ripngd ospfd ospf6d bgpd 和Zebra。
其中,Zebra守护进程用来更新内核的路由表,而其他的守护进程负责进行相应路由选择协议的路由更新.
就是ripd,bgpd,ospfd三个路由协议守护进程,把通过动态路由协议学习到路由信息都要交给zebra守护进程,然后zebra进程与        kernel routed交互,把路由信息给kernel  内核根据路由协议守护进程学习到路由内容更新自己路由表。

每个守护程序都有自己的路由表。zebra守护程序维护内核路由表,并且还负责在各种路由协议守护程序之间重新分配信息。

关系如图:

 

                                                      

安装:

安装依赖软件包

yum install readline-devel   (--enable-vtysh需要) 

解压:

tar -zxvf  *.tar.gz

cd *

配置,生成Makefile文件
./configure –enable-vtysh –enable-user=root –enable-group=root –localstatedir=/var/run/quagga –sysconfdir=/etc/quagga
1
–enable-vtysh 生成vtysh,vtysh是一个可以直接配置其他Quagga进程的shell。不使用vtysh的话,需要telnet到每个进程中去配置,比较麻烦。
–enable-user=root –enable-group=root 默认运行用户为quagga,这里修改为root,可以不用改变文件夹的属性,也不用单独增加用户。
–localstatedir=/var/run/quagga 运行时的PID文件位置
–sysconfdir=/etc/quagga 运行时的配置文件目录,默认位置在/usr/local/etc中
执行./configure后会显示所有的配置清单,可以核对一下。

Quagga configuration
——————–
quagga version          : 0.99.22.4
host operating system   : linux-gnu
source code location    : .
compiler                : gcc
compiler flags          : -Os -fno-omit-frame-pointer -g -std=gnu99 -Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual
make                    : make
includes                : 
linker flags            :  -lcrypt   -lrt   -lm
state file directory    : /var/run/quagga
config file directory   : /etc/quagga
example directory       : /etc/quagga
user to run as          : root
group to run as         : root
group for vty sockets   : 
config file mask        : 0600
log file mask           : 0600

默认的优化选项为-Os,如果需要使用gdb调试的,可以使用参数–with-cflags设置编译优化选项为-O0。

./configure –enable-vtysh –enable-user=root –enable-group=root –localstatedir=/var/run/quagga –sysconfdir=/etc/quagga –with-cflags="-O0 -fno-omit-frame-pointer -g -std=gnu99 -Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual"
1
编译、安装
make
make install

在make之后可能会出现如图的错误

解决办法·:yum install texinfo

make clean

make

安装好后,可执行文件在目录/usr/local/sbin/,配置文件在/etc/quagga/

创建Quagga相关目录
运行时的PID文件位置

mkdir /var/run/quagga
chmod 777 /var/run/quagga
1
2
注意:Centos 7的/var/run/目录存放在tmpfs中,也就是内存里,重启后run目录会清空。所以每次启动后需要重新创建quagga目录。

配置文件目录

mkdir /etc/quagga
chmod 777 /etc/quagga
1
2
log目录

mkdir /var/log/quagga/
chmod 777 /var/log/quagga/
1
2
编辑配置文件
以zebra为例

cp /etc/quagga/zebra.conf.sample /etc/quagga/zebra.conf

如果要运行ripd\bgpd \ospfd的守护进程(启动rip bgp ospf 协议)也要配置编辑配置文件

cp /etc/quagga/*.conf.sample /etc/quagga/*.conf

 

1
vim /etc/quagga/zebra.conf 进行修改
(添加红框中的部分)

这个操作就是把zebra守护进程运行内容写到zerbra.log中。

ripd\bgpd \ospfd守护进程也要添加,意思一样。

至此,Quagga安装成功。下面仍然以zebra为例简单介绍Quagga单个模块的运行。
 

运行zebra守护进行
/usr/local/sbin/zebra -h // 查看命令行选项
/usr/local/sbin/zebra -d // 启动zebra后台程序

运行其他守护进程
/usr/local/sbin/(ospfd|bgpd|ripd) -d

简单的配置使用

首先 cat /etc/service 可以看到各种协议所对应的接口

可以看到zebra的端口是为zebre vty ——2601
              ospfd                                         2604

登录zebra的TTY

telnet 127.1 2601        // 默认密码:zebra
  • 登录zebra后就可以使用zebra的命令进行操作。登录其他的守护进程,都是通过它的端口登录的。
  • 也可以直接执行 vtysh 进行配置。
  • 如果不能使用telnet,则安装
    yum install telnet
    selinux会影响zebra运行,关闭掉
    /etc/selinux/config文件中,设置为:disabled
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing – SELinux security policy is enforced.
    #     permissive – SELinux prints warnings instead of enforcing.
    #     disabled – No SELinux policy is loaded.
    #SELINUX=enforcing
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted – Targeted processes are protected,
    #     mls – Multi Level Security protection.
    SELINUXTYPE=targeted
  •  
  • 如果路由不能转发
    修改/etc/sysctl.conf文件, 启用IPv4转发功能。
    net.ipv4.ip_forward = 1
    如果发生了源路由验证的路由问题
    修改/etc/sysctl.conf文件, 禁用源路由验证功能。
    net.ipv4.conf.default.rp_filter = 1
  • 为了使用quagga里面的守护进程,配置各种协议开始的开始步骤
    1.vtysh 或者 telnet 127.0.0.1 *(守护进程端口)
    2.enable 将模式从查看模式更改为启用模式 
    3.configure terminal   configure 终端 -用于配置路由器 进入全局配置模式
    4.协议配置命令
  • 5 . do write (保存协议配置命令到conf文件中)
     

这是说明一点

登录vtysh,写配置动态路由协议命令,最后是保存到*.conf文件中 ,所以也可以直接把动态路由协议配置命令直接写到.conf文件中,不用登录vtysh

 

show running-config :查看写进路由器*.conf的内容
show ip ospf  database :该命令用于show出该路由器所学习到的完成的网络拓扑。

show ip ospf neighbor:查看ospf的邻居

show ip ospf database router X.X.X.X

由于该命令show出来的是ospf一类(路由器)LSA,所以show出来的内容永远都是路由器所在Area内的信息;

就算后面的X.X.X.X是一台ABR,show出来的内容同样只是ABR上属于该路由器所在Area内的信息;

 

show ip ospf database network X.X.X.X

该命令show出来的是ospf二类(网络)LSA,所以show出来的内容同样是属于路由器所在区域内的中转网络信息;

后面所跟的X.X.X.X是指在广播型LAN中担任DR的路由器上属于该LAN网络的子接口的IP地址信息.即中转网络LSID

例如Router A的Fa0/1与Router B的Fa0/2以及Router C的Fa0/3过LAN相连,Router B被推举成为DR,

那么此时该Lan虚拟出来的中转网络的LSID就是X.X.X.X就应该是Router B的Fa0/2接口的接口IP地址.

 

show ip ospf database summary X.X.X.X

该命令show出来的是ospf三类(汇总)LSA,所以show出来的内容是属于其他Area泛洪过来的网络信息.

这里面是不会存在该路由器所在Area的网络信息的.所以ospf正是使用三类LSA来反映非本Area网络拓扑.

 show ip route :会显示哪些是内核学的 哪些是bgp学的 哪些是ospf学的

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注