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:
BRouter 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)
标签:quagga,Ubuntu,192.168,Quagga,etc,zebra,conf,Zebra,路由器 来源: https://www.cnblogs.com/xyz-8108923246/p/14787286.html