学习如何设置Linux的Quagga路由套件

750 阅读7分钟

学习如何设置Linux的Quagga路由套件

Quagga是一个流行的开源项目,用于在Linux平台上提供路由服务。它是由各种动态协议的几个组件组成的。

如开放最短路径优先(OSPF)、路由信息协议(RIP)、边界网关协议(BGP)、中间系统到中间系统(IS-IS)和多协议标签交换(MPLS)。它部分使用与Cisco/Juniper相同的虚拟终端或CLI(vty/vtysh)进行协议配置。

在这篇文章中,我们将在Ubuntu上安装Quagga路由套件。

目标

在本文结束时,你应该能够。

  • 知道什么是Quagga Linux以及它的简要历史。
  • 理解Quagga Linux的工作原理。
  • 知道为什么你应该使用Quagga Linux。
  • Quagga Linux所支持的平台。
  • 在Linux环境下安装Quagga。
  • 配置Zebra守护程序、Ospfd守护程序和Ripd守护程序。

Quagga的简要历史和对它的解释

Quagga是一个GPLv2许可的开源路由栈。它是一个实现IP路由协议的程序,如RIP,RIPng,OSPF, 和ISIS

让我们来看看routing stackcomplete router. 之间的区别 路由堆栈是一组在网络节点之间传输路由信息的协议,这样每个节点都有必要的网络结构知识,而完整的路由器是一个在计算机网络之间路由数据包的网络设备。

Quagga中的完整路由器需要流量转发和路由栈,然而只实现了路由协议。

Quagga可以在Linux上运行,并使用标准的Linux内核进行流量转发,也可以使用OpenFlow或其他开放的专有接口来连接到分布式转发平台。它还可以与现成的路由器一起使用,以接受和公布路由协议的路由。

Quagga大约在10年前从Zebra 路由代码演变而来。Zebra 不再是一个公共项目,但它仍然可以作为一个商业解决方案,名称为ZebOS ,从IP Infusion.

Quagga是如何工作的?

一个安装了Quagga的系统就像一个专门的路由器。有了Quagga,你的机器会使用路由协议与其他路由器交换路由信息。

Quagga使用这些信息来更新内核的路由表,从而使正确的数据到达预定地点。

今天谁在使用Quagga,还有什么其他的开源替代品?

Quagga主要用于虚拟环境、大型数据中心(云供应商)和学术/研究界。它被用于需要开源实现路由协议的地方,作为实验新标准和想法的基础。

遗憾的是,大多数大用户都在秘密使用Quagga,他们不会在公开场合承认这一点。他们使用Quagga是因为它允许他们根据自己网络的具体需求进行定制。

Bird 是Quagga的最可行的开源替代方案。 ,开始是为互联网服务提供商和交换点提供的 ,它有很多功能是这种环境所特有的。Bird BGP route-server/reflector

Bird 近几年来, 已经发展成为一个更通用的路由堆栈,它长期支持 ,而且 正在开发中。 最常用于系统只接收和发送 的环境。Bird OSPF ISIS BGP

除了Bird ,还有XORP ,它有一个小而活跃的社区,以及OpenBSD支持的OpenBGPdOpenOSPFd 项目。

支持的平台

目前,Quagga支持GNU/LINUXBSD 。将Quagga移植到其他平台太难了,因为依赖平台的代码仅限于zebra 守护程序。

协议守护程序大多是与平台无关的。下面列出了官方支持的平台列表。

  • GNU/Linux
  • FreeBSD
  • NetBSD
  • OpenBSD

Quagga可能会在其他平台上正确运行,并可能在更多的平台上运行部分功能。这些平台的版本,如果从最初发布的时间点算起,已经超过了2年左右,可能需要一些工作。

同样的,以下的平台也可能需要一些努力才能运行。

  • Solaris
  • Mac OSX

还要注意的是,特别是关于专有平台,编译器和C 库的选择会影响Quagga。只有以下C 编译器的最新版本经过了良好的测试。

  • GNU的GCC
  • LLVM的clang
  • 英特尔的ICC

安装

Quagga可以从源代码安装,但在本文中我们将使用deb/binary 包。要检查Qugaaga包的依赖性,请运行下面的命令。

apt-cache depends quagga
  • 上述命令的输出显示如下。

installation

  • 运行下面的命令来安装Qugaaga路由软件。
apt-get install quagga

Quagaga包的安装如下图所示。

installation2

配置

除非启用了一些内核设置,否则基于Linux的设备默认不支持包转发。使用下图所示的命令,启用IPv4的数据包转发。设置将被永久地保存在/etc/sysctl.conf 文件中。

echo "net.ipv4.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.forwarding=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

configuration

现在我们将配置Quagga路由软件,在启用包转发后在Linux上运行。要在Ubuntu上运行Quagga守护程序,你需要做以下工作。

ripngd.conf
ospfd.conf
bgpd.conf
ripd.conf
zebra.conf
vytsh.conf
isis.conf
babelid.conf

用户可以创建这些配置文件或将这些样本文件从/usr/share/doc/quagga/examples/ 路径复制到/etc/quagga/*.conf 路径。

config2

/etc/quagga/ 路径下复制样本文件,如下图所示。

duplicateRecords

/etc/quagga 目录下复制后重命名样本文件。

sudo mv ripngd.conf.sample ripngd
sudo mv ospfd.conf.sample ospfd.conf
sudo mv bgpd.conf.sample bgpd.conf
sudo mv ripd.conf.sample ripd.conf
sudo mv zebra.conf.sample zebra.conf
sudo mv vtysh.conf.sample vtysh.conf
sudo mv isisd.conf.sample isisd.conf
sudo mv babeld.conf.sample babeld.conf

rename

因为Quagga守护程序以quagga的名义运行,它改变了配置文件的所有权和权限。在软件包安装过程中,Ubuntu创建了用户quagga。

daemons

/etc/quagga 文件夹下运行下面的命令来改变所有权和权限。

sudo chown quagga:quagga *

user-group

权限 "640 "已经被分配给了这些文件。最后,我们必须启用或禁用Quagga的许多守护程序。这是因为Zebra守护进程是路由套件的一个重要组成部分,它必须在/etc/quagga/daemons文件中被启用。

在这篇文章中,只有OSPF和RIP动态协议守护程序在该文件中被启用。

下面的快照描述了daemons文件的默认设置。默认配置文件禁用了所有路由守护程序。

daemonsFile

启用OSPF和RIP的配置文件如下所示。

daemonsFile2

Quagga套件的不同守护程序将在TCP协议下运行,监听端口为2600-2800。

cat /etc/services | grep zebra

zebrasrv       2600/tcp      # zebra service
zebra          2601/tcp      # zebra vty
ripd           2602/tcp      # ripd vty (zebra)
ripngd         2603/tcp      # ripngd vty (zebra)
ospfd          2604/tcp      # ospfd vty (zebra)
bgpd           2605/tcp      # bgpd vty (zebra)
ospf6d         2606/tcp      # ospf6d vty (zebra)
isisd          2608/tcp      # ISISd vty (zebra)

services

使用以下命令启动Quagga路由套件。

sudo /etc/init.d/quagga restart

quaggaStarting

使用netstat命令,我们可以确认守护程序的成功运行。

sudo netstat -antp | grep 260

netstat

Quagga路由可以通过以下方式进行配置。

vtysh

telnet (telnet 127.0.0.1 ospfd/ripd/bgpd/zebra)

vtysh为所有守护程序的配置提供了一个中心位置。要启动一个用于配置Quagga的虚拟外壳(vtysh),在终端键入以下命令。

sudo vtysh

vtysh

Zebra、ospfd和ripd可以使用vtysh进行配置。

available-daemons

现在,让我们看看使用telnet命令进行的守护进程配置。

斑马守护进程

Quagga架构是由一个叫做Zebra 的核心守护进程组成的。Zebra的功能是作为底层Unix内核的抽象层,并通过UnixTCP 流向Quagga客户端暴露Zserv API。这些Zserv客户端通常负责实现一个路由协议,并将路由更新传达给Zebra守护进程。

下面的命令显示了如何对zebra 进行相应的配置。

telnet localhost 2601

zebra-telnet

Ospfd守护进程

ospfd守护进程使用开放最短路径优先(OSPF)协议控制路由表。因为这个实现只支持OSPF版本2,它只能维护IPv4路由表。

  • 要在Quagga-suite 上配置ospfd ,请运行下面的命令。
telnet localhost 2604

telnet-ospfd

Ripd守护进程

路由信息协议(RIP)守护程序处理路由器的路由表。

  • 下面的代码演示了如何在Quagga套件中配置ripd daemon。
telnet localhost 2602

ripd

总结

Quagga路由套件主要用于在Linux平台上执行动态路由。我们在本教程中学习了如何安装、配置和使用Quagga路由套件。

Quagga路由套件允许你以各种方式配置路由协议,如OSPFRIP 。中小型企业可以使用基于Quagga的路由设备(SME)而受益。