网络基础:(七)虚拟局域网( VLAN )

admin 2022年08月12日 872次浏览

当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量

在这种情况下出现了 VLAN 技术,这种技术可以把一个 LAN 划分成多个逻辑的 VLAN,每个 VLAN 是一个广播域,VLAN 内的主机间通信就和在一个 LAN 内一样,而 VLAN 间则不能直接互通,这样,广播报文就被限制在一个 VLAN 内

1、使用VLAN的优点

  • 限制广播域: 广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力
  • 增强局域网的安全性: 不同 VLAN 内的报文在传输时是相互隔离的,即一个 VLAN 内的用户不能和其它 VLAN 内的用户直接通信
  • 提高了网络的健壮性: 故障被限制在一个 VLAN 内,本 VLAN 内的故障不会影响其他 VLAN 的正常工作
  • 灵活构建虚拟工作组: 用 VLAN 可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活

2、VLAN分类

  • 静态VLAN

    由管理员将交换机端口分配给 VLAN,将交换机端口分配到特定 VLAN 后,除非手工修改,否则它将一直属于该VLAN。静态 VLAN 易于配置和管理,非常适合用于需要控制所有用户移动的网络环境

  • 动态VLAN

    动态 VLAN 可根据 MAC 地址、协议甚至创建动态 VLAN 的应用程序来确定节点所属的 VLAN,动态接入端口只能属于一个 VLAN,这是由 VMPS(VLAN 管理策略服务器) 动态分配的,在同一台交换机中,可以同时有动态接入端口和中继端口,但动态接入端口只能连接到终端,而不能连接到其他交换机

3、标识VLAN

交换机端口为接入端口(access)时,只能属于一个 VLAN ,而为中继端口(trunk)时,可属于所有 VLAN。可手工将端口配置为接入端口或中继端口,也可在每个端门上运行动态中继协议 (DTP ),并让它来设置交换端口模式(DTP通过与链路另一端的端口协商来设置端口模式)。交换机的接口只能是接入端口或者中继端口中的一种,不能同时是接入端口和中继端口

  • 接入端口

    接入端口只属于一个 VLAN ,且只为该 VLAN 传输数据流,这种端口以本机格式发送和接收数据流,而不进行 VLAN 标记,接入端口收到数据流后,都假定它属于该端口所属的 VLAN。除非使用路由,否则各 VLAN 之间不能相互通信

  • 中继端口

    中继端口可以同时传输多个 VLAN 的数据流,使用中继可让一个端口同时属于众多不同的 VLAN

3.1、对帧进行标记

帧到达的每台交换机都首先从帧标记中获取 VLAN ID ,然后查看过滤表中的信息,以确定如何对帧进行处理。如果帧到达的交换机还有另一条中继链路,那么该帧将被从该中继链路端口转发出去;当帧到达出口后,如果有一条接入链路和帧中的 VLAN ID 匹配后,交换机将把 VLAN ID 删除,让目标设备即使不明白 VLAN ID 也能够接收帧

对于中继端口,可同时支持标记过和未标记的数据流,中继端口有一个默认端口 VLAN ID (PVID ) ,这是用于传输未标记数据流的 VLAN ID

不管数据流是否被标记过,如果其包含的 VLAN ID 为 NULL,则认为它属于 PVID 对应的 VLAN(默认为 VLAN 1);如果分组包含的 VLAN ID 与出站端口的本机 VLAN 相同,则在发送时不对其进行标记,因此只能传输到同一 VLAN 中的主机或设备;对于其他所有数据流,发送时都必须添加 VLAN ID,以便能够在该 VLAN 中传输

3.2、链路类型和接口类型

交换机内部处理的数据帧一律都带有 VLAN 标签,而现网中交换机连接的设备有些只会收发无标记帧,要与这些设备交互,就需要接口能够识别无标记帧并在收发时给帧添加、剥除 VLAN 标签。同时,现网中属于同一个 VLAN 的用户可能会被连接在不同的交换机上,且跨越交换机的 VLAN 可能不止一个,如果需要用户间的互通,就需要交换机间的接口能够同时识别和发送多个 VLAN 的数据帧

为了适应不同的连接和组网,华为定义了 Access 接口、Trunk 接口、Hybrid 接口和 QinQ 接口4种接口类型,以及接入链路(Access Link)和干道链路(Trunk Link)两种链路类型

3.2.1、链路类型

  • 接入链路

    接入链路只可以承载1个 VLAN 的数据帧,用于连接交换机和用户终端。通常情况下,用户终端并不需要知道自己属于哪个 VLAN,也不能识别带有 Tag 的帧,所以在接入链路上传输的帧都是无标记帧。

  • 干道链路

    干道链路可以承载多个不同 VLAN 的数据帧,用于交换机间互连或连接交换机与路由器,为了保证其它网络设备能够正确识别数据帧中的 VLAN 信息,在干道链路上传输的数据帧必须都打上 Tag。

3.2.2、接口类型

  • Access 接口

    Access 接口一般用于和不能识别 Tag 的用户终端(如用户主机、服务器等)相连,或者不需要区分不同 VLAN 成员时使用,Access 接口大部分情况只能收发无标记帧,且只能为无标记帧添加唯一 VLAN 的 Tag。但当 Access 接口收到带有 Tag 的帧,并且帧中 VID 与 PVID 相同时,Access 接口也能接收并处理该帧。

  • Trunk 接口

    Trunk 接口一般用于连接交换机、路由器、AP 以及可同时收发标记帧和无标记帧的语音终端,它可以允许多个 VLAN 的帧带 Tag 通过,但只允许一个 VLAN 的帧从该类接口上发出时不带 Tag(即剥除Tag)。

  • Hybrid 接口

    Hybrid 接口既可以用于连接不能识别 Tag 的用户终端(如用户主机、服务器等)和网络设备(如Hub、傻瓜交换机),也可以用于连接交换机、路由器以及可同时收发标记帧和无标记帧的语音终端、AP。它可以允许多个 VLAN 的帧带 Tag 通过,且允许从该类接口发出的帧根据需要配置某些 VLAN 的帧带 Tag(即不剥除Tag)、某些 VLAN 的帧不带 Tag(即剥除Tag)。

    Hybrid 接口和 Trunk 接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口,比如在灵活 QinQ 中,服务提供商网络的多个 VLAN 的报文在进入用户网络前,需要剥离外层 VLAN Tag,此时Trunk 接口不能实现该功能,因为 Trunk 接口只能使该接口缺省 VLAN 的报文不带 VLAN Tag 通过。

  • QinQ 接口

    QinQ(802.1Q-in-802.1Q)接口是使用 QinQ 协议的接口,一般用于私网与公网之间的连接,它可以给帧加上双层 Tag,即在原来 Tag 的基础上,给帧加上一个新的 Tag,从而可以支持多达4094×4094个 VLAN,满足网络对 VLAN 数量的需求。外层的 Tag 通常被称作公网 Tag,用来标识公网的 VLAN;内层 Tag 通常被称作私网 Tag,用来标识私网的 VLAN。

3.3、链路类型协商协议(LNP)基本原理

3.3.1、LNP定义

链路类型协商协议 LNP 用来动态协商以太网接口的链路类型为 Access 或者 Trunk

  • 以太网接口的链路类型协商为 Access,缺省情况下加入 VLAN1
  • 以太网接口的链路类型协商为 Trunk,缺省情况下加入 VLAN1~4094

3.3.2、LNP产生背景

当前,交换机支持的以太网接口的接口类型有:Access、Hybrid、Trunk 和 QinQ,这四种接口类型分别用于不同的网络位置,均由手工配置指定。如果网络拓扑变更,以太网接口的接口类型也需要重新配置,配置较为繁琐。为了简化用户配置,可通过 LNP 配置以太网接口的链路类型自协商功能,自动协商出接口的接口类型为 access 或者 trunk,并加入相应 VLAN

4、VLAN划分

4.1、基于接口划分(常用)

网络管理员预先给交换机的每个接口配置不同的 PVID,当一个数据帧进入交换机时,如果没有带 VLAN 标签,该数据帧就会被打上接口指定 PVID 的 Tag。然后数据帧将在指定 PVID 中传输。

  • 优点

    定义成员简单

  • 缺点

    成员移动需重新配置 VLAN

  • 适用场景

    适用于任何大小但位置比较固定的网络

  • 配置示例

    # 在SwitchA和SwitchB上创建VLAN2和VLAN3,并将连接用户的接口分别加入VLAN。
    # SwitchB的配置与SwitchA类似,不再赘述。 
    <HUAWEI> system-view
    [HUAWEI] sysname SwitchA
    [SwitchA] vlan batch 2 3
    [SwitchA] interface gigabitethernet 0/0/1
    [SwitchA-GigabitEthernet0/0/1] port link-type access
    [SwitchA-GigabitEthernet0/0/1] port default vlan 2
    [SwitchA-GigabitEthernet0/0/1] quit
    [SwitchA] interface gigabitethernet 0/0/2
    [SwitchA-GigabitEthernet0/0/2] port link-type access
    [SwitchA-GigabitEthernet0/0/2] port default vlan 3
    [SwitchA-GigabitEthernet0/0/2] quit
    
    # 配置SwitchA上与SwitchB连接的接口类型及通过的VLAN。
    # SwitchB的配置与SwitchA类似,不再赘述。 
    [SwitchA] interface gigabitethernet 0/0/3
    [SwitchA-GigabitEthernet0/0/3] port link-type trunk
    [SwitchA-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 3
    

4.2、基于MAC地址

根据数据帧的源 MAC 地址来划分 VLAN。 网络管理员预先配置 MAC 地址和 VLAN ID 映射关系表,当交换机收到的是无标识帧时,就依据该表给数据帧添加指定 VLAN 的 Tag,然后数据帧将在指定 VLAN 中传输

  • 优点

    当用户的物理位置发生改变,不需要重新配置 VLAN,提高了用户的安全性和接入的灵活性

  • 缺点

    需要预先定义网络中所有成员

  • 适用场景

    适用于位置经常移动但网卡不经常更换的小型网络

  • 配置示例

    • 交换机下挂终端

      # 创建VLAN
      <HUAWEI> system-view
      [HUAWEI] sysname Switch
      [Switch] vlan batch 10vlan 
      
      # 配置接口加入VLAN。GE0/0/3、GE0/0/4的配置与GE0/0/2类似,不再赘述。
      [Switch] interface gigabitethernet 0/0/1
      [Switch-GigabitEthernet0/0/1] port link-type hybrid
      [Switch-GigabitEthernet0/0/1] port hybrid tagged vlan 10
      [Switch-GigabitEthernet0/0/1] quit
      [Switch] interface gigabitethernet 0/0/2
      [Switch-GigabitEthernet0/0/2] port link-type hybrid
      [Switch-GigabitEthernet0/0/2] port hybrid untagged vlan 10
      [Switch-GigabitEthernet0/0/2] quit
      
      # PC的MAC地址与VLAN10关联
      [Switch] vlan 10
      [Switch-vlan10] mac-vlan mac-address 22-22-22
      [Switch-vlan10] mac-vlan mac-address 33-33-33
      [Switch-vlan10] mac-vlan mac-address 44-44-44
      [Switch-vlan10] quit
      
      # 使能接口的基于MAC地址划分VLAN功能,GE0/0/3、GE0/0/4的配置与GE0/0/2类似,不再赘述。
      [Switch] interface gigabitethernet 0/0/2
      [Switch-GigabitEthernet0/0/2] mac-vlan enable
      [Switch-GigabitEthernet0/0/2] quit
      
    • 交换机下挂二层交换设备

      # 创建VLAN
      <HUAWEI> system-view
      [HUAWEI] sysname Switch1
      [Switch1] vlan batch 10 20
      
      # 配置PC1和PC2的MAC地址与VLAN 10关联,PC3和PC4的MAC地址与VLAN 20关联
      [Switch1] vlan 10
      [Switch1-vlan10] mac-vlan mac-address 11-11-11
      [Switch1-vlan10] mac-vlan mac-address 22-22-22
      [Switch1-vlan10] quit
      [Switch1] vlan 20
      [Switch1-vlan20] mac-vlan mac-address 33-33-33
      [Switch1-vlan20] mac-vlan mac-address 44-44-44
      [Switch1-vlan20] quit
      
      # 使能接口基于MAC地址划分VLAN功能
      [Switch1] interface gigabitethernet 0/0/1
      [Switch1-GigabitEthernet0/0/1] mac-vlan enable
      [Switch1-GigabitEthernet0/0/1] quit
      
      # 配置连接二层交换机的接口GE0/0/1,以Untagged方式MAC地址关联的VLAN
      [Switch1] interface gigabitethernet 0/0/1
      [Switch1-GigabitEthernet0/0/1] port link-type hybrid
      [Switch1-GigabitEthernet0/0/1] port hybrid untagged vlan 10 20
      [Switch1-GigabitEthernet0/0/1] quit
      
      # 配置连接网络的接口GE0/0/2,透传MAC地址关联的VLAN。
      [Switch1] interface gigabitethernet 0/0/2
      [Switch1-GigabitEthernet0/0/2] port link-type trunk
      [Switch1-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20
      [Switch1-GigabitEthernet0/0/2] quit
      

4.3、基于子网划分

根据数据帧中的源 IP 地址和子网掩码来划分 VLAN。 网络管理员预先配置 IP 地址和 VLAN ID 映射关系表,当交换机收到的是 Untagged 帧,就依据该表给数据帧添加指定 VLAN 的 Tag,然后数据帧将在指定 VLAN 中传输

  • 优点

    • 当用户的物理位置发生改变,不需要重新配置 VLAN

    • 可以减少网络通信量,可使广播域跨越多个交换机

  • 缺点

    网络中的用户分布需要有规律,且多个用户在同一个网段

  • 适用场景

适用于对安全需求不高、对移动性和简易管理需求较高的场景中

比如,一台 PC 配置多个 IP 地址分别访问不同网段的服务器,以及 PC 切换 IP 地址后要求 VLAN 自动切换等场景

4.4、基于协议划分

根据数据帧所属的协议(族)类型及封装格式来划分 VLAN。 网络管理员预先配置以太网帧中的协议域和 VLAN ID 的映射关系表,如果收到的是 Untagged 帧,就依据该表给数据帧添加指定 VLAN 的 Tag,然后数据帧将在指定 VLAN 中传输

  • 优点

    将网络中提供的服务类型与 VLAN 相绑定,方便管理和维护

  • 缺点

    • 需要对网络中所有的协议类型和 VLAN ID 的映射关系表进行初始配置
    • 需要分析各种协议的格式并进行相应的转换,消耗交换机较多的资源,速度上稍具劣势
  • 适用场景

适用于需要同时运行多协议的网络

4.5、基于策略划分

根据配置的策略划分 VLAN,能实现多种组合的划分方式,包括接口、MAC地址、IP 地址等。 网络管理员预先配置策略,如果收到的是 Untagged 帧,且匹配配置的策略时,给数据帧添加指定 VLAN的Tag,然后数据帧将在指定 VLAN 中传输

  • 优点

    • 安全性高,VLAN 划分后,用户不能改变 IP 地址或 MAC 地址

    • 网络管理人员可根据自己的管理模式或需求选择划分方式

  • 缺点

    针对每一条策略都需要手工配置

  • 适用场景

    适用于需求比较复杂的环境

5、VLAN间互访

划分 VLAN 后,由于广播报文只在同 VLAN 内转发,所以不同 VLAN 的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同 VLAN 的用户又常有互访的需求,此时就需要实现不同 VLAN 的用户互访,简称 VLAN 间互访。不同 VLAN 内的用户则不能直接二层互访,需要借助三层路由技术或 VLAN 转换技术才能实现互访

5.1、VLAN间互访技术

  • VLANIF 接口

    VLANIF 接口是一种三层的逻辑接口,可以实现 VLAN 间的三层互通

    VLANIF 配置简单,是实现 VLAN 间互访最常用的一种技术,但每个 VLAN 需要配置一个 VLANIF,并在接口上指定一个 IP 子网网段,比较浪费 IP 地址

  • Dot1q 终结子接口(单臂路由)

    子接口也是一种三层的逻辑接口,可以实现 VLAN 间的三层互通

    Dot1q 终结子接口适用于通过一个三层以太网接口下接多个 VLAN 网络的环境。由于不同 VLAN 的数据流会争用同一个以太网主接口的带宽,网络繁忙时,会导致通信瓶颈

5.2、同设备VLAN间互相通信

实现同一 VLAN 但是不同网段设备之间的访问

  • 配置思路

    • 创建 VLAN,确定用户所属的 VLAN

    • 配置接口加入 VLAN,允许用户所属的 VLAN 通过当前接口

    • 创建 VLANIF 接口并配置 IP 地址,实现三层互通

  • 配置示例

    # 创建VLAN
    <HUAWEI> system-view
    [HUAWEI] sysname Switch
    [Switch] vlan batch 10 20
    
    # 配置接口加入VLAN
    [Switch] interface gigabitethernet 0/0/1
    [Switch-GigabitEthernet0/0/1] port link-type access
    [Switch-GigabitEthernet0/0/1] port default vlan 10
    [Switch-GigabitEthernet0/0/1] quit
    [Switch] interface gigabitethernet 0/0/2
    [Switch-GigabitEthernet0/0/2] port link-type access
    [Switch-GigabitEthernet0/0/2] port default vlan 20
    [Switch-GigabitEthernet0/0/2] quit
    
    # 配置VLANIF接口的IP地址
    [Switch] interface vlanif 10
    [Switch-Vlanif10] ip address 10.10.10.2 24
    [Switch-Vlanif10] quit
    [Switch] interface vlanif 20
    [Switch-Vlanif20] ip address 10.10.20.2 24
    [Switch-Vlanif20] quit
    

5.3、跨设备VLAN间互相通信

Switch_1和 Switch_2 分别下挂 VLAN10 的二层网络,Switch_1 和Switch_2 之间通过三层网络互通,三层网络采用静态路由协议。要求两个二层网络的 PC 实现二层隔离三层互通

  • 配置思路

    • 配置接口所属的 VLAN,允许 VLAN 通过当前接口
    • 配置 VLANIF 接口的 IP 地址,实现三层互通
    • 配置静态路由,实现路由互通
  • 配置示例

    # SW1
    ## 创建 VLAN 并将端口添加到对应 VLAN 中
    [SW1]vlan batch 10 20
    [SW1]int g0/0/24
    [SW1-GigabitEthernet0/0/24]port link-type trunk 
    [SW1-GigabitEthernet0/0/24]port trunk allow-pass vlan 20
    [SW1]int g0/0/1
    [SW1-GigabitEthernet0/0/1]port link-type trunk
    [SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10
    ## 配置三层接口 IP地址
    [SW1]int vlanif 10
    [SW1-Vlanif10]ip add 192.168.1.1 24
    [SW1]int vlanif 20
    [SW1-Vlanif20]ip add 10.10.10.1 24
    ## 配置静态路由
    [SW1]ip route-static 192.168.2.1 24 10.10.10.2
    
    # SW2
    [SW2]vlan batch 10 20
    [SW2]int g0/0/24
    [SW2-GigabitEthernet0/0/24]port link-type trunk
    [SW2-GigabitEthernet0/0/24]port trunk allow-pass vlan 20
    [SW2]int g0/0/1
    [SW2-GigabitEthernet0/0/1]port link-type trunk
    [SW2-GigabitEthernet0/0/1]port trunk allow-pass vlan 10
    [SW2]int vlanif 10
    [SW2-Vlanif10]ip add 192.168.2.1 24
    [SW2]int vlanif 20
    [SW2-Vlanif30]ip add 10.10.10.1 24
    [SW2]ip route-static 192.168.1.1 24 10.10.10.1
    
    # SW3
    [SW3]vlan batch 10
    [SW3]int g0/0/24
    [SW3-GigabitEthernet0/0/24]port link-type trunk
    [SW3-GigabitEthernet0/0/24]port trunk allow-pass vlan 10
    [SW3]int g0/0/1
    [SW3-GigabitEthernet0/0/1]port link-type access
    [SW3-GigabitEthernet0/0/1]port default vlan 10
    
    # SW4
    [SW4]vlan batch 10
    [SW4]int g0/0/24
    [SW4-GigabitEthernet0/0/24]port link-type trunk
    [SW4-GigabitEthernet0/0/24]port trunk allow-pass vlan 10
    [SW4]int g0/0/1
    [SW4-GigabitEthernet0/0/1]port link-type access
    [SW4-GigabitEthernet0/0/1]port default vlan 10
    

5.4、配置Dot1q终结子接口

使用一台路由器,在各 VLAN 间实现三层互通

# R1
## 配置子接口
[R1]int g0/0/1.1
[R1-GigabitEthernet0/0/1.1]ip add 192.168.1.1 24
[R1-GigabitEthernet0/0/1.1]dot1q termination vid 10
[R1-GigabitEthernet0/0/1.1]arp broadcast enable
[R1-GigabitEthernet0/0/1.1]quit
[R1]int g0/0/1.2
[R1-GigabitEthernet0/0/1.2]ip add 192.168.2.1 24
[R1-GigabitEthernet0/0/1.2]dot1q termination vid 20
[R1-GigabitEthernet0/0/1.2]arp broadcast enable
[R1-GigabitEthernet0/0/1.2]quit
[R1]int g0/0/1.3
[R1-GigabitEthernet0/0/1.3]ip add 192.168.3.1 24
[R1-GigabitEthernet0/0/1.3]dot1q termination vid 30
[R1-GigabitEthernet0/0/1.3]arp broadcast enable
[R1-GigabitEthernet0/0/1.3]quit

# SW1
## 创建 VLAN 并将端口加入到对应的 VLAN 中
[SW1]vlan batch 10 20 30
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 10
[SW1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 20
[SW1]int g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type access
[SW1-GigabitEthernet0/0/3]port default vlan 30
[SW1]int g0/0/24
[SW1-GigabitEthernet0/0/24]port link-type trunk
[SW1-GigabitEthernet0/0/24]port trunk allow-pass vlan 10 20 30