Ceph入门到精通-如何编译安装Quagga?

news2024/11/18 18:46:44

Quagga

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 = RHEL 8.0 x86_64

2.1.2 编译环境配置

yum -y install gcc gcc-c++ make expat-devel

2.1.3 下载安装包

cd ~
wget https://gogs.quagga.net/attachments/a6f5eb64-639a-49cf-964e-7aa196b9ac50 -O quagga-1.2.4.tar.gz

注:如果你需要下载其他版本,或以上链接无效,请参阅如下链接,
Releases · Quagga/quagga · GitHub

2.1.4 解压安装包

tar -xf quagga-1.2.4.tar.gz

2.2 编译安装

2.2.1 预编译软件包

cd ~/quagga-1.2.4/
./configure --bindir=/usr/bin \
            --sbindir=/usr/sbin \
            --libexecdir=/usr/libexec \
            --sysconfdir=/etc/quagga \
            --localstatedir=/var/run/quagga \
            --libdir=/usr/lib64  \
            --includedir=/usr/include \
            --datarootdir=/usr/share \
            --infodir=/usr/share/info \
            --localedir=/usr/share/locale \
            --mandir=/usr/share/man \
            --docdir=/usr/share/doc/quagga \
            --enable-user=quagga \
            --enable-group=quagga \
            --enable-vty-group=quaggavt

参数“localstatedir”是必须设置为“/var/run/quagga”,否则配置ospf时会出现以下错误提示,

OSPF not enabled on this interface

如果看到如下错误提示,

configure: error: vtysh needs libreadline but was not found and usable on your system.

你可能需要安装如下依赖包,

yum install -y readline-devel

如果看到如下错误提示,

configure: error: Package requirements (libcares) were not met:

Package 'libcares', required by 'virtual:world', not found

你可能需要安装如下依赖包,

yum install -y c-ares-devel

2.2.2 编译并安装软件包

make
make install

2.3 配置Quagga主服务zebra

2.3.1 创建运行用户

groupadd -g 85 quaggavt
groupadd -g 92 quagga
useradd -u 92 -g 92 -d /var/run/quagga/ -s /sbin/nologin quagga
usermod -G quaggavt quagga

2.3.2 部署配置文件

cp /etc/quagga/vtysh.conf.sample /etc/quagga/vtysh.conf
cp /etc/quagga/zebra.conf.sample /etc/quagga/zebra.conf
chown quagga:quagga /etc/quagga/
chown quagga:quagga /etc/quagga/*.conf
chown quagga:quaggavt /etc/quagga/vtysh.conf
chmod 640 /etc/quagga/*.conf

2.3.3 测试运行环境

zebra -d -f /etc/quagga/zebra.conf -C

参数简介,
-d 参数声明zebra以damon的模式运行
-f 参数声明zebra配置文件的位置
-C 参数声明zebra以测试模式运行并退出(适合调试)

2.3.4 手动测试运行

zebra -d -f /etc/quagga/zebra.conf -i /run/quagga/zebra.pid

参数简介,
-i 参数声明pid文件的位置
命令执行后,我们建议你使用如下命令确认运行正常,

pgrep -a zebra

如果你看到如下输出,则守护进程正常运行,

47962 zebra -d -f /etc/quagga/zebra.conf -i /run/quagga/zebra.pid

如果你需要手动退出进程,请使用如下命令,

kill 2 `pgrep zebra`

2.3.5 部署服务脚本

cp ~/quagga-1.2.4/redhat/*.service /usr/lib/systemd/system/
cp ~/quagga-1.2.4/redhat/quagga.sysconfig /etc/sysconfig/quagga

如果你需要外部主机可以管理zebra,我建议你修改如下配置

vim /etc/sysconfig/quagga

内容修改如下,

#
# Default: Bind all daemon vtys to the loopback(s) only
#
BABELD_OPTS="-A 127.0.0.1"
BGPD_OPTS="-A 127.0.0.1"
ISISD_OPTS="-A ::1"
OSPF6D_OPTS="-A ::1"
OSPFD_OPTS="-A 127.0.0.1"
RIPD_OPTS="-A 127.0.0.1"
RIPNGD_OPTS="-A ::1"
# ZEBRA_OPTS="-A 127.0.0.1"
ZEBRA_OPTS="-A 0.0.0.0"
PIMD_OPTS="-A 127.0.0.1"

# Watchquagga configuration for LSB initscripts
#
# (Not needed with systemd: the service files are configured to automatically
# restart any daemon on failure. If zebra fails, all running daemons will be
# stopped; zebra will be started again; and then the previously running daemons
# will be started again.)
#
# Uncomment and edit this line to reflect the daemons you are actually using:
#WATCH_DAEMONS="zebra bgpd ospfd ospf6d ripd ripngd"
#
# Timer values can be adjusting by editing this line:
WATCH_OPTS="-Az -b_ -r/sbin/service_%s_restart -s/sbin/service_%s_start -k/sbin/service_%s_stop"

由于官方提供的启动脚本执行会报错,我们建议你使用如下命令修改,

vim /usr/lib/systemd/system/zebra.service

脚本修改如下,

[Unit]
Description=GNU Zebra routing manager
Wants=network.target
Before=network.target
After=network-pre.target
ConditionPathExists=/etc/quagga/zebra.conf
Documentation=man:zebra

[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/quagga
ExecStartPre=/sbin/ip route flush proto zebra
ExecStartPre=-/usr/bin/mkdir -p /run/quagga
ExecStartPre=-/bin/chown -f quagga:quagga /run/quagga /etc/quagga/zebra.conf
ExecStartPre=-/bin/chown -f quagga:quaggavt /etc/quagga/vtysh.conf
ExecStartPre=-/bin/chmod -f 640 /etc/quagga/zebra.conf  /etc/quagga/vtysh.conf
ExecStart=/usr/sbin/zebra -d $ZEBRA_OPTS -f /etc/quagga/zebra.conf -i /run/quagga/zebra.pid
Restart=on-abort

[Install]
WantedBy=multi-user.target

修改完毕后,你需要重新载入脚本,

systemctl daemon-reload

2.3.6 测试启动脚本

systemctl start zebra.service
systemctl stop zebra.service
systemctl restart zebra.service
systemctl status zebra.service

2.4.7 配置服务自启动

systemctl enable zebra.service

2.4 配置Quagga ospfd服务

2.4.1 部署配置文件

cp /etc/quagga/ospfd.conf.sample /etc/quagga/ospfd.conf
chown quagga:quagga /etc/quagga/
chown quagga:quagga /etc/quagga/*.conf
chown quagga:quaggavt /etc/quagga/vtysh.conf
chmod 640 /etc/quagga/*.conf

2.4.2 测试运行环境

ospfd -d -f /etc/quagga/zebra.conf -C

参数简介,
-d 参数声明zebra以damon的模式运行
-f 参数声明zebra配置文件的位置
-C 参数声明zebra以测试模式运行并退出(适合调试)

2.4.3 手动测试运行

ospfd -d -f /etc/quagga/ospfd.conf -i /run/quagga/ospfd.pid

参数简介,
-i 参数声明pid文件的位置
命令执行后,我们建议你使用如下命令确认运行正常,

pgrep -a ospfd

如果你看到如下输出,则守护进程正常运行,

51600 ospfd -d -f /etc/quagga/ospfd.conf -i /run/quagga/ospfd.pid

如果你需要手动退出进程,请使用如下命令,

kill 2 `pgrep ospfd`

2.4.4 部署服务脚本

vim /etc/sysconfig/quagga

内容修改如下,

#
# Default: Bind all daemon vtys to the loopback(s) only
#
BABELD_OPTS="-A 127.0.0.1"
BGPD_OPTS="-A 127.0.0.1"
ISISD_OPTS="-A ::1"
OSPF6D_OPTS="-A ::1"
# OSPFD_OPTS="-A 127.0.0.1"
OSPFD_OPTS="-A 0.0.0.0"
RIPD_OPTS="-A 127.0.0.1"
RIPNGD_OPTS="-A ::1"
# ZEBRA_OPTS="-A 127.0.0.1"
ZEBRA_OPTS="-A 0.0.0.0"
PIMD_OPTS="-A 127.0.0.1"

# Watchquagga configuration for LSB initscripts
#
# (Not needed with systemd: the service files are configured to automatically
# restart any daemon on failure. If zebra fails, all running daemons will be
# stopped; zebra will be started again; and then the previously running daemons
# will be started again.)
#
# Uncomment and edit this line to reflect the daemons you are actually using:
#WATCH_DAEMONS="zebra bgpd ospfd ospf6d ripd ripngd"
#
# Timer values can be adjusting by editing this line:
WATCH_OPTS="-Az -b_ -r/sbin/service_%s_restart -s/sbin/service_%s_start -k/sbin/service_%s_stop"

由于官方提供的启动脚本执行会报错,我们建议你使用如下命令修改,

vim /usr/lib/systemd/system/ospfd.service

脚本修改如下,

[Unit]
Description=OSPF routing daemon
BindsTo=zebra.service
Wants=network.target
After=zebra.service network-pre.target
Before=network.target
ConditionPathExists=/etc/quagga/ospfd.conf
Documentation=man:ospfd

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/quagga
ExecStartPre=-/bin/chown -f quagga:quagga /etc/quagga/ospfd.conf
ExecStartPre=-/bin/chmod -f 640 /etc/quagga/ospfd.conf
ExecStart=/usr/sbin/ospfd -d $OSPFD_OPTS -f /etc/quagga/ospfd.conf -i /run/quagga/ospfd.pid
Restart=on-abort

[Install]
WantedBy=multi-user.target

修改完毕后,你需要重新载入脚本,

systemctl daemon-reload

2.4.5 测试启动脚本

systemctl start ospfd.service
systemctl stop ospfd.service
systemctl restart ospfd.service
systemctl status ospfd.service

2.4.6 配置服务自启动

systemctl enable ospfd.service

2.5 配置防火墙

2.5.1 确定路由服务的通讯端口

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.5.2 允许路由的协议或端口通讯

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.6 配置服务自启动

如果你不熟悉路由的基本配置,请参阅以下链接的2.3章节,
如何实现基于Linux的路由之Quagga? – cmdSchool

参阅文档
===============

Quagga github
—————-
GitHub - Quagga/quagga: Quagga Tracking repository - Master is at http://git.savannah.gnu.org/cgit/quagga.git

Quagga的下载,
Releases · Quagga/quagga · GitHub
https://gogs.quagga.net/Quagga/quagga/releases

rpm包的构建
—————–
https://github.com/Quagga/quagga/blob/master/redhat/README.rpm_build.md

错误“OSPF not enabled on this interface”的解决方法,
———————–
https://lists.quagga.net/pipermail/quagga-users/2006-April/006715.html
https://lists.quagga.net/pipermail/quagga-users/2006-April/006709.html
Mailing List Archive: OSPF not enabled on this interface

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux篇---使用systemctl start xxx启动自己的程序|开机启动|守护进程

linux篇---使用systemctl start xxx启动自己的程序|开机启动|守护进程 1、创建服务2、修改权限3、启动服务4、测试 机器:Nvidia Jetson Xavier系统:ubuntu 18.04 最近在使用symfony的console组件,需要执行一个后台的php进程,并且…

DevOps之自动化测试

什么是自动化测试? 明确一下自动化测试不是什么。自动化测试不是指自动化生成测试代码,而是自动化地执行由开发人员或测试人员编写的测试代码。正如下面这句谚语:“绝不要手工去做任何可以被自动化处理的事情。——Curt Hibbs” 之前是由人…

Windows 桌面运维及安全管理

什么是桌面运维 桌面运维是IT管理的重要部分,是一种系统管理的技术,它的主要目的是通过管理用户、计算机和其他设备来提高组织的效率。它不仅能够降低维护成本,而且还能够提高系统的可用性。 如今随着企业设备越来越丰富,桌面运…

前端需要理解的数据治理与异常监控知识

1 数据治理 前端数据治理的重要指标是准确性和数据,一个数据对象包括数据值和其他元数据。 2 数据上报方式 2.1 Image 通过将采集的数据拼接在图片请求的后面,向服务端请求一个 1*1 px 大小的图片(gif)实现的,设置…

与活力四射的 {Agorians} 化身一起拥抱自我超越

准备好通过新的化身转换来探索新的自己吧! 我们与法国多学科艺术家和 DJ Agoria 达成合作,自豪地宣布推出 {Agorians} 化身系列,这是有史以来第一个实现自动外观变换以反映一天中真实时间的 Web3 化身系列。在一天里,你们的化身…

跨地区、跨平台、跨网络,如何解决远程IT运维集中管理难题

面对日益激增的IT复杂性和业务需求的快速变化,IT应用在运行过程中发生性能下降或者服务不可用等故障的可能性大大增加,如何更高效、更智能地开展IT运维,保证业务的连续性和IT系统的稳定性,成为企业业务发展的迫切需要。IT运维作为…

BGP路径劫持攻击实验

一、实验目的: 1)BGP实验环境搭建 2)BGP路径劫持验证 二、预备知识: BGP(Border Gateway Protocol)边界网关协议,也就是不同自治系统autonomous system之间进行路由交换的协议 三、实验环境: 四、…

X2000 Linux PWM

一、硬件设计 PC04 ------------PWM4 二、通过shell开启PWM 配置参数 cmd_pwm config pc04 freq1000 max_level100 active_level1 accuracy_priorityfreq 启动 cmd_pwm set_level pc04 10 三、通过写程序控制 先用IConfigTool工具,使能libhardware2--->pwm…

Kafka生产者原理 kafka生产者发送流程 kafka消息发送到集群步骤 kafka如何发送消息 kafka详解

kafka尚硅谷视频: 10_尚硅谷_Kafka_生产者_原理_哔哩哔哩_bilibili ​ 1. producer初始化:加载默认配置,以及配置的参数,开启网络线程 2. 拦截器拦截 3. 序列化器进行消息key, value序列化 4. 进行分区 5. kafka broker集群 获取…

3D模型转换工具HOOPS Exchange助力打造虚拟现实应用程序

挑战: 支持使用各种 CAD 系统和 CAD 文件格式的客户群向可视化硬件提供快速、准确的数据加载提供对详细模型信息的访问,同时确保高帧率性能 解决方案: HOOPS Exchange领先的CAD数据转换工具包 结果: 确保支持来自领先工程软件…

【Python编程】将同一种图片分类到同一文件夹下,并且将其分类的路径信息写成txt文件进行保存

注:数据结构同上一篇博文类似 一、代码 import os import cv2 import shutilpath0os.getcwd()\\apple\\RGB path1os.getcwd()\\apple\\tof_confidence # path2os.getcwd()\\apple\\tof_depth # path3os.getcwd()\\apple\\tof_depthRGB # path4os.getcwd()\\apple\…

云计算为中小企业带来的 10 大好处

云计算的迅速采用并非巧合。中小型企业 (SMB) 现在有机会摆脱传统 IT 基础设施的限制,享受云提供的众多优势。它的发展使公司能够更智能、更快速、更安全地工作。 因此,如果您发现自己质疑是否需要进行这种转变,请不要害怕!让我们…

1.1 VMware Workstation与Kali的安装和配置1

资源见专栏第一篇文章https://blog.csdn.net/algorithmyyds/article/details/132457258 安装VMware 不多加赘述,直接按顺序安装即可。 有以下需注意的地方: 1.建议选择增强型服务; 2.不要加入体验改进计划。是否开启提示更新看你的想法&…

小资金能玩期权吗?为什么玩期权的人这么少?

目前我国有很多个ETF期权品种,实际交易时,小资金也能参与期权交易,开通期权账户只是打开了交易50ETF期权的窗口,第二关键的在于关于怎么买卖50ETF期权的方式,那么先来说说小小资金能玩期权吗?为什么玩期权的人这么少?本文来自:期权酱 【建议收…

回收站恢复软件推荐!轻松找回误删数据!

“不小心清空了回收站怎么办呢?大家有没有什么回收站恢复软件推荐呢?非常需要一个软件来帮助我恢复回收站里的重要数据,请看看我吧!” 众所周知,回收站中存放着很多我们删除的文件。如果我们发现文件是被误删了&#x…

期刊的“综合影响因子”和“复合影响因子”你了解多少?

可能在刚开始发论文时还分不清许多概念,但是在此之前,需要先了解影响因子是? 影响因子:美国科技信息研究所(ISI)原所长尤金加菲尔德博士于1963年提出,已成为国际上通行的期刊评价指标。期刊的影…

⌈算法进阶⌋图论::拓扑排序(Topological Sorting)——快速理解到熟练运用

目录 一、原理 1. 引例:207.课程表 2. 应用场景 3. 代码思路 二、代码模板 三、练习 1、210.课程表Ⅱ🟢 2、2392.给定条件下构造举证🟡 3、310.最小高度树 🟡 一、原理 1. 引例:207.课程表 就如大学课程安排一样&…

WPF基础入门-Class2-样式

WPF基础入门 Class2&#xff1a;样式 1、内联样式&#xff1a;优先度最高 <Grid><StackPanel><!--内联样式优先度高--><Button Background"Red" Height"10" Width"100"FontSize"20"Content"SB">…

《热题100》二分查找、排序、二叉树篇

思路&#xff1a;将数组排序&#xff0c;峰值肯定是比较大的那些数&#xff0c;排序后&#xff0c;从大到小&#xff0c;依次看该值是否比左右大&#xff0c;如果是&#xff0c;就返回该值为峰值。 import random class Solution: def paixu(self,nums): if len(nums) < 1…

人工智能在现代招聘中的崛起:超越传统筛选的未来

引言 在过去的几十年里,招聘一直是企业的核心活动之一。传统的招聘流程依赖于人力资源专家手工筛选简历、面试候选人并进行背景调查。这种方法不仅耗时,而且可能受到人为偏见的影响。随着技术的进步,特别是人工智能(AI)的发展,招聘的面貌正在发生深刻的变化。人工智能在…