虚拟局域网

VLAN(Virtual LAN)是一个二层(数据链路层)技术,主要用来隔离广播域。

广播域的危害

  1. 增加网络和终端的负担,比如DHCP协议的Discovery报文和ARP报文就是通过广播发送的,理论上来说广播域越小越好
  2. 不安全,通过ARP欺诈可以轻易实现中间人攻击,目前唯一高效的防御方法只有硬件级防御(交换机监听目标的DHCP ACK报文,对目标终端的MAC地址和IP地址进行动态绑定)。
  3. 病毒传播

只有路由器能隔离广播域(物理隔离,路由器只通过IP协议转发),但用路由器隔离网段不灵活,因为交换机的接口数是固定的,每次用路由器隔离网段还得换交换机。当然钱没地方花的可以这么做,买个交换机一半接口都空着。


VLAN的类型

  1. 静态VLAN

    • 手工配置
    • 基于端口划分的VLAN
  2. 动态VLAN

    • 手工配置
    • 基于MAC地址划分的VLAN
    • 动态VLAN已淘汰,由于MAC地址具有流动性,在实际使用中工作量太大。
  3. 采用802.1x端口认证,基于帐号来划分vlan(通过域中的活动目录下发)

企业级交换机基本上都自带VLAN,而且已启用。默认将所有端口都划分在ID为1的default虚拟局域网。

交换机在配置VLAN后,收到数据帧时先检查trunk标签,然后检查目标MAC地址和源MAC是否在同一VLAN区域,如不在同一区域则丢弃数据帧,之后再通过MAC地址表转发。每台交换机都必须配置VLAN表(静态VLAN使用自己的端口)

VLAN的划分

在划分VLAN时为了便于区分一般将不同VLAN下的终端配置不同的网络号,由于我做实验需要判断同网段不同VLAN是否能通信,就直接配置同一网段的IP

拓扑图如下:

基本配置后保证所有终端都能互相通信,接下来配置VLAN(两台交换机都要配置)

命令

以sw1为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Switch>enable
Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#name v10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name v20
Switch(config-vlan)#exit
Switch(config)#int f0/1
Switch(config-if)#switchp
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int f0/2
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int f0/3
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit

配置完成后查看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
2
3
4
int f0/x
switchport trunk encapsulation dot1q #可选,将数据帧封装为802.1q类型的标签
switchport mode trunk #将此端口设置为中继端口
exit

完成后处于不同交换机下在同VLAN区域的终端就可以互相通信了,在不需要路由器的情况下就可以隔离广播域。