使用开源路由协议栈 Quagga,使你的 Linux 系统成为一台路由器。https://linux.cn/article-12199-1.html作者:M Umer译者:messon007

网络路由协议分为两大类:内部网关协议和外部网关协议。路由器使用内部网关协议在单个自治系统内共享信息。如果你用的是 Linux,则可以通过开源(GPLv2)路由协议栈 Quagga 使其表现得像一台路由器。

Quagga 是什么?

Quagga 是一个路由软件包,并且是 GNU Zebra 的一个分支。它为类 Unix 平台提供了所有主流路由协议的实现,例如开放最短路径优先(OSPF),路由信息协议(RIP),边界网关协议(BGP)和中间系统到中间系统协议(IS-IS)。

尽管 Quagga 实现了 IPv4 和 IPv6 的路由协议,但它并不是一个完整的路由器。一个真正的路由器不仅实现了所有路由协议,而且还有转发网络流量的能力。Quagga 仅仅实现了路由协议栈,而转发网络流量的工作由 Linux 内核处理。

架构

Quagga 通过特定协议的守护程序实现不同的路由协议。守护程序名称与路由协议相同,加了字母“d”作为后缀。Zebra 是核心,也是与协议无关的守护进程,它为内核提供了一个抽象层,并通过 TCP 套接字向 Quagga 客户端提供 Zserv API。每个特定协议的守护程序负责运行相关的协议,并基于交换的信息来建立路由表。

Quagga architecture

环境

本教程通过 Quagga 实现的 OSPF 协议来配置动态路由。该环境包括两个名为 Alpha 和 Beta 的 CentOS 7.7 主机。两台主机共享访问 192.168.122.0/24 网络。

主机 Alpha:

IP:192.168.122.100/24 网关:192.168.122.1

主机 Beta:

IP:192.168.122.50/24 网关:192.168.122.1

安装软件包

首先,在两台主机上安装 Quagga 软件包。它存在于 CentOS 基础仓库中:

yum install quagga -y

启用 IP 转发

接下来,在两台主机上启用 IP 转发,因为它将由 Linux 内核来执行:

sysctl -w net.ipv4.ip_forward = 1sysctl -p

配置

现在,进入 /etc/quagga 目录并为你的设置创建配置文件。你需要三个文件:

◈ zebra.conf:Quagga 守护程序的配置文件,你可以在其中定义接口及其 IP 地址和 IP 转发◈ ospfd.conf:协议配置文件,你可以在其中定义将通过 OSPF 协议提供的网络◈ daemons:你将在其中指定需要运行的相关的协议守护程序

在主机 Alpha 上,

 [root@alpha]# cat /etc/quagga/zebra.confinterface eth0 ip address 192.168.122.100/24 ipv6 nd suppress-rainterface eth1 ip address 10.12.13.1/24 ipv6 nd suppress-rainterface loip forwardingline vty[root@alpha]# cat /etc/quagga/ospfd.confinterface eth0interface eth1interface lorouter ospf network 192.168.122.0/24 area 0.0.0.0 network 10.12.13.0/24 area 0.0.0.0line vty[root@alphaa ~]# cat /etc/quagga/daemonszebra=yesospfd=yes

在主机 Beta 上,

[root@beta quagga]# cat zebra.confinterface eth0 ip address 192.168.122.50/24 ipv6 nd suppress-rainterface eth1 ip address 10.10.10.1/24 ipv6 nd suppress-rainterface loip forwardingline vty[root@beta quagga]# cat ospfd.confinterface eth0interface eth1interface lorouter ospf network 192.168.122.0/24 area 0.0.0.0 network 10.10.10.0/24 area 0.0.0.0line vty[root@beta ~]# cat /etc/quagga/daemonszebra=yesospfd=yes

配置防火墙

要使用 OSPF 协议,必须允许它通过防火墙:

firewall-cmd --add-protocol=ospf –permanentfirewall-cmd –reload

现在,启动 zebra 和 ospfd 守护程序。

# systemctl start zebra# systemctl start ospfd

用下面命令在两个主机上查看路由表:

[root@alpha ~]# ip route show  default via 192.168.122.1 dev eth0 proto static metric 10010.10.10.0/24 via 192.168.122.50 dev eth0 proto zebra metric 2010.12.13.0/24 dev eth1 proto kernel scope link src 10.12.13.1192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.100 metric 100

你可以看到 Alpha 上的路由表包含通过 192.168.122.50 到达 10.10.10.0/24 的路由项,它是通过协议 zebra 获取的。同样,在主机 Beta 上,该表包含通过 192.168.122.100 到达网络 10.12.13.0/24 的路由项。

[root@beta ~]# ip route showdefault via 192.168.122.1 dev eth0 proto static metric 10010.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.110.12.13.0/24 via 192.168.122.100 dev eth0 proto zebra metric 20192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.50 metric 100

结论

如你所见,环境和配置相对简单。要增加复杂性,你可以向路由器添加更多网络接口,以为更多网络提供路由。你也可以使用相同的方法来实现 BGP 和 RIP 协议。


via: https://opensource.com/article/20/4/quagga-linux

作者:M Umer 选题:lujun9972 译者:messon007 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

linux 添加路由_在 Linux 上使用开源软件创建 SDN | Linux 中国相关推荐

  1. linux添加路由提示网络不可达

    1.linux添加路由.查看路由状态.删除路由如下 添加路由: route add -net 192.168.1.44 netmask 255.255.255.0 gw 192.168.1.1 查看路 ...

  2. 嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统

    我们知道,在PC机Linux上,安装开源软件,一般来讲,大多是如下几个步骤就搞定了. tar -xzf  open_source_software.tar.gz cd       open_sourc ...

  3. ubuntu添加路由_如何在Ubuntu,Linux中添加新路由?

    ubuntu添加路由 I have a box with Ubuntu Linux and I want to add a new route to my box. Because I want to ...

  4. linux系添加路由,Linux添加路由的两种方法

    Linux中增加软路由的两种方法 第一种: route add -net 172.16.6.0 netmask 255.255.255.0 gw 172.16.2.254 dev eth0 /* 增加 ...

  5. 自己工作用到的 linux添加路由的方法

    linux下添加路由的方法 一.查看及添加临时路由 1.查看路由(linux下) [root@nfs ~]# route #同netstat -rn Kernel IP routing table D ...

  6. linux 添加路由 指定网卡,Linux多个网卡添加永久路由办法

    有时候Linux有多个网卡的时候,就需要为另外的一些网卡添加路由,好让网络走不通的网卡出去.那么今天PConline小编就给大家带来Linux多个网卡添加永久路由办法,有需要的小伙伴就赶紧一起往下看看 ...

  7. linux 版本号 笔记本_在笔记本电脑上安装Linux完全版

    当前,笔记本电脑越来越多地成为工程师.技术人员的标准 办公配置.随着Linux操作系统影响的逐步深入,许许多多的Linux使用者希望能够在自己的笔记本电脑上运行Linux操作系统,以便随时随地地使用. ...

  8. linux 添加路由网关

    1.route命令 以前经常使用route 命令添加和删除路由 查看路由: route 添加网关/设置网关: #增加一条到达192.100.10.0的路由. route add -net 192.10 ...

  9. linux之上运行Vxworks,在MPSoC上能同时运行VxWorks和Linux吗?

    原标题:在MPSoC上能同时运行VxWorks和Linux吗? Xen项目管理程序从上个世纪90年代就已经在剑桥大学里开始进行,到了2002年项目开源.如今它是最流行的开源管理程序之一,可以在云计算上 ...

最新文章

  1. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)
  2. g-git 相关命令 及其 基本原理探索 (一)
  3. mysql 表的继承,MySQL是否支持表继承?
  4. 腾讯博士:年薪60万辞职去教书,你想要哪种生活?
  5. 500页开放书搞定概率图建模,图灵奖得主Judea Pearl推荐(附链接)
  6. 常见Java面试题之解释内存中的栈、堆和静态区用法
  7. linux宝塔类似工具,有没有比宝塔面板更好的linux运维工具?
  8. 文件的创建与读取 文件的数据添加
  9. 线性表的链式存储集成
  10. sql server中数据约束相关的查询
  11. 【翻译】3D Bounding Box Estimation Using Deep Learning and Geometry
  12. java 命令参数详解
  13. 机器学习开篇之机器学习的分类
  14. MAR DASCTF 2021
  15. selenium 实战之 A级纳税人信息
  16. 制作京东快报页面html,仿京东首页的京东快报,自动向上滚动的广告条
  17. 删除或修改本地Git账号密码
  18. 如何把浏览器中知乎文章导出成PDF
  19. php word组件使用方法,phpword使用笔记
  20. jzoj. 1285. 奶酪厂

热门文章

  1. CentOS Linux 7绑定静态IP方法
  2. JVM 堆内存设置原理
  3. CSS3边框图片、边框阴影、文本阴影
  4. 将华氏温度转化成摄氏度和绝对温度
  5. 7_less中引入其他文件 / 模块
  6. jdk8 接口新特性
  7. Java跳转语句break与continue
  8. python 把txt变成字符串_如何通过 Python 如何写文件 ?
  9. 月均数据_药品销售数据分析案例
  10. Python数据分析:pandas玩转Excel(二)