VLAN技术
虚拟局域网
VLAN(Virtual LAN)是一个二层(数据链路层)技术,主要用来隔离广播域。
广播域的危害
- 增加网络和终端的负担,比如DHCP协议的Discovery报文和ARP报文就是通过广播发送的,理论上来说广播域越小越好
- 不安全,通过ARP欺诈可以轻易实现中间人攻击,目前唯一高效的防御方法只有硬件级防御(交换机监听目标的DHCP ACK报文,对目标终端的MAC地址和IP地址进行动态绑定)。
- 病毒传播
只有路由器能隔离广播域(物理隔离,路由器只通过IP协议转发),但用路由器隔离网段不灵活,因为交换机的接口数是固定的,每次用路由器隔离网段还得换交换机。当然钱没地方花的可以这么做,买个交换机一半接口都空着。
VLAN的类型
静态VLAN
- 手工配置
- 基于端口划分的VLAN
动态VLAN
- 手工配置
- 基于MAC地址划分的VLAN
- 动态VLAN已淘汰,由于MAC地址具有流动性,在实际使用中工作量太大。
采用802.1x端口认证,基于帐号来划分vlan(通过域中的活动目录下发)
企业级交换机基本上都自带VLAN,而且已启用。默认将所有端口都划分在ID为1的default虚拟局域网。
交换机在配置VLAN后,收到数据帧时先检查trunk标签,然后检查目标MAC地址和源MAC是否在同一VLAN区域,如不在同一区域则丢弃数据帧,之后再通过MAC地址表转发。每台交换机都必须配置VLAN表(静态VLAN使用自己的端口)
VLAN的划分
在划分VLAN时为了便于区分一般将不同VLAN下的终端配置不同的网络号,由于我做实验需要判断同网段不同VLAN是否能通信,就直接配置同一网段的IP
拓扑图如下:

基本配置后保证所有终端都能互相通信,接下来配置VLAN(两台交换机都要配置)
命令
以sw1为例
1 | Switch>enable |
配置完成后查看VLAN表
Switch(config)#do show vlan b

理论上来说所有处于同一VLAN区域的终端都可以通信,但实际上跨交换机时10.1.1.1和10.1.1.4无法通信

原因是f0/10和f0/9处于ID为1的默认VLAN区域,解决方法有两种
- 为每个VLAN添加一个单独的端口(这显然不实际)
- 使用trunk中继链路
trunk中继链路
trunk的作用
允许所有VLAN数据通过trunk链路,通过在数据帧上加标签,来区分不同的vlan的数据
trunk标签
ISL标签
- cisco私有的,标签大小30字节26+4
802.1q标签
- 公有协议,所有厂家都支持,标签大小4字节。属于内部标签。
交换机在收到数据帧时首先检查VLAN表,如果需要跨交换机则在数据帧中插入一段trunk标签,sw2收到数据帧通过trunk标签检查VLAN,判断是否需要丢弃,如在同一VLAN区域,则去掉trunk标签,通过MAC地址表转发
交换机端口链路类型
接入端口
- 也称为access端口,一般用于连接终端,只能属于某一个VLAN,也只能传输一个VLAN的数据
中继端口
- 也称为trunk端口,一般用于连接交换机,属于公共端口,允许所有VLAN的数据帧通过。
命令
修改封装类型的命令一般的交换机不支持,默认就是802.1q,在三层核心交换机中可以使用
1 | int f0/x |
完成后处于不同交换机下在同VLAN区域的终端就可以互相通信了,在不需要路由器的情况下就可以隔离广播域。

