OSPF路由器

Quagga是一款开源路由软件套件,它可以用来将你的Linux设备变成一个功能完备的路由器,支持几种主要的路由协议,比如RIPOSPFBGPISIS路由器。它完全为IPv4IPv6作好了准备,还支持路由/前缀过滤

这里我们使用宿主机充当OSPF路由器,来维护路由表。

两个Linux设备之间的对等:172.22.80.0/24

Site-A172.19.0.0/16

Site-B172.18.0.0/16

 

我们首先使用yum来安装Quagga (或到官网下载更新版本http://download.savannah.gnu.org/releases/quagga/

 

yum install quagga  -y

Quagga安装完毕后,我们就配置必要的对等IP地址,并更新OSPF设置。Quagga随带一个名为vtysh的命令行外壳。vtysh里面使用的Quagga命令类似思科或瞻博等各大路由器厂商的那些命令

 

第一个阶段:配置Zebra  (配置对等网,已经是对等网可跳过这一阶段)

cp /usr/share/doc/quagga-XXXXX/zebra.conf.sample/etc/quagga/zebra.conf

chown quagga -R /etc/quagga/  #给予权限,每次write 后都回制动生成一个sav 的备份文件

systemctl enable zebra

systemctl start zebra

systemctl list-unit-files|grep "zebra"

 

启动vtysh命令外壳:

vtysh

首先,我们为Zebra配置日志文件。为此,输入下列内容,进入vtysh中的全局配置模式:

site-A-RTR# configure terminal

并指定日志文件位置,然后退出该模式:

site-A-RTR(config)# log file /var/log/quagga/quagga.log

site-A-RTR(config)# exit

永久性保存配置:

site-A-RTR# write

下一步,我们在必要时确定可用接口,然后配置IP地址。

site-A-RTR# show interface

Interface ens192 is up,line protocol detection is disabled

. . . . .

Interface docker0 is up, line protocol detection isdisabled

配置ens192参数:

site-A-RTR# configure terminal

site-A-RTR(config)# interface ens192

site-A-RTR(config-if)# ip address 172.22,80.101/24

site-A-RTR(config-if)#description to-site-B

site-A-RTR(config-if)# no shutdown

继续配置eth1参数:

site-A-RTR(config)# interface docker0

site-A-RTR(config-if)# ip address 172.19.0.1/16

site-A-RTR(config-if)# descriptionto-site-A-LAN

site-A-RTR(config-if)# no shutdown

现在验证配置:

site-A-RTR(config-if)# do show interface ens192

site-A-RTR(config-if)# do show interface docker0

永久性保存配置:

site-A-RTR(config-if)# do write

针对site-B服务器,也重复IP地址配置这个步骤。

要是一切顺利,你应该能够从site-A服务器来ping检测site-B的对等IP

提示:一旦Zebra后台程序已启动,用vtysh的命令行接口进行的任何更改会立即生效。不需要在配置变更后重启Zebra后台程序。没有write 是不会写到配置文件中的show  running-config 可查看正在运行的配置。

 

2个阶段:配置OSPF

 

我们先创建一个OSPF配置文件,然后启动OSPF后台程序:

# cp /usr/share/doc/quagga-XXXXX/ospfd.conf.sample/etc/quagga/ospfd.conf

chown quagga -R /etc/quagga/

systemctl enable ospfd

systemctl start ospfd

systemctl list-unit-files|grep "ospfd"

现在启动vtysh外壳,继续进行OSPF配置:

vtysh

进入路由器配置模式:

site-A-RTR# configure terminal

site-A-RTR(config)# router ospf

还可以手动设置router-id

这个IP一定要唯一,不然后期可能回引发很多问题这里我们暂时定为宿主机IP

site-A-RTR(config-router)# router-id 172.22,80.101

 

添加将参与OSPF的网络:

site-A-RTR(config-router)# network  172.22.80.0/24area 0   #对等网段 即宿主机外网网段

site-A-RTR(config-router)# network  172.19.0.0/16area 0   #内网段即docker容器所在网段

 

永久性保存配置:

site-A-RTR(config-router)# do write

针对site-B,也重复类似的OSPF配置:

site-B-RTR(config-router)# 172.22.80.0/24 area 0

site-B-RTR(config-router)# network 172.19.0.0/16 area 0

site-B-RTR(config-router)# do write

 

提示OSPF邻居现在应该会出现。只要ospfd在运行,通过vtysh外壳所作的任何与OSPF有关的配置变更都会立即生效,没必要重启ospfd

在下一个部分,我们将验证已安装的Quagga环境。

 

验证

1. ping来测试

首先,你应该能够从site-Aping检测site-B的局域网了网。确保你的防火墙没有阻止ping检测流量。

[root@site-A-RTR ~]# ping  172.22.80.102-c 2

2. 检查路由表

内核和Quagga路由表里面应该都有必要的路由。

[root@site-A-RTR ~]# ip route

[root@site-A-RTR ~]# vtysh

site-A-RTR# show ip route

3 验证OSPF邻居和路由器

vtysh外壳里面,你可以检查必要的邻居有没有出现,是否记住合适的路由。

[root@site-A-RTR ~]# vtysh

site-A-RTR# show ip ospf neighbor

 

 

 

相关参考内核参数调优:sysctl -a

#该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.core.netdev_max_backlog = 500000

#开启路由转发功能

net.ipv4.ip_forward = 1

#修改文件描述符

fs.nr_open = 5242880

fs.file-max = 4194304

sed -i 's/1024/4194304/g' /etc/security/limits.conf