vmware centos 中 quagga ospf 路由创建
背景:因为docker 需要进行部署 一个多主机的集群,在leader的k8s上有介绍有利用quagga进行一个集群的路由的创建,于是利用本想利用docker直接部署一个,但是期间碰见了各种问题,于是先从quagga的非docker版本进行一个创建,然后排错,以下记录一下部署过程中碰见的各种问题. 第一步: 创建VMware的网络 (1)创建虚拟网络编辑->虚拟网络编...
背景:
因为docker 需要进行部署 一个多主机的集群,在leader的k8s上有介绍有利用quagga进行一个集群的路由的创建,于是利用本想利用docker直接部署一个,但是期间碰见了各种问题,于是先从quagga的非docker版本进行一个创建,然后排错,以下记录一下部署过程中碰见的各种问题.
第一步: 创建VMware的网络
(1)创建虚拟网络
编辑->虚拟网络编辑器->进行设置 如下
(2)虚拟机选择创建的网络.
虚拟机设置->网络适配器
(3)虚拟机中验证是否配置成功
如果ping 不成功 可以进行网络一个重启 ,这个帮我解决了不少问题.
如下:
service network restart
至此 虚拟机的网络创建完成.
第二步 quagga的安装 .
架构图:
如上: 有两台虚拟机 ,一台的ip为192.168.181.129 ,上面的docker0的网段为192.168.10.1
另外一台的ip为192.168.181.128 ,上面的docker0的网段为192.168.20.1
附上 修改docker 网络 的 命令
可以用编辑/etc/docker/daemon.json文件,添加内容 "bip": "ip/netmask" [ 切勿与宿主机同网段 ]
[root@localhost /]# vi /etc/docker/daemon.json
{"bip":"192.168.100.1/24"}
安装 quagga
Quagga软件包含有几个协同运行的后台程序。我
Zebra:核心后台程序,负责内核接口和静态路由。
Ospfd:IPv4 OSPF后台程序。
将Quagga安装到CentOS上
我们首先使用yum来安装Quagga。
yum install quagga
在CentOS 7上,SELinux在默认情况下阻止/usr/sbin/zebra写入到其配置目录中。这个SELinux策略干扰了我们所要描述的安装过程,于是我们想禁止该策略。为此,关闭SELinux(不推荐),或者启用“zebra_write_config”布尔表达式,如下所示。如果你使用CentOS 6,可以跳过这一步。
setsebool -P zebra_write_config 1
要是不进行这种更改,我们在试图从Quagga的命令外壳里面保存Zebra配置时,就会看到下列错误。
Can‘t open configuration file /etc/quagga/zebra.conf.OS1Uu5.
(无法打开配置文件/etc/quagga/zebra.conf.OS1Uu5。)
Quagga安装完毕后,我们就配置必要的对等IP地址,并更新OSPF设置。Quagga随带一个名为vtysh的命令行外壳。vtysh里面使用的Quagga命令类似思科或瞻博等各大路由器厂商的那些命令
第一个阶段:配置Zebra (配置对等网,已经是对等网可跳过这一阶段)
由于yum install的时候默认是会启动zebra跟ospfd 进程的,所有要先旧的关闭掉然后启动新的.
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"
创建zebra 配置
启动vtysh命令外壳:
vtysh
首先,我们为Zebra配置日志文件。为此,输入下列内容,进入vtysh中的全局配置模式:
启动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 ens33 up,line protocol detection is disabled
. . . . .
Interface docker0 is up, line protocol detection isdisabled
配置ens33 参数:
site-A-RTR# configure terminal
site-A-RTR(config)# interface ens33
site-A-RTR(config-if)# ip address 192.168.181.129/24
site-A-RTR(config-if)#description to-site-B
site-A-RTR(config-if)# no shutdown
继续配置docker0参数:
site-A-RTR(config)# interface docker0
site-A-RTR(config-if)# ip address 192.168.10.1/24
site-A-RTR(config-if)#description to-site-A-LAN
site-A-RTR(config-if)# no shutdown
现在验证配置:
site-A-RTR(config-if)# do show interface ens33
site-A-RTR(config-if)# do show interface docker0
永久性保存配置:
site-A-RTR(config-if)# do write
提示:
提示:一旦Zebra后台程序已启动,用vtysh的命令行接口进行的任何更改会立即生效。不需要在配置变更后重启Zebra后台程序。没有write 是不会写到配置文件中的show running-config 可查看正在运行的配置。
可以通过 查看/etc/quagga/zebra.conf 进行 对比验证 查看是否正确.
[root@localhost quagga]# cat zebra.conf内容如下:
!
! Zebra configuration saved from vty
! 2018/09/10 05:18:26
!
hostname Router
password zebra
enable password zebra
log file /var/log/quagga/quagga.log
!
interface docker0
description to-site-A-LAN
ip address 192.168.10.1/24
ipv6 nd suppress-ra
!
interface ens33
description to-site-B
ip address 192.168.181.129/24
ipv6 nd suppress-ra
!
interface lo
!
interface virbr0
ipv6 nd suppress-ra
!
interface virbr0-nic
ipv6 nd suppress-ra
!
ip forwarding
!
!
line vty
!
对于第二台主机同样贴出对应的配置:
[root@localhost quagga]# cat zebra.conf
!
! Zebra configuration saved from vty
! 2018/09/10 05:18:26
!
hostname Router
password zebra
enable password zebra
log file /var/log/quagga/quagga.log
!
interface docker0
description to-site-A-LAN
ip address 192.168.20.1/24
ipv6 nd suppress-ra
!
interface ens33
description to-site-B
ip address 192.168.181.128/24
ipv6 nd suppress-ra
!
interface lo
!
interface virbr0
ipv6 nd suppress-ra
!
interface virbr0-nic
ipv6 nd suppress-ra
!
ip forwarding
!
!
line vty
!
如果直接修改配置 需要重启进程来让配置生效。
配置完成之后可以通过 ping 来验证网络是否通了。
第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 192.168.181.129
添加将参与OSPF的网络:
site-A-RTR(config-router)# network 192.168.181.0/24 area 0 #对等网段 即宿主机外网网段
site-A-RTR(config-router)# network 192.168.10.0/24 area 0 #内网段即docker容器所在网段
永久性保存配置:
site-A-RTR(config-router)# do write
针对site-B,也重复类似的OSPF配置:
site-B-RTR(config-router)# network 192.168.181.0/24 area 0 #对等网段 即宿主机外网网段
site-B-RTR(config-router)# network 192.168.20.0/24 area 0 #内网段即docker容器所在网段
site-B-RTR(config-router)# do write
提示:OSPF邻居现在应该会出现。只要ospfd在运行,通过vtysh外壳所作的任何与OSPF有关的配置变更都会立即生效,没必要重启ospfd。
同样贴出 /etc/quagga/ospfd.conf的配置
[root@localhost quagga]# cat ospfd.conf
!
! Zebra configuration saved from vty
! 2018/09/10 05:18:26
!
hostname ospfd
password zebra
log stdout
!
!
!
interface docker0
!
interface ens33
!
interface lo
!
interface virbr0
!
interface virbr0-nic
!
router ospf
ospf router-id 192.168.181.129
network 192.168.10.0/24 area 0.0.0.0
network 192.168.181.0/24 area 0.0.0.0
!
line vty
!
另外一台主机 配置
[root@localhost quagga]# cat ospfd.conf
!
! Zebra configuration saved from vty
! 2018/09/10 05:18:26
!
hostname ospfd
password zebra
log file /var/log/quagga/ospf.log
!
!
!
interface docker0
!
interface ens33
!
interface lo
!
interface virbr0
!
interface virbr0-nic
!
router ospf
ospf router-id 192.168.181.128
network 192.168.20.0/24 area 0.0.0.0
network 192.168.181.0/24 area 0.0.0.0
!
line vty
!
网上的步骤大多到 第二步:
第三个阶段 配置 iptalbes 因为这个没有配置导致 不能自学习路由。
https://blog.csdn.net/dingtao7890/article/details/53333425
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -t nat -F
[root@localhost ~]# iptables-save
第四个阶段 验证配置正确性:
128上验证:
129上验证
vtysh 验证
[root@localhost ~]# vtysh
Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
localhost.localdomain# 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 192.168.181.2, ens33
C>* 127.0.0.0/8 is directly connected, lo
O 192.168.10.0/24 [110/10] is directly connected, docker0, 00:01:56
C>* 192.168.10.0/24 is directly connected, docker0
O>* 192.168.20.0/24 [110/20] via 192.168.181.128, ens33, 00:01:15
C>* 192.168.122.0/24 is directly connected, virbr0
O 192.168.181.0/24 [110/10] is directly connected, ens33, 00:02:47
C>* 192.168.181.0/24 is directly connected, ens33
验证OSPF邻居和路由器
localhost.localdomain# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
192.168.181.128 1 Full/Backup 30.355s 192.168.181.128 ens33:192.168.181.129 0 0 0
步骤5. 这个我没实践过 记录下~
相关参考内核参数调优: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
参考: https://blog.csdn.net/dingtao7890/article/details/53333425 解决zebra下ospf正常启动却无法建立邻居的问题
https://www.aliyun.com/jiaocheng/136775.html
http://www.xitongzhijia.net/xtjc/20141211/32372.html
https://blog.csdn.net/BokeyGeGe/article/details/78631328 虚拟机NAT模式的网络设置
https://blog.csdn.net/lin521lh/article/details/78470732 修改docker0默认ip
更多推荐
所有评论(0)