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

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

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

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 devkmem 源码,linux dev/mem dev/kmem实现访问物理/虚拟内存-程序员宅基地

文章浏览阅读451次。dev/mem: 物理内存的全镜像。可以用来访问物理内存。/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。调试嵌入式Linux内核时,可能需要查看某个内核变量的值。/dev/kmem正好提供了访问内核虚拟内存的途径。现在的内核大都默认禁用了/dev/kmem,打开的方法是在 make menuconfig中选中 device drivers --> ..._dev/mem 源码实现

vxe-table 小众但功能齐全的vue表格组件-程序员宅基地

文章浏览阅读7.1k次,点赞2次,收藏19次。vxe-table,一个小众但功能齐全并支持excel操作的vue表格组件_vxe-table

(开发)bable - es6转码-程序员宅基地

文章浏览阅读62次。参考:http://www.ruanyifeng.com/blog/2016/01/babel.htmlBabelBabel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行// 转码前input.map(item => item + 1);// 转码后input.map(function (item) { return item..._让开发环境支持bable

FPGA 视频处理 FIFO 的典型应用_fpga 频分复用 视频-程序员宅基地

文章浏览阅读2.8k次,点赞6次,收藏29次。摘要:FPGA视频处理FIFO的典型应用,视频输入FIFO的作用,视频输出FIFO的作用,视频数据跨时钟域FIFO,视频缩放FIFO的作用_fpga 频分复用 视频

R语言:设置工作路径为当前文件存储路径_r语言设置工作目录到目标文件夹-程序员宅基地

文章浏览阅读575次。【代码】R语言:设置工作路径为当前文件存储路径。_r语言设置工作目录到目标文件夹

background 线性渐变-程序员宅基地

文章浏览阅读452次。格式:background: linear-gradient(direction, color-stop1, color-stop2, ...);<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner>] ,]? &l..._background线性渐变

随便推点

【蓝桥杯省赛真题39】python输出最大的数 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏8次。第十三届蓝桥杯青少年组python编程省赛真题一、题目要求(注:input()输入函数的括号中不允许添加任何信息)1、编程实现给定一个正整数N,输出正整数N中各数位最大的那个数字。例如:N=132,则输出3。2、输入输出输入描述:只有一行,输入一个正整数N输出描述:只有一行,输出正整数N中各数位最大的那个数字输入样例:

网络协议的三要素-程序员宅基地

文章浏览阅读2.2k次。一个网络协议主要由以下三个要素组成:1.语法数据与控制信息的结构或格式,包括数据的组织方式、编码方式、信号电平的表示方式等。2.语义即需要发出何种控制信息,完成何种动作,以及做出何种应答,以实现数据交换的协调和差错处理。3.时序即事件实现顺序的详细说明,以实现速率匹配和排序。不完整理解:语法表示长什么样,语义表示能干什么,时序表示排序。转载于:https://blog.51cto.com/98..._网络协议三要素csdn

The Log: What every software engineer should know about real-time data's unifying abstraction-程序员宅基地

文章浏览阅读153次。主要的思想,将所有的系统都可以看作两部分,真正的数据log系统和各种各样的query engine所有的一致性由log系统来保证,其他各种query engine不需要考虑一致性,安全性,只需要不停的从log系统来同步数据,如果数据丢失或crash可以从log系统replay来恢复可以看出kafka系统在linkedin中的重要地位,不光是d..._the log: what every software engineer should know about real-time data's uni

《伟大是熬出来的》冯仑与年轻人闲话人生之一-程序员宅基地

文章浏览阅读746次。伟大是熬出来的  目录  前言  引言 时间熬成伟大:领导者要像狼一样坚忍   第一章 内圣外王——领导者的心态修炼  1. 天纵英才的自信心  2. 上天揽月的企图心  3. 誓不回头的决心  4. 宠辱不惊的平常心  5. 换位思考的同理心  6. 激情四射的热心  第二章 日清日高——领导者的高效能修炼  7. 积极主动,想到做到  8. 合理掌控自己的时间和生命  9. 制定目标,马..._当狼拖着受伤的右腿逃生时,右腿会成为前进的阻碍,它会毫不犹豫撕咬断自己的腿, 以

有源光缆AOC知识百科汇总-程序员宅基地

文章浏览阅读285次。在当今的大数据时代,人们对高速度和高带宽的需求越来越大,迫切希望有一种新型产品来作为高性能计算和数据中心的主要传输媒质,所以有源光缆(AOC)在这种环境下诞生了。有源光缆究竟是什么呢?应用在哪些领域,有什么优势呢?易天将为您解答!有源光缆(Active Optical Cables,简称AOC)是两端装有光收发器件的光纤线缆,主要构成部件分为光路和电路两部分。作为一种高性能计..._aoc 光缆

浏览器代理服务器自动配置脚本设置方法-程序员宅基地

文章浏览阅读2.2k次。在“桌面”上按快捷键“Ctrl+R”,调出“运行”窗口。接着,在“打开”后的输入框中输入“Gpedit.msc”。并按“确定”按钮。如下图 找到“用户配置”下的“Windows设置”下的“Internet Explorer 维护”的“连接”,双击选择“自动浏览器配置”。如下图 选择“自动启动配置”,并在下面的“自动代理URL”中填写相应的PAC文件地址。如下..._設置proxy腳本