Linux通过虚拟机模拟路由器实现主机跨路由通信(2)

至此,我们第一个路由器的配置就全部完成,接着,我们用相同的方法给剩下两个路由器做配置。方法相同~所以下面就只列出剩下两个路由器的路由表啦:

Node2:

网络ID

 

子网掩码

 

接口

 

网关

 

10.1.0.0

 

255.255.0.0

 

eth0

 

10.2.0.200

 

10.2.0.0

 

255.255.0.0

 

Eth0

   

10.3.0.0

 

255.255.0.0

 

eth1

   

10.4.0.0

 

255.255.0.0

 

eth1

 

10.3.0.201

 

Node3:

网络ID

 

子网掩码

 

接口

 

网关

 

10.1.0.0

 

255.255.0.0

 

eth0

 

10.3.0.200

 

10.2.0.0

 

255.255.0.0

 

eth0

 

10.3.0.200

 

10.3.0.0

 

255.255.0.0

 

eth0

   

10.4.0.0

 

255.255.0.0

 

eth1

   

全部设置完毕后,我们可以先试一下在相邻的两个虚拟机之间ping,如下图:

Linux通过虚拟机模拟路由器实现主机跨路由通信

Linux通过虚拟机模拟路由器实现主机跨路由通信

Linux通过虚拟机模拟路由器实现主机跨路由通信

Linux通过虚拟机模拟路由器实现主机跨路由通信

在上面的几个图中我们可以看出,我们的相邻虚拟机已经可以两两ping通,那么,这是不是意味着我们的实验完成了呢?接下来我们来试一试node2来ping主机A:

咦?为什么ping不通?这就很尴尬了,我们来找找原因。

奥,原来是因为我们是把node1当做路由器,但是事实是他还是一个主机,它接收到来自node2的包发现不是自己的就扔掉了,而不会转给主机A,所以,接下来我们就要把node1,node2,node3三个路由器设置成可以转发的。具体操作如下:

echo 1 > /proc/sys/net/ipv4/ip_forward

我们在node1中输入上面的命令,然后再用node2去ping 主机A:

Linux通过虚拟机模拟路由器实现主机跨路由通信

当当当当~已经可以ping通了~

接下来我们要在剩下的两个充当路由器的虚拟机中也输入上述命令:

Linux通过虚拟机模拟路由器实现主机跨路由通信

好了,接下来就是见证奇迹的时刻!我们用主机B来ping主机A:

Linux通过虚拟机模拟路由器实现主机跨路由通信

啊咧,为啥还是ping不通呢?

让我们来查一下防火墙

Linux通过虚拟机模拟路由器实现主机跨路由通信

奥,原来是因为防火墙没有关闭,好吧,我们把5台虚拟机的防火墙都临时关闭。命令是:“iptables -F”

全部关闭以后,我们再来试着ping一下~

Linux通过虚拟机模拟路由器实现主机跨路由通信

当当当当,已经可以啦~

现在我们也可以用mtr来动态跟踪路由状态~

Linux通过虚拟机模拟路由器实现主机跨路由通信

看,三个路由器的端口IP都有喏,当然,也少不了我们主机B的啦。

完成了!撒花✿✿ヽ(°▽°)ノ✿

以上,我们的实验圆满成功!

当然啦,既然我们做实验,就要做得完美一点嘛~我们可以把实验的过程进行优化呀~

我们可以看到,在路由器R3(node3)的路由表记录中,有两条记录是基本一致的:

Linux通过虚拟机模拟路由器实现主机跨路由通信

那么,我们可以把这两条记录合并成一条吗?如同下表中所示:

网络ID

 

子网掩码

 

接口

 

网关

 

0.0.0.0

 

255.255.0.0

 

eth0

 

10.3.0.200

 

接着我们就来试试看:

首先,我们把这两条记录从路由表中删除,然后,我们在添加新的记录:

Linux通过虚拟机模拟路由器实现主机跨路由通信

然后,我们用主机A来ping一下主机B,看看效果如何:

Linux通过虚拟机模拟路由器实现主机跨路由通信

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/970c94afebc00e0f4da055b514b2d229.html