《计算机网络微课堂》实验21 VLAN间通信的实现方法:多臂路由
本仿真实验的目的在于验证微软件的通信可以使用多臂路由来实现。
我已经在仿真软件中构建好了我们理论课中所使用的网络拓扑,并且在各主机和路由器的各接口旁边都标注好了所需配置的 IP 地址和地址掩码。
需要说明的是三个地址块/后面的数字 24,表明地址掩码为 255.255.255.0。为了简单起见,图中并没有标注出地址掩码的点分十进制形式。
- 我们的应用需求是将主机 ABC 划分到 VLAN10,将主机 DEF 划分到 VLAN20,并且 VLAN10 中的主机可以和 VLAN20 中的主机相互通信,也就是我们所谓的实现 VLAN 间的通信
- 很显然这样的应用需求仅靠数据链路层提供的服务是无法实现的。我们需要使用网络层的互联设备,也就是路由器来实现
- 我们可将交换机上的某个接口划分到 VLAN10,另一个接口划分到 VLAN20,接口类型采用默认的 ACCESS 类型,然后将这两个接口分别连接到路由器的两个接口上,这相当于我们使用路由器将 VLAN10 和 VLAN20 这两个不同的网络进行了互联
- 我们还需要将 VLAN10 中各主机所连接的交换机接口划分到 VLAN10,将 VLAN20 中各主机所连接的交换机接口划分到 VLAN20,接口类型也采用默认的 ACCESS 类型
- 另外我们还应给各 VLAN 中的各主机配置相应的 IP 地址和地址掩码,需要注意的是 VLAN10 与 VLAN20 是两个不同的网络,因此他们的网络地址不相同,VALN10 的网络地址为 192.168.1.0/24,VLAN20 的网络地址为 192.168.2.0/24
相应的VLAN10 中各主机的 IP 地址和路由器接口的 IP 地址的网络号部分应该相同,也就是点分十进制的前三个 10 进制数为 192.168.1,而第 4 个 10 进制数应该互不相同,并且不能为 0 和 255,因为为 0 则是该网络的网络地址,为 255 则是该网络的广播地址
同理 VLAN20 装各主机的 IP 地址和路由器接口的 IP 地址的网络号部分应该相同,也就是点分十进制的前三个 10 进制数为 192.168.2,而第 4 个十进制数应该互不相同,并且不能为 0 和 255 - 我们还需要给各主机指定默认网关,该路由器既是 VLAN10 的默认网关,也是 VLAN20 的默认网关。对于 VLAN10 中的主机 ABC,他们的默认网关应该指定为该路由器的接口 0/0 的 IP 地址,对于 VLAN20 中的主机 DEF 他们的默认网关应该指定为该路由器的接口 0/1 的 IP 地址,下面我们就开始进行配置工作
第一步给各主机配置 IP 地址,地址掩码以及指定默认网关。我们先给主机 A 配置,点击主机 A在弹出窗口中选择桌面选项卡,然后选择 IP 配置,注意这里请确保选择的是静态,也就是我们要手工配置 IP 地址,而不是使用 DHCP 让主机自动获取 IP 地址,输入主机 A 的 IP 地址 192.168.1.1,输入主机默认网关的 IP 地址,也就是路由器接口 0/0 的 IP 地址:192.168.1.254。
关闭 IP 配置窗口,这样我们对主机 A 的配置工作就要完成了,其他主机的配置工作请您自行完成,这里就不再演示了。
第二步,给路由器的各接口配置 IP 地址和地址掩码,点击路由器,在弹出窗口中选择命令行界面选项卡,这样我们就要进入了该路由器的命令行界面,按回车键进入命令行提示符,输入 en 进入特权模式,输入 CONF T 进入全局配置模式,输入 INTERFACE G0/0,进入端口 G0/0 的配置模式,输入 IP ADDRESS 192.168.1.254, 255.255.255.0 回车,这样我们就给路由器的 G0/0 接口配置好了 IP 地址和地址掩码,输入 NA SHUT,开启该接口。
输入 INTERFACE G0/1,进入端口 G0/1 的配置模式,输入 IP ADDRESS 192.168.2.254 255.255.255.0 这样我们就给路由器的 G0/1 接口,配置好了 IP 地址和地址,掩码输入 NO ,SHUTDOWN 回车,开启该接口
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int g0/0
Router(config-if)#ip addr 192.168.1.254 255.255.255.0
Router(config-if)#no shut
%LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up
Router(config-if)#int g0/1
Router(config-if)#ip addr 192.168.2.254 255.255.255.0
Router(config-if)#no shut
%LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to up
第三步,给交换机添加 vlan,点击交换机,在弹出窗口中选择命令行界面选项卡,这样我们就进入了该交换机的命令行界面,按回车键进入命令行提示符,输入 en 进入特权模式,输入 conf t 进入全局配置模式:
- 输入 vlan 10 这样我们就要创建了 vlanid 为 10 的 vlan
- 输入 name vlan10 将新创建的 10 号 vlan 命名为 vlan10
- 输入 vlan 20 这样我们就要创建了 vlanid 为 20 的 vlan
- 输入 name vlan20,将新创建的 20 号 vlan 命名为 vlan20
输入 end 回车,退回到特权模式,输入 show vlan brief 可以查看到我们新创建的 vlan10 和 vlan20。
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#name VLAN10
Switch(config-vlan)#vlan 20
Switch(config-vlan)#name VLAN20
Switch(config-vlan)#end
Switch#
%SYS-5-CONFIG_I: Configured from console by console
show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gig0/1, Gig0/2
10 VLAN10 active
20 VLAN20 active
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
第 4 步,将交换机上的各接口划归到相应的 vlan。输入 conf t 回车,进入全局配置模式,输入 interface range f0/1-3, f0/7 也就是我们要对 f0/1、f0/2、f0/3 以及 f0/7 这些接口进行批量设置,输入 switchport mode access,设置接口类型为 access 类型。
输入 switchport access vlan 10 回车,将接口划归到 vlan10。
输入 interface range f0/4-6,f0/8,也就是我们要对 f0/4、f0/5、f0/6 以及 f0/8 这些接口进行批量设置。
输入 switchport mode access,设置接口类型为 access 类型。
输入 switchport access vlan 20,将接口划归到 VLAN20。
输入 end,退回到特权模式,输入 show vlan brief 可以查看到我们已经将交换机上的各接口相应的划归 VLAN10 和 vlan20,到这里所有的配置工作已经完成了。
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface range f0/1-3,f0/7
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config-if-range)#interface range f0/4-6,f0/8
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
Switch(config-if-range)#end
Switch#
%SYS-5-CONFIG_I: Configured from console by console
Switch#show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gig0/1, Gig0/2
10 VLAN10 active Fa0/1, Fa0/2, Fa0/3, Fa0/7
20 VLAN20 active Fa0/4, Fa0/5, Fa0/6, Fa0/8
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
接下来我们就来测试一下 VLAN10 中的主机是否可以与 VLAN20 中的主机相互通信?请注意首先必须确保交换机各接口与路由器各接口的指示灯是绿色的,如果有棕色的,请反复切换软件右下角的实时与仿真模式,直到指示灯全部变为绿色。如果有红色指示灯,则表明您之前对路由器接口配置时,NO SHUTDOWN 命令输入不正确或忘记输入该命令了,导致路由器接口没有开启,确保我们现在是在实时模式下进行测试。
用主机 A 来 ping 一下主机 E 看是否能 ping 通。输入 ping 192.168.2.2,回车,可以看到第一次的请求超时了,后边三次都会收到来自 192.168.2.2,也就是主机 E 的响应,这表明 VLAN 间现在可以通信了:
C:\>ping 192.168.2.2
Pinging 192.168.2.2 with 32 bytes of data:
Request timed out.
Reply from 192.168.2.2: bytes=32 time=4ms TTL=127
Reply from 192.168.2.2: bytes=32 time<1ms TTL=127
Reply from 192.168.2.2: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.2.2:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 4ms, Average = 1ms
下面我们切换到仿真模式,来看看数据包在 VLAN 间是如何传递的,或者说是如何路由的。为了简单起见,监听 ICMP 协议即可。现在我们让主机 A 给主机 E 发送一个 ICMP 询问报文,如果主机 E 收到该询问报文会给主机 A 发回相应的响应报文,点击右侧工具栏中的添加简单的 PDU 按钮,然后指定该 PDU 的发送方为主机 A,接收方为主机 E。可以看到在主机 A 中出现了一个数据包,严格来说应该是一个以太网帧,其中封装有 IP 数据报,在 IP 数据报中封装有 ICMP 询问报文,点击它在弹出窗口中可以查看网络体系结构各层的相应处理,例如这是网络层的处理,这是数据链路层的处理,点击出站 PDU 详情还可以查看该数据包的封包细节
点击右侧的捕获前进按钮进行单步跟踪,可以看到数据包传递到了交换机,点击它在弹出窗口中可以查看交换机对该数据包的处理,这是接收处理,这是转发处理。
关闭该弹出窗口,再次点击捕获前进按钮,可以看到数据包从交换机转发出来并到达路由器。
这里需要注意的是该数据包看似是从交换机的 0/8 号接口转发出来的,而实际上应该是从 0/7 号接口转发出来的,这是仿真软件的显示问题,可能会造成我们的误解。其实从 VLAN 的角度来看,交换机转发该数据包,或者从之前的弹出窗口查看交换机对该数据包的转发处理,也可以知道该数据包应该是从交换机的 0/7 号接口转发出来的。
点击已经到达路由器的该数据包,在弹出窗口中可以查看路由器对该数据包的处理,这是接收处理,这是转发处理,关闭该弹出窗口。
再次点击捕获前进按钮,可以看到数据包从路由器的 0/1 号接口转发回了交换机,再次点击捕获前进按钮,可以看到数据包从交换机的 0/5 号接口转发给了主机 E。
点击已经到达主机 E 的该数据包,在弹出窗口中可以查看主机 E 对该数据包的处理,这是接收处理。这是主机 E 针对该数据包准备给主机 A 发回响应数据包,关闭该弹出窗口:
点击捕获前进按钮,可以看到响应数据包首先发送到了交换机,再次点击捕获前进按钮,可以看到交换机转发该数据包给路由器,再次点击捕获按钮,可以看到路由器又把该数据包转发回交换机,再次点击捕获按钮,可以看到交换机把该数据包转发给主机 A。
这样我们就验证了使用多臂路由可以实现 VLAN 间的通信。很显然使用多币路由每增加一个 VLAN,就会多占用一个交换机接口和一个路由器接口,并且还会多一条布线,实际应用中很少采用这种方法,下节课我们会验证单臂路由,它比多臂路由更具实用性。
最后请您在本实验的基础上进行一下扩充,也就是再添加一个 VLAN,并实现三个 VLAN 之间的通信需要注意的是如果在仿真软件中选择通用的路由器,可能局域网接口不够,建议您选择 2911 型号的路由器。