实验目的:

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

实验器材:

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

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

实验步骤:

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.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”命令查看现有的路由表

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

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

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,如下图:

在上面的几个图中我们可以看出,我们的相邻虚拟机已经可以两两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的啦。

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

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

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

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

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

网络ID

子网掩码

接口

网关

0.0.0.0

255.255.0.0

eth0

10.3.0.200

接着我们就来试试看:

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

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

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

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

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

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

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

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

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

linux拿虚拟机充当路由,Linux通过虚拟机模拟路由器实现主机跨路由通信相关推荐

  1. 【计算机网络】 网关:即“默认网关”的作用, 以及 默认路由的作用(只有路由器才有默认路由)

    我是个傻逼,在做出成果之前不要高谈阔论,你高谈阔论,自以为很懂之后,会陷入自己思维的误区,一旦出现bug,你会很难发现问题所在. 本次实验(下面详细说明),一根线上的两段的接口的ip地址应该属于同一个 ...

  2. 红帽Linux系统操作命令大全【linux查询命令篇】---转自微信公众号网络技术联盟站

    1. 查看硬件信息 uname -a 查看内核/操作系统/CPU信息 head -n 1 /etc/issue 查看操作系统版本 cat /proc/cpuinfo 查看CPU信息 hostname ...

  3. linux虚拟网络设备--虚拟机网卡和linux bridge上tap设备的关系(七)

    1. 虚拟机进程 使用ps –ef |grepkvm可以看到虚拟机进程信息如下: /usr/libexec/qemu-kvm -nameinstance-0000001d -S -machine pc ...

  4. 为VMware虚拟机中的Linux系统设置固定IP的方法

    这篇文章主要介绍了为VMware虚拟机中的Linux系统设置固定IP的方法,包括以nat方式固定ip上网的方法,需要的朋友可以参考下 1.配置DNS: 修改 /etc/resolv.conf 文件,添 ...

  5. VMWare虚拟机安装RedHat Linux全过程

    简单的说,vmware就是一个虚拟机软件,它可以在你现有的OS上虚拟出一个新的子机,这个子机一方面是建立在你正在运行的OS之上的,同时, 它又拥有自己独立的CPU,硬盘,内存及各个硬件,当然,这些都是 ...

  6. vm虚拟机中搭建Linux

    目录 1. 安装VMWare 2. centos7安装 2.1 常见问题 3. 查看.设置IP地址 4. 关机与重启 5. 切换为国内源 在这里分享一个终端控制工具 6. Linux下的目录结构 1. ...

  7. esxi 内核 linux,大娃套小娃系列-ESXI虚拟机安装Debian系统实现Docker容器

    大娃套小娃系列-ESXI虚拟机安装Debian系统实现Docker容器 2021-04-03 20:01:00 8点赞 60收藏 12评论 先介绍一下我的新小主机,具体配置是Lenovo M93P+i ...

  8. openstack的qcow2镜像制作、linux系统中安装kvm虚拟机并导出为qcow2虚拟机、virt-manager制作qocw2镜像和转为raw格式——2.6w字超详细说明所有流程。

    文章目录 说明 环境准备 虚拟机中安装kvm虚拟机 1.确保支持cpu虚拟化 2.安装qemu-kvm.libvirt.virt-install包和权限调整 3.开启libvirtd服务病开机自启 4 ...

  9. linux虚拟网卡ping不通网关,解决虚拟机或物理机ping不通网关故障的方法与思路...

    基本思路:缓存 肯定问题缩小范围.先外部后内部,利用排除法.类比法.替换法(隔离法)将故障范围逐渐缩小到某一点.安全 谨慎作出结论.下结论前先三思,想到全部可能存在问题的点,特别是与别人讨论和描述问题 ...

  10. 虚拟机下运行linux通过nat模式与主机通信、与外网连接

    首先:打开虚拟机的编辑菜单下的虚拟网络编辑器,选中VMnet8 NAT模式.通过NAT设置获取网关IP,通过DHCP获取可配置的IP区间.同时,将虚拟机的虚拟机菜单的设置选项中的网络适配器改为NAT模 ...

最新文章

  1. ProxylessNAS pytorch
  2. 计算机网络的协议与体系结构
  3. nslang oracle_解决ojdbc14连接oracle报“java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch”异常问题...
  4. 20155301《信息安全系统设计基础》第六周学习总结
  5. android material 颜色值,Android Material Colors 谷歌 Material Design 标准颜色
  6. 扎实的基础是成功的法宝
  7. 史上最强Dubbo面试28题答案详解:核心功能+服务治理+架构设计等
  8. mac php errorlog,Mac下使用php的error_log()函数发送邮件
  9. 图形学大神纯FPGA实现Doom游戏芯片,无CPU、无操作码、无指令计数器
  10. 如何禁用Web表单字段/输入标签上的浏览器自动完成功能?
  11. 买什么手提电脑好_玉米种子买什么品种好?
  12. sh: /node_modules/.bin/vue-cli-service: Permission denied
  13. ajax异步上传图片文件并将其转换为base64格式
  14. cut and choose
  15. 结束已经占用的端口号的进程
  16. Caché 变量大全
  17. Java设计模式博客全目录
  18. Rosbag格式在线解压缩
  19. 微信网页开发——JS-SDK接入以及微信二次分享图标和标题丢失
  20. 【IT项目管理】第6章 驾驭IT项目成本

热门文章

  1. 英特尔开源技术中心招收虚拟化工程师若干(北京/上海)
  2. 【数字信号调制】基于matlab GUI数字信号调制系统【含Matlab源码 258期】
  3. 【数字信号调制】基于matlab二进制数字振幅调制与解调(2ASK)【含Matlab源码 996期】
  4. 【元胞自动机】基于matlab元胞自动机生命游戏【含Matlab源码 655期】
  5. idea新建一个java项目_创建第一个Java项目(Create First Java Project)
  6. 星球大战telnet_重制星球大战:第四集(1977)
  7. ubuntu chrome下载地址
  8. centos7 里面dump_centos7使用lldb调试netcore应用转储dump文件
  9. 大专适合学习php么_中专毕业上大专好还是出来工作?
  10. java如何使用md5加密_Java中MD5加密