多台虚拟机搭建模拟网络环境-程序员宅基地

技术标签: 网络  智能路由器  

点击星标,即时接收最新推文

acbdbc6ea6f68f41c0068afa6cc51cb5.png

目的

采用多台虚拟机在一台计算机实体上模拟一个小型的网络环境。

我们采用虚拟机( Virtual Machine)软件来模拟一个网络环境进行实验,这类软件的主要功能是利用软件来模拟出具有完整硬件系统功能的且运行在隔离环境中的完整计算机系统。这样我们可以在一台物理计算机即宿主机器(Host Machine)上模拟出一台或多台虚拟的计算机。这些虚拟机能够像真正的计算机那样进行工作,我们可以在其上安装全新的操作系统和应用软件。通过虚拟机软件中的虚连接设备将各个虚拟机连接起来,我们就可以搭建出实验所需的网络环境。

网络拓扑

接下来给出要构建的网络拓扑结构和拓扑结构配置信息表:

0772ce89235afef5f14810a1b10c6bd2.pngca6f131a2df907826b6c3d0eb5959ca1.png

此次实验我们采用5台虚拟机,分别为UT-571~UT-575,网络拓扑中有两台路由器,分别用UT-571和UT-574来模拟,两个路由器通过网络相连,这里用虚拟网络VMnet4来模拟,两个路由器分别下辖PC0,PC1和PC2三台主机,三台主机分别用UT-572,UT-573和UT-575来模拟。

由网络拓扑结构图可以看出,PC0,PC1和Route0处于同一个网段,网段为192.168.2.0/24,而PC2和Route1处于同一个网段,为192.168.3.0/24,然后为了实现两个网段的联通,我们将两个路由器设置在同一个网段192.168.4.0/24中,即需要三个虚拟网络,来实现5台机器相互的联通。

我们的目标是配置每台机器的网卡,IP,网关和路由器的转发表,使得此虚拟网络上的每台机器之间都可以实现通信。

图中正方体的图形表示局域网的交换机。

最后我们通过机器之间相互Ping操作来测试是否联通。

步骤:配置虚拟机

我们至少需要给每台虚拟机配置一个网卡以实现网络互连,并且需要给虚拟机UT-571和UT-574配置两块网卡,因为它们是路由器,分属于两个网段,配置虚拟机的过程如下所示:

在虚拟机开机之前选择编辑选项

e7c233cafd445935c4d1daabe1fda0ea.png

如果之前没有网卡,那么点Add添加网卡,然后next:

9de19b0f3f0790df3c28daa9eee7b271.png

73f4e0d4f625d360f8de0ca63c0813cb.png

添加网卡的配置,选择Custom: Specific virtual network,将机器配置到对应的虚拟网络,如PC0和PC1配置到VMnet2,PC2配置到VMnet3,两个路由器虚拟机配置添加两块网卡分别设为两个网段。

3391202d063115c44e9e7d8dcad9aace.png25d8aec60231b23af68a5004a9663034.png

设置每个终端PC

ip 地址是计算机进行网络通讯的基础,每一台联网计算机都至少具有一个 ip 地址。在日常使用中,我们通常能自动获取 ip,这是由于 DHCP 协议的作用。这次我们需要手动为配置好的虚拟网络分配 ip 地址。

打开每台机器(PC0,PC1,PC2)的终端Terminal,输入

1

ifconfig -a

将会看到如下的输出:

1fb0fd664ff553df82cb68a89c640de1.png

输出显示机器网卡还没有配置IPV4地址,我们将手动配置固定的IP地址。

为了防止DHCP协议和Network Manager的干扰,改变我们设置的IP地址,我们输入

1

sudo service network-manager stop

停用network-manager服务,这样我们设置的IP就不会被系统改变了。

Network Manager是Linux系统进行网络管理的一项服务。

Network Manager由一个管理系统网络连接、并且将其状态通过D-BUS(是一个提供简单的应用程序互相通讯的途径的自由软件项目,它是做为freedesktoporg项目的一部分来开发的。)进行报告的后台服务,以及一个允许用户管理网络连接的客户端程序。

Network Manager的优点:简化网络连接的工作,让桌面本身和其他应用程序能感知网络。

想了解network manager请自行查阅资料。

然后设置各个PC的IP,PC0和PC1由于同处192.168.2.0/24网段,所以我们将它们的IP分别设置为192.168.2.2(UT-572)和192.168.2.3(UT-573),将192.168.2.1留给路由器Route0(UT-571)使用。

设置IP地址有如下命令:(以192.168.2.2为例)

1

sudo ifconfig eth0 192.168.2.2 netmask 255.255.255.0

然后可使用ifconfig -a命令查看IP情况如图。

dfdd8ef5ca255999161932d592e09339.png

然后设置默认网关为该网段的路由器Route0的eth0的IP地址(192.168.2.1):

1

sudo route add default gw 192.168.2.1

这样一个终端PC就已经配置好了,它有了自己的IP地址和默认网关。

大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”,也就是网络关卡(–百度百科),此时PC0的网络关口就是它的路由器Route0的eth0。

其它终端PC配置相似。

设置路由器

IP地址设置同上,

1

2

3

ifconfig -a  # 查看IP地址情况

sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0  # 设置eth0端IP地址

sudo ifconfig eth1 192.168.4.1 netmask 255.255.255.0  # eth1端

eth0是面向PC0和PC1的网卡,而eth1是面向另一个网段(192.168.4.0/24)的的网卡

但路由器毕竟是路由器,它还需要有一套路由转发表,以便起到路由的作用。

所以接下来设置Route0(UT-571)的路由表:

1

2

3

sudo ip route add 192.168.2.0/24 via 192.168.2.1

sudo ip route add 192.168.3.0/24 via 192.168.4.2

sudo ip route add 192.168.4.0/24 via 192.168.4.1

其中 ip route add 192.168.2.0/24 via 192.168.2.1 命令添加的规则,告诉路由目的 ip 在

192.168.2.0/24(192.168.2.1~192.168.2.255)网段内的封包经由 ip 地址为 192.168.2.1 的设备(Route0)转发出去,即下一跳的 ip 为 192.168.2.1。而 192.168.2.0/24 是 Linux 中常用的掩码表示方式。

24 表示掩码字长为 24 即掩码为 255.255.255.0, 192.168.2 为网络号, 1 ~ 254 为网络中的主机号。此外还有其他形式用于添加路由规则的命令。

而第二条规则表示告诉路由目的IP在192.168.3.0/24网段的封包要经过的下一跳IP为192.168.4.2(即VMnet4的另一端,也即Route1的eth1,因为Route1是网段192.168.3.0/24的路由器)

最后一条规则表示,告诉路由目的IP在192.168.4.0/24网段的封包将被转发的下一跳IP为192.168.4.1即Route0的eth1.

最后我们要让虚拟路由允许转发,置虚拟机 U-571 的 ip_forward 标志为 1。这里我们需要把/proc/sys/net/ipv4/目录下的文件ip_forward值置为 1。使用命令 echo,形如:

1

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

这样我们的路由器Route0也就设置好了,以相同的步骤我们很快可以设置好Route1。

一些步骤图如下:

2a329972f084c67bd7ddd9a2edd93760.png

1180ad93df9780afe278a92e5d8cd617.png49e5a8a2a34124dd2dffd33e6c2b4d9a.png4801fde57423bf1a787e5ad0988af745.png5e08d92f21b53cc2c1c659554ab61d5c.png

测试

最后我们可以在不同的虚拟机上ping别的虚拟机的IP,已测试是否实现互联互通。

PC0 ping PC1:

5546ade11a09c097fd8425bbf53d5430.png

PC0 ping Route1 eth1 和 PC2:

96db63a8741b02e610d98cdea6f5d9de.png

PC2 ping PC0, PC1:

8cd2dbc8b0b8c52d3346fc274751baa1.png

等等等等,容易看到,正确设置的情况下,都可以ping通,实现了两个局域网的互联互通。

wireshark抓包

在Terminal中输入

1

sudo wireshark

启动wireshark,通过下图蓝框选择要监听的设备,如eth0,然后在终端中启动ping,观测数据包的来往:

6b4659e1a2fda839ded9e459d832fb88.png

结果如下,PC0 ping PC1的包流动情况:

eb637b82f565a47ff77a9eed2a62239e.png

PC0 ping PC2的包流动情况:

800773d95b7e7bc07d0bdff382e56d3f.png

点开某个包,可以看到:

26fff3438d58ccd31c1f501c0abe4548.png

协议框中显示所选分组的各层协议:物理层帧、以太网帧及其首部、 IP 协议数据报及其首部, Internet控制报文协议。原始框中则显示分组中包含的数据的每个字节。从中可以观察到原始数据,其中左边显示的是十六进制的数据,右边则是 ASCII 码。在协议框中选中一个条目,在原始框中会标记出对应的原始数据,反之在原始框中选中也一样。

完结

这样,此次虚拟网络构建就成功了。

总的来说,计算机网络这个东西,知道 和 会做 之间有着很大的距离,一些基础的网络理论知识,真正用起来却显得无比的生疏,终究还是太菜了罢~

a6b34e057a44b3eb764446b236338449.gif

MS08067安全实验室视频号已上线

欢迎各位同学关注转发~

—  实验室旗下直播培训课程  —

a57fce1478178df666ded54f94689ad9.png

97a3a21c850c59ab7a57877170673629.jpeg

b46142b18f711d5d523573a527bebdf3.jpege83f6a4cc34bccfcdb0dab663b330af5.png

a1cc9d3e9ee914c1865ed26364743ce0.png

b3985b8651089a37519173cd3ccfce35.jpeg

a1595e3ae29ad8581206029386f94d9e.jpeg

ae596a5d7a3ac50b055bdcaf07a60ae2.jpeg

ccf1aa6dce17d475a4efac0ca2af29cc.png

和20000+位同学加入MS08067一起学习

eca02eb275215034a7c75f7f51a740dd.gif

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shuteer_xu/article/details/135687625

智能推荐

解决win10/win8/8.1 64位操作系统MT65xx preloader线刷驱动无法安装_mt65驱动-程序员宅基地

文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动

SonarQube简介及客户端集成_sonar的客户端区别-程序员宅基地

文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别

元学习系列(六):神经图灵机详细分析_神经图灵机方法改进-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进

【机器学习】机器学习模型迭代方法(Python)-程序员宅基地

文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代

base64图片打成Zip包上传,以及服务端解压的简单实现_base64可以装换zip吗-程序员宅基地

文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗

Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字-程序员宅基地

文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字

随便推点

ESXi 快速复制虚拟机脚本_exsi6.7快速克隆centos-程序员宅基地

文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos

好友推荐—基于关系的java和spark代码实现_本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。-程序员宅基地

文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。

南京大学-高级程序设计复习总结_南京大学高级程序设计-程序员宅基地

文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计

4.朴素贝叶斯分类器实现-matlab_朴素贝叶斯 matlab训练和测试输出-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出

Markdown 文本换行_markdowntext 换行-程序员宅基地

文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行

错误:0xC0000022 在运行 Microsoft Windows 非核心版本的计算机上,运行”slui.exe 0x2a 0xC0000022″以显示错误文本_错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行-程序员宅基地

文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex