这篇文章是计算机网络上机实验课的作业。
实验任务:利用 VMWare 搭建一个由 5 个主机组成的随机拓扑的网络。要求该网络中至少有 2 个子网,两个路由器 。实验的网络拓扑图如下:
网络中有两个路由器,三个终端,组成三个局域网络。路由器和终端均为VMWare的的虚拟机。VMWare软件下载就在百度下载就可以了。这里我收藏了八台虚拟机ubuntu12,需要的同学可以下载使用哦。下载链接:https://pan.baidu.com/s/1miMIM9q (每台虚拟机的用户名和密码都是user,三台有图形界面,四台没有图形界面。)关于怎么导入和使用虚拟机自行百度哈~这里就不赘述了。
1. 虚拟机的网络配置
1.1 导入多个虚拟机
除需运行图形界面软件的虚拟机外,其它默认采用字符界面。在字符界面下可以选用普通用户或根用户(root)登录。用普通用户登录时,命令提示符为$,在执行需要 root 用户权限的命令时可通过在命令前加 sudo,或用 su 命令提升为 root 用户完成。用 root 用户登录时,命令提示符变为#。从字符界面启动图形界面时用命令 startx,为使图形界面运行正常,请先确保虚拟机内存达到256M。 我这次实验导入了5台虚拟机,571和572是路由器,573到575是终端。
1.2 连接多个虚拟机
VMWare 提供了十个虚拟交换机 VMnet0—VMnet9。其中 VMnet0、 VMnet1 和 VMnet8为专用设备,分别以 default Bridged、 Host-only 和 NAT 三种方式为虚拟机提供宿主机器原网络服务。另外七个虚拟交换机未被定义,可以用它们进行连接,配制虚拟网络。
下面介绍怎么配置各个虚拟机的网络:
U571 对应于网络中的route0,负责两个子网之间的交换路由。打开U571的虚拟机设置:
打开网络适配器,右侧选择自定义网络,选择VMNET2,这样虚拟机U571便与虚拟交换机VMNET2相连,与VMNET2相连的都在一个局域网内。VMWare 没有提供虚拟路由,我们需要用虚拟机来模拟出一个路由器,这样用来模拟路由器的虚拟机至少需要两张网卡, 所以你可能看到你的网络适配器只有一个,点击下方的添加按钮就可以为虚拟机添加多张网卡。
这样变又加入了一张网卡。现在U571就是一个链接了VMNET2和VMNET3的路由器了,同样的配置U572为链接VMNET3和VMNET4的路由器。U573和U574为连接VMNET2的终端。U575为链接VMNET4的终端。
为了理清网络结构和后面的内容,我给前面出现的图加一些注释方便理解:
标注了每个交换机和终端的网卡的IP地址,通过ping操作来检测是否网络链接正常。目标是任意的两个IP之间都能PING通。
2. 设置IP与路由规则
ip 地址是计算机进行网络通讯的基础,每一台联网计算机都至少具有一个 ip 地址。在日常使用中,我们通常能自动获取 ip,这是由于 DHCP 协议的作用。在本次实验中我们需
要手动为配置好的虚拟网络分配 ip 地址。
首先使用 ifconfig 命令查看网络配置,以虚拟机 U-571 为例,键入命令
- ifconfig -a |less
用"q"键退出。刚开始的虚拟机还没有IPV4地址。
然后使用ifconfig命令分别为两个网络设备eth0和eth1设置IP.(U571)
- sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0
- sudo ifconfig eth1 192.168.3.1 netmask 255.255.255.0
同样在U572中设置为
- sudo ifconfig eth0 192.168.4.1 netmask 255.255.255.0
- sudo ifconfig eth1 192.168.3.1 netmask 255.255.255.0
U573--U575的IP按照的上述的方法设置成上图中每个节点的IP就可以了。这里要仔细联系上面的图理清楚网络关系。
配置好之后我们可以用ifconfig -a 查看:
IP设置好后,就可以根据IP在路由上设置路由规则。这个也是本次实验的核心部分,路由器是根据路由表来进行数据包的转发的,如果没有路由表,数据包就不知道往哪里发,这个就跟写信不写地址就发不了一样。
在这里我们以路由器U571为例来说明,U572配置的方法是一样的。配置路由规则的命令如下:
- 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.3.1
- sudo ip route add 192.168.4.0/24 via 192.168.3.2
其中 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 的设备转发出去,即下一跳的 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.4.0/24的时候,把他的下一跳IP设置成了192.168.3.1,这里可以看到这样是不行的,如果有U575(192.168.4.2)的数据包的话,那么转发给192.168.3.1,路由器并不知道下面该把包发送给谁。所以应该设置成192.168.3.2,然后路由器U572中,再添加路由规则sudo ip route add 192.168.4.0/24 via 192.168.4.1,这样便可以把包转发给U575了。这里需要好的体会下是怎么实现的。
最后我们要让虚拟路由允许转发,置虚拟机 U-571 的 ip_forward 标志为 1。 这里我们需要把/proc/sys/net/ipv4/目录下的文件 ip_forward 值置为 1。 使用命令 echo,形如:
- echo 1 > /proc/sys/net/ipv4/ip_forward
在运行上述代码会出现permission denied,这时运行 sudo su,然后再执行上述代码就可以了。
然后同理的配置好路由器U572后就可以愉快的相互ping通了。
实验下从U572(192.168.2.2) ping u575(192.168.4.2)结果如下:
这就ping通啦~说明网络配置成功了。
我也是才开始学计算机网络,文章中出现了哪些专业术语不正确的地方还望大家指正~纯手打,看完点个赞吧(●'◡'●)!!!