1、VLAN 概念
在传统的以太网中,所有的用户都在同一个广播域中,当网络规模较大的时候,广播包的数量会急剧增加,当广播包的数量占到总量的30%时,网络的传输效率将会明显下降。特别是当某个网络设备出现故障后,就会不停的向网络发送广播,这样就会形成广播风暴,使网络瘫痪。那应该怎么解决这个问题呢?我们可以使用分隔广播域的方法来解决,分隔广播域有两种方法:
- 物理分隔:把网络划分为若干个小网络,然后使用能隔离广播的路由器将不同的网络连接起来通信。物理分隔一般不用,只用逻辑分隔。
- 逻辑分隔:把网络从逻辑上分为若干个虚拟网络,即VLAN(虚拟局域网)。VLAN工作在OSI参考模型的数据链路层,一个VLAN就是一个交换网络,其中的所有用户都在同一个广播域中,各VLAN通过路由设备的连接实现互相通信。
VLAN的优势:
- 控制广播 每个vlan都是一个独立的广播域,这样就减少了广播对网络带宽的占用,提高了网络的传输效率,并且一个VLAN出现广播风暴不会影响其他的VLAN
- 增强网络安全性 由于只能在同一个VLAN内的端口之间交换数据,不同VLAN的端口之间不能直接访问,因此通过划分VLAN可以限制个别主机访问服务器等资源,提高网络的安全性。
a. 静态VLAN
静态VLAN也是基于端口的VLAN,是目前比较常见的VLAN划分方式。
静态VLAN即明确指定交换机的端口属于哪个VLAN,这需要网络管理员手动配置。当用户主机连接到交换机端口上时,就被分配到了对应的VLAN中。
这种端口和VLAN的映射只在本交换机有效,而交换机之间不能共享这一信息。
b. 静态VLAN的配置
VLAN的范围,根据不同型号的交换机所支持的VLAN数目不同。例如思科2960最多能够支持255个VLAN,思科交换机最多能支持4096个VLAN。
VLAN的ID范围 | 范围 | 仅限系统使用,用户不能查看和使用这些VLAN |
1 | 保留 | Cisco默认的VLAN,用户能够使用该VLAN,但不能删除它 |
2--1001 | 正常 | 用户以太网的VLAN,用户可以创建、使用和删除这些VLAN |
1002--1005 | 正常 | 用于FDDI的令牌环的cisco默认VLAN,用户不能删除这些vlan |
1006--1024 | 保留 | 仅限系统使用,用户不能查看和使用这些VLAN |
1025--4094 | 扩展 | 仅用于以太网VLAN |
VLAN的基本配置,在交换机上配置基于端口的VLAN时,步骤如下
- 创建VLAN,创建VLAN有两种方法:
-
- 方式一:VLAN数据库模式,此模式只支持VLAN正常范围(1--1005),命令如下
-
-
- step1:vlan database 进入VLAN配置状态
- step2:vlan id 创建VLAN号及VLAN名,vlan名可选
- step3:exit 退出数据库
-
-
- 方式二:全局配置模式,对于思科交换机来说
-
-
- step1:conf t
- step2:vlan id 输入一个vlan号,进入vlan配置状态
- step3:exit或者end 退出
-
- 把交换机的端口加到相应的VLAN中
- 验证VLAN的配置
全局模式下创建一个ID为20的VLAN
Switch#configure terminal
Switch(config)#vlan 20
Switch(config-vlan)#exit
删除vlan20,命令“no vlan id号”
Switch(config)#no vlan 20
数据库模式下创建VLAN,以后用到GNS3模拟器,此模拟器只支持在数据库模式下创建VLAN
Switch#vlan database # 特权模式下进入vlan数据库
Switch(vlan)#vlan 20
Switch(vlan)#no vlan 20 # 删除vlan20
c. 端口分配到VLAN中
第1步 | interface fastEthernet 端口ID | 进入要分配的端口 |
第2步 | Switchport access vlan ID | 把端口配到某个VLAN中 |
第3步 | exit或者end | 退出 |
# 例如将端口0/1加入到VLAN2中
Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport access vlan 2
# 把端口还原默认到VLAN,把0/1还原到默认的VLAN中
switch(config)#default interface fastEthernet 0/1
# 查看VLAN的配置命令
switch#sh vlan-switch
VLAN配置实例:在交换机上配置VLAN10、VLAN20,将交换机的端口5--10添加到VLAN10中,将交换机的端口11-15添加到VLAN20中
switch#vlan database
switch(vlan)#vlan 10
switch(vlan)#vlan 20
# 同时进入到5--10端口
switch(config)#interface range fastEthernet 0/5 - 10
Switch(config-if-range)#switchport access vlan 10
switch(config-if-range)#exit
# 同时进入11--15端口
switch(config)#interface range fastEthernet 0/11 - 15
switch(config-if-range)#switchport access vlan 20
# 查看VLAN配置信息
switch#show vlan-switch
2、VLAN Trunk
当网络中有多台交换机时,位于不同交换机上的相同VLAN的主机之间是如何通信的呢,这时候就需要Trunk了。
在两台交换机SW1和SW2上分别创建了VLAN10、VLAN20,如何才能让连接在不同交换机上的相同VLAN的主机通信呢。
如果为每个VLAN都连接一条物理链路,那么两台交换机之间有几个VLAN通信,就需要在两台交换机之间连接几条物理链路。
这种连接方式的扩展性有很大的问题,随着VLAN数量增加,就需要在两台交换机之间连接多条物理链路,这样会占用很多个交换机端口,所以不可取。
例如生活中运送货物,为了使货物到达目的地能被正确的分开,通常做法是在货物上贴上不同标签。那么在VLAN中,由于不同VLAN的VLAN号不同,实际上可以只使用一条中继链路,将属于不同VLAN的数据帧打上不同的标识即可。
在交换网络中,有两种类型链路:接入链路和中继链路
- 接入链路:通常属于一个VLAN。主机与交换机之间连接的链路就是接入链路
- 中继链路:可以承载多个VLAN。R1和R2之间的链路就是中继链路。中继链路常用来将一台交换机连接到其他交换机上
Trunk(干道、 中继)的作用就是使同一个VLAN能够跨交换机通信,在VLAN跨交换机通信的过程中,数据帧会有哪些哪些变化呢?
- 当VLAN10中的主机A发送数据帧给主机B时,主机A发送的数据帧是普通的数据帧
- 交换机SW1接收数据帧,知道这个数据帧来自VLAN10,而且是要转发给交换机SW2,于是就会在数据帧中打上VLAN10标识,然后发送给交换机SW2
- 交换机SW2接收到带有VLAN10标识的数据帧后,根据目标MAC地址,得知数据帧是发送给主机B的,就删除VLAN标识还原为普通数据帧,然后转发给主机B
VLAN标识协议分为两种:ISL、802.1q
- ISL:思科私有协议,只能用在思科交换机之间
- 802.1q:思科交换机与其他厂商交换机通信就要使用标准的802.1q协议
Trunk 命令:
# 进入端口选择封装类型:这一步骤不需要设置,接口默认封装类型是“802.1q(dot1q)”
R1(config-if)#switchport trunk encapsulation dot1q
# 将交换机之间相连的接口设置为trunk
R1(config-if)#switchport mode trunk
R4创建VLAN10和VLAN20,0/15端口开启Trunk,把0/1加到VLAN10,0/2加到VLAN20
switch#vlan database
switch(vlan)#vlan 10
switch(vlan)#vlan 20
switch(config)#int f0/1
switch(config-if)#switchport access vlan 10
switch(config-if)#no sh
switch(config)#int f0/2
switch(config-if)#switchport access vlan 20
switch(config-if)#no sh
switch(config)#int f0/15
switch(config-if)#switchport mode trunk
R5创建VLAN10和VLAN20,0/15端口开启Trunk,把0/1加到VLAN10,0/2加到VLAN20
switch#vlan database
switch(vlan)#vlan 10
switch(vlan)#vlan 20
switch(config)#int f0/1
switch(config-if)#switchport access vlan 10
switch(config-if)#no sh
switch(config)#int f0/2
switch(config-if)#switchport access vlan 20
switch(config-if)#no sh
switch(config)#int f0/15
switch(config-if)#switchport mode trunk
3、三层交换机
a. 二层交换机的虚拟接口
路由器的物理接口上可以配置IP地址,而交换机的物理端口是不能配置IP的,所以要在虚接口来配置IP,二层交换机配置IP地址后,就可以进行远程管理了。无论从哪个物理接口连接,只要该接口可以正常通信且属于VLAN1,都可以远程管理交换机
这里的interface vlan 1就是一个虚接口,只要在交换机上开启虚接口,并配置IP地址,外部主机就可以通过属于该vlan的物理接口访问。
b. 三层交换机的虚拟接口
三层交换机通过硬件来交换和路由选择数据包,三层交换机就等于是二层交换加上三层转发,所以它具备路由功能,那么两个VLAN之间可以互相访问,每一个VLAN虚接口就是该网段的网关。如下图
交换机其中四个接口属于VLAN10,另外四个接口属于VLAN20,如果交换机已经配置了两个VLAN的虚接口,就好像在交换机的内部虚拟出这两个VLAN的网关。当数据从属于VLAN10的接口进入后,会映射到VLAN10的虚接口,从而找到自己的网关
c. 三层交换机配置
三层交换机在默认情况下就是一个普通的二层交换机,并没有路由功能,如果要在三层交换机上配置路由:
step1:需要在交换机上启动路由功能。
# 启动路由功能
sw1(config)# ip routing
step2:配置虚接口的IP地址
sw1(config)# interface vlan ID号
sw1(config-if)# ip address ip地址 子网掩码
sw1(config-if)# no shutdown
step3:三层交换机端口默认是二层端口,如果配置IP地址,需要开启路由端口
# 开启路由端口
sw1(config-if)#no switchport
# 开启交换端口
sw1(config-if)#switchport
SW1创建VLAN10、VLAN20,配置虚接口IP地址,开启Trunk和路由功能,添加路由表
SW2 创建VLAN10、VLAN20,把接口添加到各自VLAN,开启Trunk
R3 设置IP和路由表
SW1配置:
开启路由功能
sw1(config)#ip routing
创建vlan10、20
sw1#vlan database
sw1(vlan)# #vlan 10
sw1(vlan)# #vlan 20
0/0端口开Trunk
sw1(config)#int f0/0
sw1(config-if)#switchport mode trunk
sw1(config-if)#no shutdown
给vlan10、20配IP
sw1(config)#interface vlan 10
sw1(config-if)#ip add 192.168.10.1 255.255.255.0
sw1(config-if)#no shutdown
sw1(config)#interface vlan 20
sw1(config-if)#ip add 192.168.20.1 255.255.255.0
sw1(config-if)#no shutdown
给0/1口配IP
sw1(config)#int f0/1
sw1(config-if)#no switchport
sw1(config-if)#ip add 192.168.1.1 255.255.255.0
sw1(config-if)#no shutdown
添加路由表
sw1(config)#ip route 192.168.2.0 255.255.255.0 192.168.1.2
SW2配置:
4.SW2配置
0/0口开Trunk
sw2(config)# int f0/0
sw2(config-if)#switchport mode trunk
sw2(config-if)#no shutdown
创建vlan10、20
sw2#vlan database
sw2(vlan)#vlan 10
sw2(vlan)#vlan 20
0/1和0/2加入到vlan10、20
sw2(config)#int f0/1
sw2(config-if)#switchport access vlan 10
sw2(config-if)#no shutdown
sw2(config)#int f0/2
sw2(config-if)#switchport access vlan 20
sw2(config-if)#no shutdown
R3配置
给0/0口配IP
R3(config)#int f0/0
R3(config-if)#ip add 192.168.1.2 255.255.255.0
R3(config-if)#no shutdown
给1/0口配IP
R3(config)#int f1/0
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#no shutdown
添加路由条目
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
PC1配置
5.PC1配置
pc1(config)#int f0/0
pc1(config-if)#ip add 192.168.10.2 255.255.255.0
pc1(config-if)#no shutdown
pc1(config)#ip default-gaway 192.168.10.1
PC2配置
pc2(config)#int f0/0
pc1(config-if)#ip add 192.168.20.2 255.255.255.0
pc1(config-if)#no shutdown
pc1(config)#ip default-gaway 192.168.20.1
PC3配置
3.PC3配置
1/0口配置IP、添加网关
R6(config)#no ip routing 关闭路由功能,模拟PC机
R6(config)#int f1/0
R6(config-if)#ip add 192.168.2.2 255.255.255.0
R6(config-if)#no shutdown
R6(config)#ip default-gateway 192.168.2.1 添加默认网关