linux模拟实现主机跨路由通信

实验目的:

通过虚拟机模拟路由器,实现两台主机之间跨路由通信。

实验器材:

5个虚拟机,其中2个作为主机使用,3个模拟路由器使用。

本实验中所用虚拟机均为centos6。

实验步骤:

1、画出构图,部署所需要的网络环境。

如图所示,R1,R2,R3为模拟的路由器,A,B为两个主机。配置IP也在图中有所说明。

2、根据构图,配置5个虚拟机的设置。

图中可以看出,我们一共需要四个网段,我们可以在虚拟机中添加新的网段,具体步骤如图:

至此,我们的网段添加完毕。

接着我们对虚拟机的网段进行设置:

我们把虚拟机进行重命名以确保我们能够清楚的分辨每台虚拟机的作用:

接着,我们以主机A的网段设置为例,来演示一下如何更改:

同理,对剩下四个虚拟机做相同操作,作为主机的两台虚拟机只需要设置一个网段,而作为路由器的三台虚拟机则需要设置两个网段,具体设置如下:

    centos6.9-A eth1:VMnet11

    node1 eth0:VMnet11

          eth1:VMnet12

    node2 eth0:VMnet12

          eth1:VMnet13

   node3 eth0:VMnet13

          eth1:VMnet14

    centos6.9-B eth0:VMnet14

全部设置完毕后,开启所有虚拟机。

3、给用于通信的两个主机添加相对应的IP和网关。

首先是centos6.9-A的eth1。我们直接修改配置文件 /etc/sysconfig/network-scripts/ifcfg-eth1。添加我们规划的IP,子网掩码和网关。

设置完毕后,我们来重启一下网络服务

图中提示错误,是因为找不到eth0这个网卡,而在本实验中,我本来就没有设置该网卡,所以可以忽视掉。

接下来我们用“route -n”看一下这个设置有没有生效

很显然,我们的设置已经生效。

至此,我们已经完成第一个通信主机的设置,接下来,我们来配置第二个通信主机:

同样的,我们直接修改配置文件 /etc/sysconfig/network-scripts/ifcfg-eth1。添加我们规划的IP,子网掩码和网关。

重启服务,并查看是否成功:

至此,我们的两台通信主机已经设置完毕。

4、进行三个路由的IP和路由表的配置。

Node1:

至此,网络IP已经配置完成。接下来,我们要来配置路由表,为了保证我们的两台主机可以连通,我们需要添加如下信息:

网络ID子网掩码接口网关
10.1.0.0255.255.0.0eth0 
10.2.0.0255.255.0.0eth1 
10.3.0.0255.255.0.0eth110.2.0.201
10.4.0.0255.255.0.0eth110.2.0.201

我们使用“route -n”命令查看现有的路由表

图中发现,表中数据已经有两个存在。所以我们只需要添加另外两个进路由表就可以啦~所以我们来加吧!

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

Node2:

网络ID子网掩码接口网关
10.1.0.0255.255.0.0eth010.2.0.200
10.2.0.0255.255.0.0Eth0 
10.3.0.0255.255.0.0eth1 
10.4.0.0255.255.0.0eth110.3.0.201

Node3:

网络ID子网掩码接口网关
10.1.0.0255.255.0.0eth010.3.0.200
10.2.0.0255.255.0.0eth010.3.0.200
10.3.0.0255.255.0.0eth0 
10.4.0.0255.255.0.0eth1 

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

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

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

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

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

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

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

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

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

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

让我们来查一下防火墙

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

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

当当当当,已经可以啦~

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

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

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

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

以上内容来源为linux模拟实现主机跨路由通信 – 走看看 (zoukankan.com)

侵权联系删除

加分项

给主机A添加防火墙限制,禁止主机B ping 通主机A

添加防火墙命令

注:10.4.0.59为主机B的ip地址

可以看见B无法ping通A

但是A可以ping通主机B

且主机B可以ping通其它路由器

至此实验成功