VLAN

本页介绍 MikroTik RouterOS 中的 VLAN 功能,说明如何使用 IEEE 802.1Q 标准创建和管理虚拟局域网以实现高效的网络分段,并详细介绍了 VLAN 接口、干道、Q-in-Q 标记以及接口属性。

VLAN

子菜单: /interface/vlan

标准: IEEE 802.1Q, IEEE 802.1ad

虚拟局域网(VLAN)是一种第 2 层方法,允许在单个物理接口(以太网、无线等)上创建多个虚拟局域网,从而能够高效地隔离 LAN。

您可以使用 MikroTik RouterOS(以及 Cisco IOS、Linux 和其他路由器系统)来标记这些数据包,并接受和路由已标记的数据包。

由于 VLAN 工作在 OSI 第 2 层,它可以像任何其他网络接口一样使用,没有任何限制。VLAN 可以成功通过普通的以太网网桥。

您还可以通过无线链路传输 VLAN,并在单个无线接口上放置多个 VLAN 接口。请注意,由于 VLAN 并非完整的隧道协议(即它没有额外的字段来传输发送方和接收方的 MAC 地址),因此通过 VLAN 桥接与桥接普通无线接口具有相同的限制。换句话说,虽然无线客户端可以参与放在无线接口上的 VLAN,但无法将处于 station 模式的无线接口上的 VLAN 与任何其他接口桥接。

802.1Q

用于虚拟局域网(VLAN)的最常用协议是 IEEE 802.1Q。它是一种标准化的封装协议,定义了如何将四字节的 VLAN 标识符插入以太网报头。

每个 VLAN 被视为一个单独的子网。这意味着默认情况下,特定 VLAN 中的主机无法与属于另一个 VLAN 的主机通信,即使它们连接到同一台交换机。因此,如果您想要 VLAN 间通信,就需要一台路由器。RouterOS 每个接口最多支持 4094 个 VLAN 接口,每个接口具有唯一的 VLAN ID。VLAN 优先级也可以使用和操纵。

当 VLAN 跨越不止一台交换机时,交换机之间的链路必须成为“干道(trunk)”,其中数据包被打上标记以指示它们属于哪个 VLAN。干道承载多个 VLAN 的流量;它就像一条点对点链路,在交换机之间或交换机与路由器之间承载带有标记的数据包。

信息

IEEE 802.1Q 标准保留了一些具有特殊用途的 VLAN ID;以下 VLAN ID 不应在通用 VLAN 设置中使用:0、1、4095

Q-in-Q

原始的 802.1Q 只允许一个 VLAN 报头;而 Q-in-Q 则允许两个或多个 VLAN 报头。在 RouterOS 中,Q-in-Q 可以通过在一个 VLAN 接口之上再添加一个 VLAN 接口来配置。示例:

/interface/vlan
add name=vlan1 vlan-id=11 interface=ether1
add name=vlan2 vlan-id=12 interface=vlan1

如果有任何数据包通过 'vlan2' 接口发送,则会在以太网报头中添加两个 VLAN 标记 - '11' 和 '12'。

属性

子菜单: /interface/vlan

PropertyDescription
arp (disabled | enabled | local-proxy-arp | proxy-arp | reply-only; Default: enabled)地址解析协议设置<code>disabled</code> - 接口将不使用 ARP<code>enabled</code> - 接口将使用 ARP<code>local-proxy-arp</code> - 路由器在接口上执行代理 ARP 并向同一接口发送回复<code>proxy-arp</code> - 路由器在接口上执行代理 ARP 并向其他接口发送回复<code>reply-only</code> - 接口仅回复来自匹配的 IP 地址/MAC 地址组合的请求,这些组合作为静态条目输入到 IP/ARP 表中。不会自动在 IP/ARP 表中存储动态条目。因此为了使通信成功,必须已存在有效的静态条目。
arp-timeout (auto | integer; Default: auto)在没有从 IP 收到数据包后,ARP 记录在 ARP 表中保留的时间。值 auto 等于 IP/Settings 中 arp-timeout 的值,默认为 30s。
disabled (yes | no; Default: no)更改接口是否被禁用。
interface (name; Default: )VLAN 将在其上工作的接口名称。Important: 将 VLAN 接口添加到启用了 vlan-filtering 的网桥后,会自动将该网桥接口标记为成员端口。在 /interface/bridge/vlan 菜单下会出现一个注释为 "added by vlan on bridge" 的动态条目。
l3-hw-offloading (yes | no; Default: yes)在每个 VLAN 接口上启用或禁用 L3HW。此设置仅适用于支持 L3HW 卸载的设备,并且从 RouterOS v7.21 开始可用。更多细节 - Per-VLAN offloading。
mvrp (yes | no; Default: no)指定此 VLAN 是否应通过多 VLAN 注册协议(MVRP)作为申请者声明其属性。其主要用例是创建在以太网接口上的 VLAN(例如“单臂路由”设置),该接口连接到支持 MVRP 的网桥。在已经是启用 MVRP 的网桥一部分的 VLAN 接口上启用此选项没有效果,因为在这种情况下由网桥管理 MVRP。此属性仅在 use-service-tag 被禁用时才有效。
mtu (integer: 68..65535; Default: 1500)第 3 层最大传输单元
name (string; Default: )接口名称
use-service-tag (yes | no; Default: )兼容 IEEE 802.1ad 的服务标签(Service Tag)
vlan-id (integer: 1..4094; Default: 1)用于区分 VLAN 的虚拟局域网标识符或标记。对于属于同一 VLAN 的所有计算机必须相同。

信息

MTU 应设置为 1500 字节,与以太网接口上的相同。但这在某些不支持接收/发送带有 VLAN 报头的全尺寸以太网数据包(1500 字节数据 + 4 字节 VLAN 报头 + 14 字节以太网报头)的以太网卡上可能无法工作。在这种情况下,可以使用 MTU 1496,但请注意,如果必须通过该接口发送更大的数据包,这将导致数据包分片。同时请记住,如果源和目标之间的路径 MTU 发现工作不正常,MTU 1496 可能会导致问题。

设置示例


视频示例

VLANs pt1, VLANs pt2, VLANs pt3

Layer2 VLAN 示例

您可以使用多种可能的配置,但每种配置类型都是为特定的设备集合设计的,因为某些配置方法可以让您受益于内置交换机芯片并获得更大的吞吐量。请查看 Basic VLAN switching 指南,了解每种设备类型应使用哪种配置以获得最大的吞吐量和兼容性。该指南展示了如何设置非常基础的 VLAN 干道/接入端口配置。

还有其他设置 VLAN 标记或 VLAN 交换的方法,但推荐的方法是使用 Bridge VLAN Filtering。请确保您没有使用任何已知的第 2 层错误配置。

Layer3 VLAN 示例

简单 VLAN 路由

假设我们有几台 MikroTik 路由器连接到一个集线器。请记住,集线器是 OSI 物理层设备(如果路由器之间有集线器,那么从 L3 的角度看,它与它们之间用一条以太网电缆连接是相同的)。为简化起见,假设所有路由器都使用 ether1 接口连接到集线器,并且已按下图分配了 IP 地址。然后在每台路由器上创建 VLAN 接口。

R2 和 R4 的配置如下所示:

R2:

[admin@MikroTik] /interface/vlan> add name=VLAN2 vlan-id=2 interface=ether1 disabled=no

[admin@MikroTik] /interface/vlan> print 
Flags: X - disabled, R - running, S - slave 
 #    NAME                  MTU   ARP        VLAN-ID INTERFACE                
0 R  VLAN2                 1500  enabled    2       ether1

R4:

[admin@MikroTik] /interface/vlan> add name=VLAN2 vlan-id=2 interface=ether1 disabled=no

[admin@MikroTik] /interface/vlan> print 
Flags: X - disabled, R - running, S - slave 
 #    NAME                  MTU   ARP        VLAN-ID INTERFACE                
0 R  VLAN2                 1500  enabled    2       ether1

下一步是为 VLAN 接口分配 IP 地址。

R2:

 [admin@MikroTik] /ip/address> add address=10.10.10.3/24 interface=VLAN2
 [admin@MikroTik] /ip/address> print
 Flags: X - disabled, I - invalid, D - dynamic
   #   ADDRESS            NETWORK         BROADCAST       INTERFACE
   0   10.0.1.4/24        10.0.1.0        10.0.1.255      ether1
   1   10.20.0.1/24       10.20.0.0       10.20.0.255     pc1
   2   10.10.10.3/24      10.10.10.0      10.10.10.255    vlan2

 [admin@MikroTik] /ip/address> 

R4:

 [admin@MikroTik] /ip/address> add address=10.10.10.5/24 interface=VLAN2
 [admin@MikroTik] /ip/address> print
 Flags: X - disabled, I - invalid, D - dynamic
   #   ADDRESS            NETWORK         BROADCAST       INTERFACE
   0   10.0.1.5/24        10.0.1.0        10.0.1.255      ether1
   1   10.30.0.1/24       10.30.0.0       10.30.0.255     pc2
   2   10.10.10.5/24      10.10.10.0      10.10.10.255    vlan2

[admin@MikroTik] /ip/address> 

此时,应该可以从路由器 R2 ping 通路由器 R4,反之亦然:

 "Ping from R2 to R4:"

 [admin@MikroTik] /ip/address> /ping 10.10.10.5

 10.10.10.5 64 byte ping: ttl=255 time=4 ms

 10.10.10.5 64 byte ping: ttl=255 time=1 ms

 2 packets transmitted, 2 packets received, 0% packet loss

 round-trip min/avg/max = 1/2.5/4 ms

 "From R4 to R2:"
 
 [admin@MikroTik] /ip/address> /ping 10.10.10.3
 10.10.10.3 64 byte ping: ttl=255 time=6 ms
 10.10.10.3 64 byte ping: ttl=255 time=1 ms
 2 packets transmitted, 2 packets received, 0% packet loss
 round-trip min/avg/max = 1/3.5/6 ms 

为确保 VLAN 设置正常工作,请尝试从 R2 ping R1。如果 ping 超时,则说明 VLAN 已成功隔离。

 "From R2 to R1:"

 [admin@MikroTik] /ip/address> /ping 10.10.10.2
 10.10.10.2 ping timeout
 10.10.10.2 ping timeout
 3 packets transmitted, 0 packets received, 100% packet loss 

VLAN 间路由

如果在交换机上实现了单独的 VLAN,则需要一台路由器来提供 VLAN 之间的通信。交换机工作在 OSI 第 2 层,因此它仅使用以太网报头进行转发,而不检查 IP 报头。因此,我们必须使用作为每个 VLAN 网关的路由器。没有路由器,主机就无法与其自身 VLAN 之外通信。上述 VLAN 之间的路由过程称为 VLAN 间通信。

为了说明 VLAN 间通信,我们将创建一条干道,它将在 Mikrotik 路由器和支持 VLAN 干道的可管理交换机之间的单条链路上承载来自三个 VLAN(VLAN2、VLAN3 和 VLAN4)的流量。

每个 VLAN 都有自己单独的子网(广播域),如下图所示:

  • VLAN 2 – 10.10.20.0/24。
  • VLAN 3 – 10.10.30.0/24。
  • VLAN 4 – 10.10.40.0/24。

在大多数交换机上,VLAN 配置都很简单。我们需要定义哪些端口是 VLAN 的成员,并定义一个可以在交换机和路由器之间承载带标记帧的“干道”端口。

创建 VLAN 接口:

/interface/vlan
add name=VLAN2 vlan-id=2 interface=ether1 disabled=no
add name=VLAN3 vlan-id=3 interface=ether1 disabled=no
add name=VLAN4 vlan-id=4 interface=ether1 disabled=no

向 VLAN 添加 IP 地址:

/ip/address 
add address=10.10.20.1/24 interface=VLAN2
add address=10.10.30.1/24 interface=VLAN3
add address=10.10.40.1/24 interface=VLAN4

RouterOS /32 与 IP 未编号地址

在 RouterOS 中,要创建带地址的点对点隧道,您必须使用网络掩码为 '/32' 的地址,这实际上为您带来了与某些厂商的未编号 IP 地址相同的功能。

有两台路由器 RouterA 和 RouterB,分别属于网络 10.22.0.0/24 和 10.23.0.0/24,使用 VLAN 作为载体连接这些路由器,配置如下:

RouterA:

 /ip/address/add address=10.22.0.1/24 interface=ether1
 /interface/vlan/add interface=ether2 vlan-id=1 name=vlan1
 /ip/address/add address=10.22.0.1/32 interface=vlan1 network=10.23.0.1
 /ip/route/add gateway=10.23.0.1 dst-address=10.23.0.0/24 

RouterB:

 /ip/address/add address=10.23.0.1/24 interface=ether1
 /interface/vlan/add interface=ether2 vlan-id=1 name=vlan1
 /ip/address/add address=10.23.0.1/32 interface=vlan1 network=10.22.0.1
 /ip/route/add gateway=10.22.0.1 dst-address=10.22.0.0/24