首先,我们需要明确 VLAN(Virtual Local Area network,虚拟局域网)的概念。VLAN 是将一个物理局域网在逻辑上划分成多个广播域,从而提高网络的安全性和可管理性。然而,由于 VLAN 之间默认是隔离的,所以实现 VLAN 间通信就变得尤为重要。
VLAN 间通信主要依赖以下两种方式:单臂路由和三层交换机。
1. 单臂路由(Single Arm router):
这种方式通过在普通二层交换机上连接一个路由器,利用路由器的子接口与各个 VLAN 进行通信。具体实现步骤如下:
- 配置交换机,为每个 VLAN 分配相应的端口,并将这些端口设置为 Access 模式; - 配置路由器的物理端口,使其与交换机的一个端口连接; - 在路由器上为每个 VLAN 创建一个子接口,并配置相应的 IP 地址和封装协议(如 802.1Q); - 在子接口上启用路由功能,以便实现 VLAN 间的通信。
2. 三层交换机(Layer 3 Switch):
这种方式利用具备路由功能的交换机直接实现 VLAN 间通信,无需额外的路由器。具体实现步骤如下:
- 配置交换机,为每个 VLAN 分配相应的端口,并将这些端口设置为 Trunk 模式; - 在交换机上为每个 VLAN 创建一个 VLAN 接口,并配置相应的 IP 地址; - 开启交换机的三层路由功能,使不同 VLAN 间的数据包可以在交换机内部进行路由转发。
那么,这两种方式各自有哪些优缺点呢?
单臂路由的缺点是扩展性较差。随着 VLAN 数量的增加,流经路由器与交换机之间链路的流量也变得非常大,容易成为网络瓶颈。此外,单臂路由的配置过程相对复杂。
而三层交换机则在性能和扩展性方面具有优势。三层交换机的数据包转发速度更快,吞吐量通常可以达到数百万 PPS,远高于传统路由器的 10kpps~1Mpps。此外,三层交换机通过硬件实现交换和路由选择,比传统路由器的虚拟子接口更高效。因此,当网络规模较大、VLAN 数量较多时,三层交换机是更合适的选择。
总之,实现 VLAN 间通信的方式有单臂路由和三层交换机。在实际应用中,应根据网络规模、性能要求等因素选择合适的方式。当网络规模较小、VLAN 数量较少时,单臂路由是一种经济实用的方案;而当网络规模较大、VLAN 数量较多时,三层交换机则能更好地满足性能和扩展性的需求。
前面我们曾提到细讲交换机配置,什么样的网络能互通,什么样的网络不能互通?,有朋友问到,vlan间需要什么才能通信呢?我们通常提到了,VLAN间通信需要三层交换机,那么不用三层交换机能不能通信呢?其实不同VLAN之间相互通信的两种方式,单臂路由、三层交换机,它们分别如何配置呢?哪一种好呢?
今天我们来看下,这两种方式是如何来实现vlan间的通信。
本篇文章要从三个问题开始说起?
1、实现vlan间的通信有哪些方式?
2、它们如何实现?如何配置?
3、它们有什么不同之处?哪一种好?
一、实现不同vlan间的通信有哪些?
我们知道要实现不同vlan间通信,就必须需要有路由功能,单臂路由的实现方式,其实就是普通二层交换机加路由器,从而实现不同vlan间的可以互相通信。
那为什么三层交换机不用路由器?因为三层交换机本身有路由功能,所以不用其它路由就可以实现vlan间的通信。
因此:
不同VLAN之间相互通信的两种方式(单臂路由、三层交换机),我们来看下他们的组网拓扑图,对网络有了解的朋友,就能看出他们的区别。
1、通过单臂路由实现不同VLAN之间的通信,如下图:
2、通过三层交换路由功能实现不同VLAN之间的通信:如下图
当然看这两个拓扑图很多朋友可能不是很清楚,那么下面我们来通过交换机配置来详细了解,如何用两种方式分别实现不同vlan间通信。
二、单臂路由实现不同vlan互通
拓扑图如下:
上面说了,单臂路由组网是由普通交换机与路由器组成,所以我们在配置时,要配置交换机与路由。
1、 交换机SW3的具体配置(主要配置vlan和trunk接口)
第一步:在SW3上创建vlan100、vlan200、vlan300,名称依次为caiwu、xiaoshou、gongcheng。(创建vlan既可以在vlandatabase中,也可以在全局模式下配置,本实验是在vlan database中配置的)。
第二步:在全局模式下,
将f0/1 – 5号端口划分到vlan 100中,
f0/6– 10口划分到vlan 200中,
f0/11 – 15号端口划分到vlan 300中,
并全部配置成access模式。
第三步:使用show vlan显示SW3的vlan配置信息,可以看出配置正确)
第四步:交换机如果通过路由器实现VLAN之间的通信,需要将连接交换机的端口配置成trunk模式,只有trunk线路才能使vlan通过。
2、 路由器R2的具体配置(通过配置路由器子接口封装之后作为每一个vlan的网关)
第一步:在路由器(R2)与交换机(SW3)的端口上配置子接口,每个子接口的ip地址是每个VLAN的网关地址(也可以理解为下一跳地址),并在子接口上封装802.1Q协议(交换机通用封装模式,用命令encapsulation dot1q 封装),如下所示:
第二步:将PC5和PC6分别连接到交换机SW3的f0/6和f0/1上,然后配置PC5的IP地址为192.168.2.1/24,网关为192.168.2.254。PC6的IP地址为192.168.1.1,网关为192.168.1.254。然后用PC5 ping PC6,看是否能ping通。
pc5与pc6处于不同的vlan,如上所示,他们已能够互通,所以不同vlan间已实现互通。
三、三层交换机实现不同vlan间互通
三层交换机的配置我们前面曾多次提到,例子有很多,这里面我们就举个稍显复杂些的例子来举例了,这也是项目中经常会遇到的典型案例。
拓扑图如下:
为了让大家能够更详细的看到代码的注释,我们就不截图,直接发配置代码。
一、【实验目的】
1、同一VLAN里的计算机系统能跨交换机相互通信。
2、不同VLAN里的计算机系统也可以相互通信。
3、各vlan信息如下:
vlan10: 192.168.10.1/24
vlan20: 192.168.20.1/24
vlan30: 192.168.30.1/24
4、各pc ip地址及网关如下:
pc机 ip地址 网关
pc1 192.168.10.2/24 192.168.10.1
pc2 192.168.20.2/24 192.168.20.1
pc3 192.168.10.3/24 192.168.10.1
pc4 192.168.20.3/24 192.168.20.1
pc5 192.168.30.2/24 192.168.30.1
pc6 192.168.20.4/24 192.168.20.1
pc7 192.168.30.3/24 192.168.30.1
二、【配置步骤】
1、交换机s0的配置如下:
Switch> en //进入特权模式
Switch#conf t //进入配置模式
Switch(config)#vlan 10 //创建vlan10
Switch(config-vlan)#vlan 20 //创建vlan20
Enter configuration commands, one perline. End with CNTL/Z.
Switch(config)#int fa0/2 //进入端口0/2
Switch(config-if)#switchport access vlan 10 //把端口 0/2划分给vlan10
Switch(config-if)#exit //退出 端口0/2
Switch(config)#int fa0/3 //进入端口0/3
Switch(config-if)#switchport access vlan 20 //把端口0/3划分给vlan20
Switch(config-if)#exit //退出端口0/3
Switch(config)#int fa0/1 //进入端口0/1
Switch(config-if)#switchport mode trunk //端口模式为trunk
Switch(config-if)#
小结:把交换机S0的下面的端口各pc分配各自的vlan,然后把fa0/1口设为trunk,因为交换机之间设置了trunk接口,使得不同vlan之间能够通过其他的交换机!
2、交换机s1的配置如下:
Switch>en
Switch#conf t
Enter configuration commands, one perline. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#vlan 30
Switch(config-vlan)#exit
Switch(config)#int f0/2
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int f0/3
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int f0/4
Switch(config-if)#switchport access vlan 30
Switch(config-if)#exit
Switch(config)#int f0/1
Switch(config-if)#switchport mode trunk //端口模式为trunk
交换机s1的配置如s0的基本差不多,代码都一样。
3、交换机s2的配置如下:
Switch>en
Switch#conf t
Enter configuration commands, one perline. End with CNTL/Z.
Switch(config)#vlan 20
Switch(config-vlan)#vlan 30
Switch(config-vlan)#exit
Switch(config)#int fa0/2
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int fa0/3
Switch(config-if)#switchport access vlan 30
Switch(config-if)#exit
Switch(config)#int fa0/1
Switch(config-if)#switchport mode trunk
交换机s2的配置如s0、s1的基础差不多,把相应的端口划分到相应的vlan中,没有出现什么新代码。
4、三层交换机3560的配置如下:
Switch>en //进入特权模式
Switch#conf t //进入配置模式
Switch(config)#vlan 10 //创建vlan10
Switch(config-vlan)#vlan 20 //创建vlan20
Switch(config-vlan)#vlan 30 //创建vlan10
Switch(config-vlan)#exit //返回上一级
Switch(config)#int vlan 10 //进入vlan10
Switch(config-if)#ip address 192.168.10.1 255.255.255.0 //给vlan 10添加ip地址及子网掩码
Switch(config-if)#no shutdown //开启端口
Switch(config-if)#exit //退回 上一极
Switch(config)#int vlan 20 //进入vlan20
Switch(config-if)#ip address 192.168.20.1 255.255.255.0 //给vlan 20添加ip地址及子网掩码
Switch(config-if)#no shutdown //开启端口
Switch(config-if)#exit //退回上一级
Switch(config)#int vlan 30 //进入vlan30
Switch(config-if)#ip address 192.168.30.1 255.255.255.0 //给vlan 20添加ip地址及子网掩码
Switch(config-if)#no shutdown //开启端口
Switch(config-if)#exit //返回上一级
Switch(config)#int range fa0/2-4 //进入2-4端口
Switch(config-if-range)#switchport mode trunk //端口模式为trunk
Switch#show ip route //显示IP路由
那么这样就配置完成了。
三、总结
从试验过程中可以看出实现不同VLAN之间的两种方式,一个是通过单臂路由实现,另一个是通过三层交换的路由功能实现的,可以说不同VLAN之间的通信必须通过路由功能才能实现通信。
其次,不同网段之间都需要配置下一跳地址(网关)才能通信。那么什么时候用单臂路由,什么时候选择三层交换呢。单臂路由是不具有扩展性的,为什么这么说呢,如果VLAN的数量不断增加,流经路由器与交换机之间链路的流量也变得非常大,这时,这条链路也就成为了整个网络的瓶颈,即使你网络的带宽再快,也是如此。
因此,当网络不断增大,划分的VLAN不断增多的时候,就需要配置三层交换机的路由功能,实现不同VLAN之间的通信(三层交换机的数据表的吞吐量通常为数百万pps,而传统路由器的吞吐量只有10kpps~1Mpps,其次三层交换机是通过硬件来交换和路由选择数据包的,吞吐量当然大了,甚至接近于线速。而路由器只是通过虚拟子接口来交换和路由选择数据包的,不是硬件实施的,吞吐量也就变的小了。
总之一句话:三层交换技术在第三层实现了数据包的高速转发,从而解决了传统路由器低速、负责所造成的网络瓶颈问题。