实验21,22,23 VLAN
# 210.实验21,22,23:VLAN
讲讲 3 个实验
# 实验 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
第三步,给交换机添加 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
第 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
接下来我们就来测试一下 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
2
3
4
5
6
7
8
9
10
11
12
13
下面我们切换到仿真模式,来看看数据包在 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 型号的路由器
# 实验 22 VLAN 间通信的实现方法 单臂路由
下面我们来进行一个仿真实验,本仿真实验的目的在于验证 VLAN 间的通信,可以使用单臂路由来实现。
我已经在仿真软件中构建好了我们理论课中所使用的网络拓扑,并且在各主机和路由器的各接口旁边都标注好了所需配置的 IP 地址和地址掩码,需要说明的是 CIDR 地址块/后面的数字 24,表明地址掩码为 255.255.255.0。为了简单起见,并没有标注出地址掩码的点分十进制形式,我们的应用需求是将主机 ABC 划分到 VLAN10,将主机 DEF 划分到 VLAN20,并且 VLAN10 中的主机可以和 VLAN20 中的主机相互通信,也就是我们所谓的实现 VLAN 间的通信,很显然这样的应用需求仅靠数据链路层提供的服务是无法实现的,我们需要使用网络层的互联设备,也就是路由器来实现。与使用多臂路由,实现 VLAN 间通信不同,使用单臂路由,不管有多少个 VLAN 互联,我们只需将交换机上的一个接口设置为 Trunk 类型,并将其连接到路由器的一个局域网接口即可。这样的物理连接比使用多臂路由简单的多。
我们需要在路由器的局域网接口下创建两个逻辑子接口,分别作为 VLAN10 和 VLAN20 的默认网关,这相当于我们使用路由器的一个局域网接口下的两个子接口,将 VLAN10 和 VLAN20这两个不同的网络进行了互联。另外应该将所创建的这两个逻辑子接口配置为可以识别和封装 802.1q 帧,802.1q 帧有时也简称为 dot1q。注意要用 2911 的路由器,用普通路由器会报错:Invalid interface type and number
我们还需要将 VLAN10 中,各主机所连接的交换机接口划分到 VLAN10,将 VLAN20 中各主机所连接的交换机接口划分到 VLAN20,接口类型采用默认的 access 类型 另外,我们还应给各 VLAN 中的各主机配置相应的 IP 地址和地址掩码。需要注意的是 vlan10 与 vlan20 是两个不同的网络,因此它们的网络地址不相同,vlan10 的网络地址为 192.168.1.0/24,vlan20 的网络地址为 192.168.2.0/24。 相应的 vlan10 中各主机的 IP 地址和路由器逻辑子接口的 IP 地址的网络号部分应该相同,也就是点分 10 进制的前三个 10 进制数为 192.168.1。而第 4 个 10 进制数应该互不相同,并且不能为 0 和 255。因为如果为 0,则是该网络的网络地址,如果为 255 则是该网络的广播地址。
同理,vlan20 中各主机的 IP 地址和路由器逻辑子接口的 IP 地址的网络号部分应该相同,也就是点分 10 进制的前三个 10 进制数为 192.168.2,而第 4 个 10 进制数应该互不相同,并且不能为 0 和 255。
我们还需要给各主机指定默认网关,该路由器既是 vlan10 的默认网关,也是 VLAN20 的默认网关。对于 VLAN10 中的主机 ABC,他们的默认网关应该指定为该路由器的逻辑子接口 0/0.1 的 IP 地址。对于 vlan20 中的主机 def 他们的默认网关应该指定为该路由器的逻辑子接口 0/0.2 的 IP 地址
下面我们就要开始进行配置工作。第一步给各主机配置 IP 地址、地址掩码以及指定要默认网关。我们先给主机 A 配置,点击主机 A。输入主机 A 的 IP 地址,192.168.1.1,255.255.255.0。输入主机 A 的默认网关的 IP 地址,也就是路由器的逻辑子接口 0/0.1 的 IP 地址,192.168.1.254,然后按下回车键,关闭 IP 配置窗口,这样我们对主机 A 的配置工作就完成了,其他主机的配置工作请您自行完成。
第二步,给路由器的某个局域网接口创建两个逻辑子接口,并进行相应配置,点击路由器,在弹出窗口中选择命令行界面选项卡,这样我们就进入了该路由器的命令行界面,进入命令行提示符,输入 enable进入特权模式,输入 config t 进入全局配置模式。
输入 interface g0/0.1 这样就创建了 g0/0.1 逻辑子接口
输入 encapsulation dot1q 10 这是要设置该逻辑子接口,可以接收 VLANID 为 10 的 802.1q 帧,并且可将 IP 数据报封装成 VLANID 为 10 的 802.1q 帧进行转发,
输入 IP address 192.168.1.254 255.255.255.0,这是设置该逻辑子接口的 IP 地址和地址掩码
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface g0/0.1
Router(config-subif)#encapsulation dot1q 10
Router(config-subif)#ip addr 192.168.1.254 255.255.255.0
2
3
4
5
6
输入 interface g0/0.2 这样就创建了 g0/0.2 逻辑子接口。
输入输入 encapsulation dot1q 20 这是设置该逻辑子接口,可以接收 VLANID 为 20 的 802.1q 帧,并且可将 IP 数据报封装成 VLANID 为 20 的 802.1q 帧进行转发。
输入 IP address 192.168.2.254 255.255.255.0。这是设置该逻辑子接口的 IP 地址和地址掩码,
Router(config-subif)#interface g0/0.2
Router(config-subif)#encapsulation dot1q 20
Router(config-subif)#ip addr 192.168.2.254 255.255.255.0
2
3
输入 interface g0/0,进入 g0/0 接口配置模式,输入 no shutdown,开启 g0/0 接口,这相当于开启了它下面的两个逻辑子接口。
Router(config-subif)#interface g0/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
%LINK-5-CHANGED: Interface GigabitEthernet0/0.1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0.1, changed state to up
%LINK-5-CHANGED: Interface GigabitEthernet0/0.2, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0.2, changed state to up
2
3
4
5
6
7
8
9
10
第三步给交换机添加 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>
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#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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
第 4 步将交换机上的各接口划归到相应的 VLAN,我们接着之前的命令行来做。
输入 conf t, 进入全局配置模式
输入 interface range f0/1-3, 也就是我们要对 f0/1、f0/2、f0/3 这些接口进行批量设置
输入 switchport mode acess,设置接口类型为 excess 类型
输入 switchport access VLAN 10,将接口划归到 VLAN10
输入 interface range f0/4-6,也就是我们要对 f0/4、f0/5、f0/6 这些接口进行批量设置
输入 switchport mode access, 设置接口类型为 acess 类型
输入 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
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config)#interface range f0/4-6
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
Switch#show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active 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 Fa0/1, Fa0/2, Fa0/3
20 VLAN20 active Fa0/4, Fa0/5, Fa0/6
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
第 5 步,将交换机上连接路由器的接口设置为 Trunk 类型,我们接着之前的命令行来做。
输入 conf t,进入全局配置模式。
输入 interface f0/7 进入 f/7 接口配置模式。
输入 switchport mode Trunk,设置该接口的类型为 Trunk。到这里所有的配置工作就已经完成了。
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface f0/7
Switch(config-if)#switchport mode trunk
Switch(config-if)#
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/7, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/7, changed state to up
2
3
4
5
6
7
8
9
接下来我们就来测试一下 VLAN10 中的主机是否可以与 VLAN20 中的主机相互通信。
请注意,首先必须确保交换机各接口与路由器各接口的指示灯是绿色的,如果有棕色的,请您反复切换仿真软件右下角的实时与仿真模式,直到指示灯全部变绿。如果有红色指示灯,则表明您之前对路由器接口配置时 no shutdown 命令输入不正确或忘记输入该命令了,导致路由器接口没有开启,请您仔细检查。您还需要确保我们现在是在实时模式下进行测试,
点击主机 A 然后点击桌面选项卡,再点击命令提示符,就可以进入主机 A 的命令行了,使用 ping 命令来测试 VLAN10 中的主机 A 是否可以与 VLAN20 中的主机 E 相互通信,也就是用主机 A 来 ping 一下主机 E 的 IP 地址,看是否能 ping 通.
可以看到第一次的请求超时了,后面三次都收到了来自 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<1ms TTL=127
Reply from 192.168.2.2: bytes=32 time=1ms TTL=127
Reply from 192.168.2.2: bytes=32 time=4ms 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
2
3
4
5
6
7
8
9
10
11
12
13
14
下面我们切换到仿真模式,来看看数据包在 VLAN 间是如何传递的,或者说是如何路由的。监听这 ICMP 协议即可。现在我们让主机 A 给主机 E 发送一个 ICMP 询问报文,如果主机 E 收到该询问报文,会给主机 A 发回相应的响应报文,点击右侧工具栏中的添加简单的 PDU 按钮,然后指定该 PDU 的发送方为主机 A,接收方为主机 E。
可以看到在主机 A 中出现了一个数据包,严格的说这应该是一个以太网帧,其中封装有 IP 数据报,在 IP 数据报中封装有 ICMP 询问报文,点击它在弹出窗口中可以查看网络体系结构各层的相应处理,例如这是网络层的处理,这是数据链路层的处理,点击出站 PDU 详情,还可以查看该数据包的封包细节。
点击右侧的捕获前进按钮,进行单步跟踪。可以看到数据包传递到了交换机,点击它在弹出窗口中可以查看交换机对该数据包的处理,这是接收处理,接收到的普通的以太网的帧,这是转发处理,转发出带有 VLAN 标签的 802.1q 帧,关闭该弹出窗口:
再次点击捕获前进按钮,可以看到数据包从交换机转发出来并到达路由器,点击已经到达路由器的该数据包,在弹出窗口中可以查看路由器对该数据包的处理,这是接收处理。由于该数据包是带有 VLANID 为 10 的 802.1q 帧,因此由子接口 0/0.1 处理,从中提取出 IP 数据报,根据 IP 数据报首部中的目的 IP 地址进行查表转发,这是转发处理。
根据查表转发的结果,该 IP 数据报需要通过子接口 0/0.2 直接交付给目的主机 e,于是子接口 0/0.2 将其封装为带有 VLANID 为 20 的 802.1q 帧进行转发,关闭该弹出窗口,再次点击捕获前进按钮。可以看到该数据包从路由器转发回了交换机。
点击该数据包,在弹出窗口中可以看到交换机收到的该数据包是一个 802.1q 帧,交换机根据其目的 MAC 地址和所携带的 VLANID 查找转发表,决定从接口 0/5 转发该数据包。由于接口 0/5 是 access 类型的接口,因此转发时会去掉 802.1q 帧的标签,使其成为普通的以太网帧,关闭弹出窗口。
再次点击捕获前进按钮,可以看到数据包从交换机的 0/5 号接口转发给了主机 e,点击已经到达主机 e 的该数据包,在弹出窗口中可以查看主机 e 对该数据包的处理,这是接收处理,这是主机 e 针对该数据包准备给主机 a 发回响应数据包,关闭该弹出窗口。
点击捕获前进按钮,可以看到响应数据包首先发送到了交换机。
再次点击前进按钮,可以看到交换机转发该数据包给路由器。
再次点击捕获前进按钮,可以看到路由器又把该数据包转发回交换机。
再次点击捕获前进按钮,可以看到交换机把该数据包转发给主机 A。
这样我们就要验证了使用单臂路由可以实现 VLAN 间的通信,相比于使用多臂路由,每增加一个 VLAN 就会多占用一个交换机接口和一个路由器接口,并且还会多一条布线而言,使用单臂路由无论有多少个 VLAN,都只需要额外占用交换机和路由器各一个接口,只需一条布线。
但是单臂路由仍然存在着这样的缺点:那就是随着 VLAN 间流量的不断增加,很可能导致路由器成为整个网络的瓶颈。
下节课我们会验证使用三层交换机实现 VLAN 间的路由,它比单臂路由具有更好的性能,最后请您在本实验的基础上进行一下扩充,也就是再添加一个 VLAN,并实现三个 VLAN 间的通信。
# 实验 23 VLAN 间通信的实现:使用三层交换机
关于实验 23 使用三层交换机所使用的交换机型号?
如题,在视频里使用到了三层交换机,但不知道是哪一种型号的,看到类似的有 356024PS 和 365024PS。同时遇到了进入命令行失败的情况,一进入就提示“设备必须开机”,百度也搜不到类似的情况,后来重新拖一个就好了。
本仿真实验的目的在于验证 VLAN 间的通信可以使用三层交换机来实现,我已经在仿真软件中构建好了我们理论课中所使用的网络拓扑,并在各主机的旁边都标注好了所需配置的 IP 地址和地址掩码,需要说明的是 CIDR 地址块斜线后面的数字 24,表明地址掩码为 255.255.255.0,为了简单起见,图中并没有标注出地址掩码的点分 10 进制形式。
另外在三层交换机的上面,也标注出了该交换机内部所要创建的 VLAN 接口和相应的 IP 地址以及地址掩码。我们的应用需求是将主机 ABC 划分到 VLAN10,将主机 DEF 划分到 VLAN20,并且 VLAN10 中的主机可以和 VLAN20 中的主机相互通信,也就是我们所谓的实现 VLAN 间的通信,很显然这样的应用需求仅靠数据链路层提供的服务,也就是普通的二层交换机所能提供的服务是无法实现的。我们需要使用网络层的互联设备,也就是路由器来实现。
在前两次课中,我们分别验证了使用多臂路由和单臂路由都可以实现 VLAN 间的通信,但是使用多比路由随着 VLAN 数量的增多,所需交换机接口数量和路由器局域网接口数量远随之增加,布线数量也随之增加,因此并不受欢迎。单臂路由在这一点上比多臂路由具有优势,不管 VLAN 数量增大到多少,都只需要交换机上的一个接口与路由器上的一个局域网接口连接即可。单臂路由和多臂路由,都是在使用路由器进行 VLAN 间的路由,随着 VLAN 间通信流量的不断增加,很可能导致路由器成为整个网络的瓶颈。
为了解决上述问题,三层交换机应运而生,之所以称为三层交换机,是因为它比普通的二层交换机多出了路由功能,而路由功能属于网络体系结构中的第三层,也就是网络层。因此带有路由功能的交换机常称为三层交换机,在一台三层交换机内部分别具有交换模块和路由模块,他们都使用专用集成芯片技术处理交换和路由,因此与传统的路由器相比,可以实现高速路由。
另外通用模块与交换模块采用内部汇聚连接,可以具有相当大的带宽。
为了实现本例所示的 VLAN 间通信,我们需要在三层交换机内部创建所需的 VLAN 接口,一个是 VLAN10,另一个是 VLAN20,并给他们配置相应的 IP 地址和地址掩码。选择型号后开机。
可以将 VLAN10 接口看作是 VLAN10 中各主机的默认网关,VLAN20 接口看作是 VLAN20 中各主机的默认网关。需要注意的是 VLAN 接口是虚拟接口,而不是物理接口。我们还需要将 VLAN10 中各主机所连接的三层交换机的接口划归到 VLAN10,将 VLAN20 中各主机所连接的三层交换机的接口划归到 VLAN20,接口类型采用默认的 ACCESS 类型。
另外我们还应该给各 VLAN 中的各主机配置相应的 IP 地址和地址掩码。
需要注意的是 VLAN10 与 VLAN20 是两个不同的网络,因此他们的网络地址不相同,VLAN10 的网络地址为 192.168.1.0/24,VLAN20 的网络地址为 192.168.2.0/24。相应的 VLAN10 中各主机的 IP 地址和三层交换机内部所创建的 VLAN10 接口的 IP 地址的网络号部分应该相同,也就是点分 10 进制的前三个 10 进制数为 192.168.1。而第 4 个 10 进制数应该互不相同,并且不能为 0 和 255,因为为 0 则是该网络的网络地址为 255 则是该网络的广播地址。
同理 VLAN20 中各主机的 IP 地址和三层交换机内部所创建的 VLAN20 接口的 IP 地址的网络号部分应该相同,也就是点分十进制的前三个 10 进制数为 192.168.2,而第 4 个 10 进制数应该互不相同,并且不能为 0 和 255。
我们还需要给各主机指定默认网关,对于 VLAN10 中的主机 ABC,他们的默认网关应该指定为三层交换机内部所创建的 VLAN10 接口的 IP 地址。对于 VLAN20 中的主机 DEF 他们的默认网关应该指定为三层交换机内部所创建的 VLAN20 接口的 IP 地址,需要特别注意的是不要忘记使能三层交换机的路由功能。
下面我们就要开始进行配置工作第一步给各主机配置 IP 地址、地址掩码以及指定默认网关。
我们先给主机 A 配置,点击主机 A 在弹出窗口中选择桌面选项卡,然后选择 IP 配置。请注意,这里请确保选择的是静态,也就是我们要手工配置 IP 地址,而不是使用 DHCP 让主机自动获取 IP 地址,输入主机 A 的 IP 地址,192.168.1.1,然后按下回车键,仿真软件根据我们所输入 IP 地址的类别,自动帮我们填入了相应的默认子网掩码,255255.255.0,这也是我们需要的,因此不用修改。输入主机 A 的默认网关的 IP 地址,也就是三层交换机内部所创建的 VLAN,10 接口的 IP 地址,192.168.1.254,然后按下回车键,关闭 IP 配置窗口,这样我们对主机 A 的配置工作就要完成了,其他主机的配置工作请您自行完成,这里就要不再演示了。
第二步,给三层交换机创建 VLAN10 接口和 VLAN20 接口,并为他们配置相应的 IP 地址和地址掩码。点击三层交换机在弹出窗口中选择命令行界面选项卡,这样我们就要进入了该交换机的命令行界面,按键进入命令行提示符
- 输入 en 进入特权模式,输入 CONF T 进入全局配置模式
- 输入 INTERFACE VLAN 10 创建 VLAN10 接口
- 输入 IP ADDRESS 192.168.1.254 255.255.255.0,这是给 VLAN10 接口设置 IP 地址和地址掩码
- 输入 NO SHUT 开启 VLAN10 接口
- 输入 INTERFACE VLAN 20 创建 VLAN20 接口
- 输入 IP ADDRESS 192.168.2.254 255.255.255.0,这是给 VLAN20 接口设置 IP 地址和地址掩码
- 输入 NAU SHUTDOWN 开启 VLAN20 接口
- 输入 EXIT 退出到全局配置模式
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface vlan 10
Switch(config-if)#ip addr 192.168.1.254 255.255.255.0
Switch(config-if)#no shut
Switch(config-if)#interface vlan 20
Switch(config-if)#ip addr 192.168.2.254 255.255.255.0
Switch(config-if)#no shut
Switch(config-if)#exit
2
3
4
5
6
7
8
9
10
第三步,给三层交换机添加 VLAN10 和 VLAN20,我们接着之前的命令行来做:
- 输入 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(config)#vlan 10
%LINK-5-CHANGED: Interface Vlan10, changed state to up
Switch(config-vlan)#name VLAN10
Switch(config-vlan)#vlan 20
%LINK-5-CHANGED: Interface Vlan20, changed state to up
Switch(config-vlan)#name VLAN20
Switch(config-vlan)#end
Switch#
%SYS-5-CONFIG_I: Configured from console by console
Switch#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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
第 4 步,将三层交换机上的各接口划归到相应的 VLAN,我们接着之前的命令行来做,输入 CON T 进入全局配置模式,输入 INTERFACE RENT F0/1-3,也就是我们要对 F0-1、F0-2、F0-3 这些接口进行批量设置:
- 输入 SWITCH POT MODE ACESS 设置接口类型为 ACCESS 类型
- 输入 SWITCH ACCESS vlan 10,将接口划归到 VLAN10
- 输入 INTERFACE RANGE F0/4-6 也就是我们要对 F0-4、F0-5、F0-6 这些接口进行批量设置
- 输入 SWITCHPORT MODE EXCESS 设置接口类型为 ACCESS 类型
- 输入 SWITCHPORTE ACCESS ,将接口划归到 VLAN20
- 输入 END,退回到特权模式
- 输入 SHOW VLAN BRIEF。可以查看到我们已经将交换机上的各接口相应的划归到了 VLAN10 和 VLAN20
Switch#
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#int range f0/1-3
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up
Switch(config-if-range)#int range f0/4-6
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up
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/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 Fa0/1, Fa0/2, Fa0/3
20 VLAN20 active Fa0/4, Fa0/5, Fa0/6
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
第 5 步,使能三层交换机的路由功能,我们接着之前的命令行来做,输入 CONF T,进入全局配置模式。
输入 IP ROUTINE 使能路由功能,到这里所有的配置工作就已经完成了。
接下来我们就来测试一下 VLAN10 中的主机是否可以与 VLAN20 中的主机相互通信:
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#ip routing
2
3
请注意,首先必须确保三层交换机各接口的指示灯是绿色的,如果有橙色的,请你反复切换软件右下角的实时与仿真模式,直到指示灯全部变为绿色,您还需要确保我们在实时模式下进行测试,
点击主机 A 然后点击桌面选项卡,来 ping 一下主机 E 的 IP 地址,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<1ms 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 = 0ms, Average = 0ms
2
3
4
5
6
7
8
9
10
11
12
13
我们切换到仿真模式,来看看数据包在 VLAN 间的传递过程。为了简单起见,监听 ICMP 协议即可。现在我们让主机 A 给主机 E 发送一个 ICMP 询问报文,如果主机 E 收到该询问报文,会给主机 A 发回相应的响应报文。
点击右侧工具栏中的添加简单的 PDU 按钮,然后指定该 PDU 的发送方为主机 A 接收方为主机 E。
可以看到在主机 A 中出现了一个数据包,严格的说应该是一个以太网帧,其中封装有 IP 数据报,在 IP 数据报装封装有 ICMPP 询问报文,点击它在弹出窗口中可以查看网络体系结构各层的相应处理,例如这是网络层的处理,这是数据链路层的处理,点击出站 P DU 详情,还可以查看该数据包的封包细节:
关闭该弹出窗口,点击右侧的捕获前进按钮,进行单步跟踪。可以看到数据包传递到了三层交换机,点击它在弹出窗口中可以查看三层交换机对该数据包的处理,这是接收处理,这是转发处理。我们在理论课中已经详细分析过三层交换机对数据包的处理过程,此处就不再赘述了:
关闭该弹出窗口,再次点击捕获前进按钮。可以看到数据包从三层交换机转发出来并到达主机 E 点击已经到达主机 E 的该数据包,在弹出窗口中可以查看主机 E 对该数据包的处理,这是接收处理。这是主机 E 针对该数据包准备给主机 A 发回响应数据包:
关闭该弹出窗口,点击捕获前进按钮,可以看到响应数据包首先发送到了三层交换机,再次点击捕获前期按钮,可以看到三层交换机转发该数据包给主机 A。
我们再来看看主机 A 发送广播的情况,我们先把之前的实验场景删除,现在我们让主机 A 发送一个广播包,点击右侧工具栏中的添加复杂的 PDU 按钮,点击主机 A 在弹出窗口中填写 IP 地址为广播地址 255.255.255.255,源地址为主机 A 的 IP 地址 192.168.1.1,填写一个序号,我们填写 1 即可,这里的单次仿真时间填一即可,点击创建 PDU 按钮,点击捕获前进按钮,可以看到广播包从主机 A 发送给了三层交换机:
再次点击前进,可以看到广播包从三层交换机转发给了主机 A 所在 VLAN10 中的各主机,而不会转发给 VLAN20 中的各主机,这正是我们需要的应用需求,也就是划分 VLAN 来隔离广播域,但还能实现 VLAN 间的单播通信,这样我们就要验证了使用三层交换机可以实现 VLAN 件的通信:
至此我们通过三次课分别介绍了实现 VLAN 间通信的三种方法,它们是多臂路由,单臂路由,使用三层交换机,其中多臂路由没有实用性,单臂路由具有实用性,但随着 VLAN 间通信流量的增大,路由器可能会成为网络的瓶颈,而使用三层交换机可以比使用单臂路由具有更好的网络性能。
最后请您在本实验的基础上进行一下扩充,也就是再添加一个 VLAN,并实现三个 VLAN 之间的通信。