阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

248次阅读
没有评论

共计 2806 个字符,预计需要花费 8 分钟才能阅读完成。

实验目的:

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

实验器材:

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

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

实验步骤:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   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, 子网掩码和网关。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Node1:

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

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

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

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

网络 ID

子网掩码

接口

网关

10.1.0.0

255.255.0.0

eth0

 

10.2.0.0

255.255.0.0

eth1

 

10.3.0.0

255.255.0.0

eth1

10.2.0.201

10.4.0.0

255.255.0.0

eth1

10.2.0.201

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

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

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

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

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

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:

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

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

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

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

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

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

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

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

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

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 通过虚拟机模拟路由器实现主机跨路由通信

依然是可以 ping 通的。那么,这是为什么呢?这个是由于我们的 R3 是边缘路由,我们完全可以把它配置成为默认路由,只负责转发就好啦~ 同理,R1 也可以进行这样的设置。

接下来我们来试一试另外一种操作,如果我们只给 R1 的路由表中添加 10.4.0.0 网段的路由信息,而不添加 10.3.0.0 网段的路由信息,那么,我们的消息可以到达 10.4.0.0 网段吗?我们来实验一下:

把 R1 路由表中的 10.3.0.0 网段的路由信息删掉:

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

删掉了以后,我们再用主机 A 来 ping 一下主机 B,看看结果如何:

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

还是可以 ping 通的吖~ 这是为什么呢?

我们先来动态跟踪一下路由信息:

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

咦,有没有发现,我们的第三个是???状态,这是因为我们的 R1 一头连着主机 A,一头连着外面,当数据发送到 R1 时,R1 直接负责转发就可以了,通过 R1 到达 R2,然后从 R2 继续向下一个路由器转发,也就是我们的 R3,最终通过 R3 到达我们的目的网段。由于在 R1 中没有配置 10.3.0.0 的网段信息,所以我们的路由跟踪是读不出来 R3 的 IP 的。当然,如果这个实验的目的网段为 10.3.0.0,就不能实现啦!

 

至此,我们的实验已经全部结束 0.0

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2806字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中