使用 Quagga 实现 Linux 动态路由
学习如何使用 Quagga 套件的路由协议去管理动态路由。
迄今为止,本系列文章中,我们已经在 Linux 局域网路由新手指南:第 1 部分 中学习了复杂的 IPv4 地址,在 Linux 局域网路由新手指南:第 2 部分 中学习了如何去手工创建静态路由。
今天,我们继续使用 Quagga 去管理动态路由,这是一个安装完后就不用理它的的软件。Quagga 是一个支持 OSPFv2、OSPFv3、RIP v1 和 v2、RIPng、以及 BGP-4 的路由协议套件,并全部由 zebra 守护程序管理。
OSPF 的意思是最短路径优先Open Shortest Path First。OSPF 是一个内部网关协议(IGP);它可以用在局域网和跨因特网的局域网互联中。在你的网络中的每个 OSPF 路由器都包含整个网络的拓扑,并计算通过网络的最短路径。OSPF 会通过多播的方式自动对外传播它检测到的网络变化。你可以将你的网络分割为区域,以保持路由表的可管理性;每个区域的路由器只需要知道离开它的区域的下一跳接口地址,而不用记录你的网络的整个路由表。
RIP,即路由信息协议,是一个很老的协议,RIP 路由器向网络中周期性多播它的整个路由表,而不是像 OSPF 那样只多播网络的变化。RIP 通过跳数来测量路由,任何超过 15 跳的路由它均视为不可到达。RIP 设置很简单,但是 OSPF 在速度、效率以及弹性方面更佳。
BGP-4 是边界网关协议版本 4。这是用于因特网流量路由的外部网关协议(EGP)。你不会用到 BGP 协议的,除非你是因特网服务提供商。
准备使用 OSPF
在我们的小型 KVM 测试实验室中,用两台虚拟机表示两个不同的网络,然后将另一台虚拟机配置为路由器。创建两个网络:net1 是 192.168.110.0/24 ,而 net2 是 192.168.120.0/24。启用 DHCP 是明智的,否则你要分别进入这三个虚拟机,去为它们设置静态地址。Host 1 在 net1 中,Host 2 在 net2 中,而路由器同时与这两个网络连接。设置 Host 1 的网关地址为 192.168.110.126,Host 2 的网关地址为 192.168.120.136。
- Host 1: 192.168.110.125
- Host 2:192.168.120.135
- Router:192.168.110.126 和 192.168.120.136
在路由器上安装 Quagga。在大多数 Linux 中它是 quagga 软件包。在 Debian 上还有一个单独的文档包 quagga-doc。取消 /etc/sysctl.conf
配置文件中如下这一行的注释去启用包转发功能:
net.ipv4.ip_forward=1
然后,运行 sysctl -p
命令让变化生效。
配置 Quagga
查看你的 Quagga 包中的示例配置文件,比如,/usr/share/doc/quagga/examples/ospfd.conf.sample
。除非你的 Linux 版本按你的喜好做了创新,否则,一般情况下配置文件应该在 /etc/quagga
目录中。大多数 Linux 版本在这个目录下有两个文件,vtysh.conf
和 zebra.conf
。它们提供了守护程序运行所需要的最小配置。除非你的发行版做了一些特殊的配置,否则,zebra 总是首先运行,当你启动 ospfd 的时候,它将自动启动。Debian/Ubuntu 是一个特例,稍后我们将会说到它。
每个路由器守护程序将读取它自己的配置文件,因此,我们必须创建 /etc/quagga/ospfd.conf
,并输入如下内容:
!/etc/quagga/ospfd.conf
hostname router1
log file /var/log/quagga/ospfd.log
router ospf
ospf router-id 192.168.110.15
network 192.168.110.0/0 area 0.0.0.0
network 192.168.120.0/0 area 0.0.0.0
access-list localhost permit 127.0.0.1/32
access-list localhost deny any
line vty
access-class localhost
你可以使用感叹号(!
)或者井号(#
)去注释掉这些行。我们来快速浏览一下这些选项。
hostname
可以是你希望的任何内容。这里不是一般意义上的 Linux 主机名,但是,当你使用vtysh
或者telnet
登入时,你将看到它们。log file
是你希望用于保存日志的任意文件。router
指定路由协议。ospf router-id
是任意的 32 位数字。使用路由器的一个 IP 地址就是很好的选择。network
定义你的路由器要通告的网络。access-list
限制vtysh
登入,它是 Quagga 命令行 shell,它允许本地机器登入,并拒绝任何远程管理。
Debian/Ubuntu
在你启动守护程序之前,Debian/Ubuntu 相对其它的 Debian 衍生版可能多需要一步到多步。编辑 /etc/quagga/daemons
,除了 zebra=yes
和 ospfd=yes
外,使其它所有的行的值为 no
。
然后,在 Debian 上运行 ospfd
去启动 Quagga:
# systemctl start quagga
在大多数的其它 Linux 上,包括 Fedora 和 openSUSE,用如下命令启动 ospfd
:
# systemctl start ospfd
现在,Host 1 和 Host 2 将可以互相 ping 通对方和路由器。
这里用了许多篇幅去描述非常简单的设置。在现实中,路由器将连接两个交换机,然后为连接到这个交换机上的所有电脑提供一个网关。你也可以在你的路由器上添加更多的网络接口,这样你的路由器就可以为更多的网络提供路由服务,或者也可以直接连接到其它路由器上,或者连接到连接其它路由器的骨干网络上。
你或许不愿意如此麻烦地手工配置网络接口。最简单的方法是使用你的 DHCP 服务器去宣告你的路由器。如果你使用了 Dnsmasq,那么你就有了一个 DHCP 和 DNS 的一体化解决方案。
还有更多的配置选项,比如,加密的密码保护。更多内容请查看 Quagga 路由套件 的官方文档。
使用 Quagga 实现 Linux 动态路由相关推荐
- 可运行动态路由的Linux,使用Quagga实现Linux动态路由
学习如何使用 Quagga 套件的路由协议去管理动态路由. 迄今为止,本系列文章中,我们已经在Linux 局域网路由新手指南:第 1 部分 中学习了复杂的 IPv4 地址,在 Linux 局域网路由 ...
- linux动态路由rip配置,配置 动态路由协议OSPF和RIPv2实现全网互通^
我这里有 正确的 配置 文件 但是我看的不是很懂,我现在贴出来 帮我看看把..谢谢了 R1 (config router ):network 172.31.200.0 0.0.0.3 area 0 R ...
- 演示:混合配置基于Linux winows cisco环境动态路由
演示:混合配置基于Linux winows cisco环境动态路由 (使用GNS3+VM完全可以一台物理计算机上完成所有实验) 配套演示录像:http://edu.51cto.com/course/c ...
- Quagga:开源的基于Zebra实现了RIP, OSPF, BGP的动态路由软件
目录 quagga简介 特性 安装 quagga简介 https://www.jianshu.com/p/300acac7801f Quagga是一个开源的基于Zebra实现了RIP, OSPF, B ...
- Linux使用ubuntu搭建动态路由,实现rip,ospf,路由重分配功能,实例,例子,,从安装环境到代码无比巨巨巨巨巨详细,
路由器设计(一) (一)准备工作 1.安装虚拟机 在虚拟机(我用的是Virtual Box,若干次测试表明,在Ubuntu上使用这个虚拟机软件比较流畅)上安装上一个Linux系统,比如我用的Ubunt ...
- linux静态和动态路由英文,静态路由和动态路由的特点
1.静态路由 静态路由是由管理员在路由器中手动配置的固定路由,路由明确地指定了包到达目的地必须经过的路径,除非网络管理员干预,否则静态路由不会发生变化.静态路由不能对网络的改变作出反应,所以一般说静态 ...
- linux 添加路由_在 Linux 上使用开源软件创建 SDN | Linux 中国
使用开源路由协议栈 Quagga,使你的 Linux 系统成为一台路由器.https://linux.cn/article-12199-1.html作者:M Umer译者:messon007 网络路由 ...
- eigrp配置实验_路由器 OSPF 动态路由配置
本文档详细介绍路由器 OSPF 动态路由配置的方法,文内含长段代码可复制可往左滑,希望对大家有帮助! 实验目的 掌握 OSPF 协议的配置方法 掌握查看通过动态路由协议 OSPF 学习产生的路由 熟悉 ...
- 开启Linux系统路由转发功能 实现多网段电脑共享上网
开启Linux系统路由转发功能 实现多网段电脑共享上网 作者:佚名 字体:[增加 减小] 来源:互联网 时间:07-13 13:03:29 我要评论 目前,Linux的主要应用在服务器领域,但是它的许 ...
最新文章
- 报告:美国AI投资占全球56% 中国第二增长最快
- 【Groovy】json 字符串反序列化 ( 使用 JsonSlurper 进行 json 字符串反序列化 | 根据 map 集合构造相关类 )
- 我们为什么要尝试前后端分离
- sql server和mysql的区别是什么
- (一)Eureka搭建服务注册中心
- Python3与OpenCV3.3 图像处理(九)--高斯模糊
- Java题目筛选器_【024期】JavaWeb面试题(五):Filter和Listener
- 另一个flutter-go
- TensorFlow函数使用总结
- js篇1-数组基础方法
- 为人处世:处世22条忠告
- 中国行政区划代码,包括五级行政区划详细代码,县级以上区划地理围栏
- office 64位安装
- 洛谷P1067-多项式输出(模拟好题!)
- [4G5G基础学习]:L3 RRC层概述与总体架构、ASN.1消息、无线承载SRB, DRB、终端三种状态、MIB, SIB,NAS消息类型
- 当无边框窗口被子窗口遮挡导致难以调节窗口大小时,可通过处理 NCHITTEST 消息重新支持调节窗口大小
- 直接杀向3G市场!华为两款新手机曝光
- 开发者笑疯了! LLaMa惊天泄露引爆ChatGPT平替狂潮,开源LLM领域变天
- Android如何设置渐变色背景 渐变shape
- 动画小视频制作其实很简单,小白也能快速上手 | 万彩动画大师