Loading

Ubuntu 下使用 Quagga(Zebra) 搭建路由器

本文参考:Linux下使用Quagga(Zebra)搭建路由器记录 - sanyuanyanjin - 博客园 (cnblogs.com)

1 静态路由的路由器搭建方法

1.1 准备工作

1、在虚拟机 Virtual Box 上安装上一个Linux系统,我用的Ubuntu 14.04服务器版。然后配置好系统,安装上zebra/quagga软件。

以下是步骤截图:

右击打开刚创建好的虚拟机的“设置”,设置启动盘,设置网络。

启动虚拟机,自行配置安装好系统,然后安装上zebra/quagga软件。

apt update
apt install quagga

2、连续复制得到另外三个相同的虚拟机。

1.2 实验内容

将四个虚拟机系统模拟构建出下面的一个网络。

一般网络:由Linux Router A,Workstation 和 Linux Router B 构成。

保护网络:由 Linux Router B 和 Linux Client 所组成。

Linux Router A Linux Router B 工作站 客户端
1、两张网卡eth0, eth1,通过内部网络方式连接。
2、Eth0(外网),IP可不设定。
3、Eth1(内网),IP设置为:192.168.1.254/24。
1、两张网卡eth0,eth1, 通过内部网络方式连接。
2、Eth0(外), IP设置为:192.168.1.100/24
3、Eth1(内),IP设置为:192.168.100.254/24
4、默认网关:192.168.1.254
1、一张网卡eth0,通过内部网络方式连接。
2、Eth0,IP设置为:192.168.1.102/24
3、默认网关:192.168.1.254
1、一张网卡eth0,通过内部网络方式连接。
2、Eh0, IP设置为192.168.100.12/24
3、默认网关:192.168.100.254

1.3 开始实验

给虚拟机配置网卡:

LinuxRouterA:

LinuxRouterB:

Workstation:

ClientLinux:

依次启动四个虚拟机,同时登陆到系统中。接下来,切换到root模式。开始进行系统的配置。

1、配置Linux Router A

修改网卡1的IP地址,子网掩码等信息。终端输入命令:

vim /etc/network/interfacesB

然后添加内容后如下:

auto eth1
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0

开启数据包转发功能:

vim /etc/sysctl.conf

找到net.ipv4.ip_forward=1这一行,然后将前面的#号去除即可。

接下来重启一次系统。此时,Linux Router A基本配置完毕了。

2、配置Linux Router B:

修改主机名:

vim /etc/hostname

配置网卡0和网卡1:

 vim /etc/network/interfaces

然后在后面添加内容如下:

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254

auto eth1
iface eth1 inet static
address 192.168.100.254
netmask 255.255.255.0

up route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.100 eth1

开启数据包转发功能:

vim /etc/sysctl.conf

找到net.ipv4.ip_forward=1这一行,然后将前面的#号去除即可。

修改成功后,则重启一次系统。

使用ifconfig查看修改有没有成功。

查看一下路由表是否正确,终端输入route -n,得到如下结果,重点第一行的内容确定配置无误:

3、配置客户端Linux:

修改主机名:

vim /etc/hostname

配置网卡0和网卡1:

 vim /etc/network/interfaces

然后在后面添加内容如下:

auto eth0
iface eth0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.254

查看一下路由表,route -n

ping 一下自己的网关和外部网关,如果成功,则表明客户端也基本配置完了。

ping 192.168.100.254 -c 2
ping 192.168.1.254 -c 2

4、配置工作站(Workstation):

修改主机名:

vim /etc/hostname

配置网卡0和网卡1:

 vim /etc/network/interfaces

然后在后面添加内容如下:

auto eth0
iface eth0 inet static
address 192.168.1.102
netmask 255.255.255.0
gateway 192.168.1.254

up route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.100 eth0

重启一次系统,查看一下路由规则。

1.4 测试这个网络

测试1:在客户端中ping工作站的IP地址:

测试2:在工作站中ping客户端的IP地址:

2 动态路由的路由器搭建方法——使用 RIP 协议

前面在搭建静态的路由器时,并没有使用到zebra/quagga这个软件。因为系统自带的工具已经足够配置了。

2.1 准备工作

准备四个不同的虚拟机系统。

2.2 实验内容

实验的网络连接如下图所示,其中共有三个局域网的网段,其中最大的是192.168.1.0/24这个外部局域网,另外有两个内部局域网,分别是192.168.100.0/24和192.168.200.0/24。

在开始实验之前,还是需要敲定一下各个虚拟机的配置信息:

Router A:
1、两张网卡,通过内部网络方式连接
2、IP1:192.168.1.100/24
3、IP2:192.168.100.254/24
 
Router B:
1、两张网卡,通过内部网络方式连接
2、IP1:192.168.1.200/24
3、IP2:192.168.200.254/24
 
Client A:
1、一张网卡,通过内部网络的方式连接
2、IP:192.168.100.10/24
3、默认网关:192.168.100.254
 
Client B:
1、一张网卡,通过内部网络的方式连接
2、IP:192.168.200.10/24
3、默认网关:192.168.200.254

2.3 开始实验

Router A:

Router B:

Client A:

Client B:

依次启动四个虚拟机系统。

1、配置路由器A(Router A)

修改主机名 vim /etc/hostname

修改网络参数:

保存配置信息,并且重启一次系统让配置生效。

配置路由器上的zebra:

cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
vim /etc/quagga/zebra.conf

接下来启动zebra:

cd /usr/lib/quagga/
./zebra -d

运行以下命令,可以看到zebra这个服务的主要任务就是要修改Linux系统内核内的路由,所以它仅仅就是监听本机接口罢了,并不会监听外部接口。

netstat -tnupl | grep zebra

登陆到端口2601中。可以用show ip route 来显示路由规则。

exit	# 退出zebra

设置并启用ripd服务。ripd服务可以在两台路由器之间进行路由规则的交换与沟通。具体设置方法如下:

cp /usr/share/doc/quagga/examples/ripd.conf.sample /etc/quagga/ripd.conf
vim /etc/quagga/ripd.conf

配置文件的填写,内容如下:

hostname RouterA_Rip
password zebra
enable password zebra
debug rip events
debug rip packet
router rip
version 2
network 192.168.1.0/24
network 192.168.100.0/24
interface eth0
no ip rip authentication mode
log file /var/log/quagga/ripd.log

保存上述配置,并启动ripd服务,输入sudo ripd -d即可。这样就完成了基本的RIP路由器的配置了。

cd /usr/lib/quagga/
./ripd -d

2、配置路由器B(Router B)

修改主机名 vim /etc/hostname

由于路由器B的配置和路由器A配置基本步骤一致,在此就省略了。参见上面的配置方法。

修改网络参数:

重启一下。

zebra.conf 配置信息:

ripd.conf 的配置信息:

3、配置客户端A(Client A)

修改主机名 vim /etc/hostname

网络参数配置信息(/etc/network/interfaces):

重启一下。

4、配置客户端B(Client B)

修改主机名 vim /etc/hostname

网络参数配置信息(/etc/network/interfaces):

重启一下。

2.4 测试这个网络

1、检查RIP协议的沟通是否正常

以路由器1为例,在终端中输入route -n查看有没有新添加的路由规则,见下图,看到倒数第一条显示的就是增加的路由规则。

然后登陆到端口2601中进行查看,如果出现了下面R>* 的输出就表明配置成功了。

此外,还可以观察ripd的日志输出来确认。日志输出如下截图所示。可以看到RECV packet之类的日志信息。

2、进行ping测试。

客户端A上的测试:

1、ping路由器A的IP2地址

2、ping路由器A的IP1地址

3、ping路由器B的IP1地址

4、ping路由器B的IP2地址

5、ping 客户端B的IP地址

客户端B上的测试:

1、ping 客户端A的IP地址

3 动态路由的路由器搭建方法——使用 OSPF 协议

3.1 开始实验

确保四台虚拟机系统正常运行,关掉ripd服务:

配置网络参数以及zebra.conf文件。这些参数和上面的那个实验是相同的,在此不再赘述。配置完毕后在终端中运行zebra -d即可。

配置ospfd服务需要的配置文件,即ospfd.conf:

cp /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf
vim /etc/quagga/ospfd.conf

开启ospfd服务:

cd /usr/lib/quagga/
./ospfd -d

紧接着,查看端口2604有没有成功开启。

netstat -tnupl | grep zebra

同时,可以查看路由表(输入show ip ospf route),还有ospf接口设置(输入show ip ospf interface)。如下面的截图所示。

再到端口2601中查看一些关键信息。具体步骤如下图所示。我们需要重点关注的是路由表显示信息。可以看到在下面的截图中,路由表信息中有O 192.168.1.0/24 is directly connected之类的字样,那是由ospfd产生的。

查看日志输出,步骤见下面的截图。在下面这个日志截图中,我们可以看到,路由器每10s就会发送出去一个hello数据包。

2、配置路由器B(Router B)

由于在配置路由器B时,操作的步骤基本同路由器A配置相同,只是在网段和IP地址等方面有稍许区别
。要注意,在开启ospfd之前,要保证zebra先运行。

先去关闭ripd进程:

1.ospfd.conf文件内容:

2.查看路由表:

3.查看一下日志输出:

4.接下来,进入端口2604中。输入命令sh ip ospf neighbor,见下面的截图。

5.输入show ip ospf database,可以看到更为详细的信息被输出了。

3.2 测试这个网络

客户端A上的ping测试:

1、Ping路由器A上的IP1地址

2、Ping 路由器A上的IP2地址

3、Ping 路由器B上的IP1地址

4、Ping 路由器B上的IP2地址

5、Ping 客户端B的IP地址

4 动态路由的路由器搭建方法——使用 BGP 协议

接下来的实验,将会使用zebra/quagga支持的边界网关协议——BGP协议,来构建两台路由器进行测试。

在开始实验之前,我们依然要做一些准备工作。但为了方便,我们直接使用了第二个实验(即“动态路由的路由器搭建方法——使用RIP协议”)框图以及部分设置。要做的仅仅是改变路由器协议罢了。详细的准备工作参见第二个实验开始的部分。

4.1 开始实验

在开始实验之前,我们需要确定zebra已经在后台运行,可以使用命令:ps -ef | grep zebra进行查看,在此需要注意的是,zebra.conf的配置文件不要改动,我们继续使用上面的实验用的配置文件。

配置路由器A(Router A)

cp /usr/share/doc/quagga/examples/bgpd.conf.sample /etc/quagga/bgpd.conf
vim /etc/quagga/bgpd.conf

bgpd.conf配置的内容如下:

启动bgpd服务。接下来,我们进入到端口2605中,来查看一些关于bgp的信息:

cd /usr/lib/quagga/
./bgpd -d

打开日志的输出:

配置路由器B(Router B)

在启动bgpd之前,要先保证zebra这个daemon在运行中。

1、bgpd.conf文件:

2、进入2605端口后查看有关bgp的信息:

4.2 测试这个网络

1、日志输出:

2、端口2601中的路由表信息:

可以看到,有一条路由规则:B>* 192.168.100.0/24这一行。这个便是bgpd产生的。

3、端口2605中的邻居显示:

客户端上的ping测试:

客户端A使用ping命令测试客户端B的IP地址:

结束语

上面的三个实验分别使用了RIP协议、OSPF协议、BGP协议来搭建路由器。演示了使用zebra/quagga搭建路由器的基本方法。可以看到,其实总的来说并不是特别困难,同时,也可以看到zebra/quagga软件却是很强大!

参考文章:Linux下使用Quagga(Zebra)搭建路由器记录 - sanyuanyanjin - 博客园 (cnblogs.com)

posted @ 2021-05-19 20:54  小学还没毕业呢  阅读(2064)  评论(0编辑  收藏  举报