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

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

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

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

智能推荐

linux里面ping www.baidu.com ping不通的问题_linux桥接ping不通baidu-程序员宅基地

文章浏览阅读3.2w次,点赞16次,收藏90次。对于这个问题我也是从网上找了很久,终于解决了这个问题。首先遇到这个问题,应该确认虚拟机能不能正常的上网,就需要ping 网关,如果能ping通说明能正常上网,不过首先要用命令route -n来查看自己的网关,如下图:第一行就是默认网关。现在用命令ping 192.168.1.1来看一下结果:然后可以看一下电脑上面百度的ip是多少可以在linux里面ping 这个IP,结果如下:..._linux桥接ping不通baidu

android 横幅弹出权限,有关 android studio notification 横幅弹出的功能没有反应-程序员宅基地

文章浏览阅读512次。小妹在这里已经卡了2-3天了,研究了很多人的文章,除了低版本api 17有成功外,其他的不是channel null 就是没反应 (channel null已解决)拜托各位大大,帮小妹一下,以下是我的程式跟 gradle, 我在这里卡好久又没有人可问(哭)![image](/img/bVcL0Qo)public class MainActivity extends AppCompatActivit..._android 权限申请弹窗 横屏

CNN中padding参数分类_cnn “相同填充”(same padding)-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏6次。valid padding(有效填充):完全不使用填充。half/same padding(半填充/相同填充):保证输入和输出的feature map尺寸相同。full padding(全填充):在卷积操作过程中,每个像素在每个方向上被访问的次数相同。arbitrary padding(任意填充):人为设定填充。..._cnn “相同填充”(same padding)

Maven的基础知识,java技术栈-程序员宅基地

文章浏览阅读790次,点赞29次,收藏28次。手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长![外链图片转存中…(img-Qpoc4gOu-1712656009273)][外链图片转存中…(img-bSWbNeGN-1712656009274)]

getFullYear()和getYear()有什么区别_getyear和getfullyear-程序员宅基地

文章浏览阅读469次。Date对象取得年份有getYear和getFullYear两种方法经 测试var d=new Date;alert(d.getYear())在IE中返回 2009,在Firefox中会返回109。经查询手册,getYear在Firefox下返回的是距1900年1月1日的年份,这是一个过时而不被推荐的方法。而alert(d.getFullYear())在IE和FF中都会返回2009。因此,无论何时都应使用getFullYear来替代getYear方法。例如:2016年用 getFullYea_getyear和getfullyear

Unix传奇 (上篇)_unix传奇pdf-程序员宅基地

文章浏览阅读182次。Unix传奇(上篇) 陈皓 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 Unix是目前还在存活的操作系_unix传奇pdf

随便推点

ACwing 哈希算法入门:_ac算法 哈希-程序员宅基地

文章浏览阅读308次。哈希算法:将字符串映射为数字形式,十分巧妙,一般运用为进制数,进制据前人经验,一般为131,1331时重复率很低,由于字符串的数字和会很大,所以一般为了方便,一般定义为unsigned long long,爆掉时,即为对 2^64 取模,可以对于任意子序列的值进行映射为数字进而进行判断入门题目链接:AC代码:#include<bits/stdc++.h>using na..._ac算法 哈希

VS配置Qt和MySQL_在vs中 如何装qt5sqlmysql模块-程序员宅基地

文章浏览阅读952次,点赞13次,收藏27次。由于觉得Qt的编辑界面比较丑,所以想用vs2022的编辑器写Qt加MySQL的项目。_在vs中 如何装qt5sqlmysql模块

【渝粤题库】广东开放大学 互联网营销 形成性考核_画中画广告之所以能有较高的点击率,主要由于它具有以下特点-程序员宅基地

文章浏览阅读1k次。选择题题目:下面的哪个调研内容属于经济环境调研?()题目:()的目的就是加强与客户的沟通,它是是网络媒体也是网络营销的最重要特性。题目:4Ps策略中4P是指产品、价格、顾客和促销。题目:网络市场调研是目前最为先进的市场调研手段,没有任何的缺点或不足之处。题目:市场定位的基本参数有题目:市场需求调研可以掌握()等信息。题目:在开展企业网站建设时应做好以下哪几个工作。()题目:对企业网站首页的优化中,一定要注意下面哪几个方面的优化。()题目:()的主要作用是增进顾客关系,提供顾客服务,提升企业_画中画广告之所以能有较高的点击率,主要由于它具有以下特点

爬虫学习(1):urlopen库使用_urlopen the read operation timed out-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏5次。以爬取CSDN为例子:第一步:导入请求库第二步:打开请求网址第三步:打印源码import urllib.requestresponse=urllib.request.urlopen("https://www.csdn.net/?spm=1011.2124.3001.5359")print(response.read().decode('utf-8'))结果大概就是这个样子:好的,继续,看看打印的是什么类型的:import urllib.requestresponse=urllib.r_urlopen the read operation timed out

分享读取各大主流邮箱通讯录(联系人)、MSN好友列表的的功能【升级版(3.0)】-程序员宅基地

文章浏览阅读304次。修正sina.com/sina.cn邮箱获取不到联系人,并精简修改了其他邮箱代码,以下就是升级版版本的介绍:完整版本,整合了包括读取邮箱通讯录、MSN好友列表的的功能,目前读取邮箱通讯录支持如下邮箱:gmail(Y)、hotmail(Y)、 live(Y)、tom(Y)、yahoo(Y)(有点慢)、 sina(Y)、163(Y)、126(Y)、yeah(Y)、sohu(Y) 读取后可以发送邮件(完..._通讯录 应用读取 邮件 的相关

云计算及虚拟化教程_云计算与虚拟化技术 教改-程序员宅基地

文章浏览阅读213次。云计算及虚拟化教程学习云计算、虚拟化和计算机网络的基本概念。此视频教程共2.0小时,中英双语字幕,画质清晰无水印,源码附件全课程英文名:Cloud Computing and Virtualization An Introduction百度网盘地址:https://pan.baidu.com/s/1lrak60XOGEqMOI6lXYf6TQ?pwd=ns0j课程介绍:https://www.aihorizon.cn/72云计算:概念、定义、云类型和服务部署模型。虚拟化的概念使用 Type-2 Hyperv_云计算与虚拟化技术 教改