OpenWrt 在同一个端口上配置 Tagged 和 Untagged VLAN

use*_*470 9 configuration vlan openwrt

我已经在 MikroTik Routerboard RB750UP(带有 AR9330 内置交换机的 AR7240 CPU)上安装了 OpenWrt。我在下面提供了其他详细信息,但我的问题是:

如何在同一端口上配置未标记和标记的 vlan?

我已经成功地独立配置了非标记 vlan 和标记 vlan,但不是针对同一个端口。我之所以要这样做是因为我将 Ubiquiti NanoStation loco M2 插入提供无线局域网的端口(需要未标记的帧),但我还想配置一个标记的 vlan 来管理 loco(即访问其管理ip 通过标记货车)。

以下是一些进一步的细节:

硬件

  • MikroTik RouterBoard RB750UP
  • Ubiquiti NanoStation 机车 M2

swconfig 输出:

swconfig dev eth0 help
switch0: eth0(AR7240/AR9330 built-in switch), ports: 5 (cpu @ 0), vlans: 16
<snip>
Run Code Online (Sandbox Code Playgroud)

这是RB750 的 AR7240/AR9330 开关布局图(我认为是)的链接

操作系统

OpenWrt BARRIER BREAKER(Bleeding Edge,r36085),使用自定义配置构建

# uname -a
Linux OpenWrt 3.8.3 #3 Wed Mar 27 04:09:04 PDT 2013 mips GNU/Linux
Run Code Online (Sandbox Code Playgroud)

网络图

这是我的网络设置图的链接。

如图所示,NanoStation 机头插入端口 3,并在 vid=3 的 vlan 上配置了管理 IP 192.168.20.10/24。它还充当 192.168.100.0/24 网络的无线网桥/接入点。

因此,路由器上的端口 3 为 192.168.100.0/24 网络配置了一个未标记的 vlan,并为 192.168.20.0/24 管理网络(其中 vid=3)配置了一个标记的 vlan。

网络配置

这是我试图通过以下配置实现的目标:

  • 端口 3(虚拟接口 eth0.3)上的标记 VLAN 3 (vid=3)
  • 端口 3 上的未标记 VLAN 4(虚拟接口 eth0.4)
  • 端口 3 上的默认 vlan pvid=4(处理传入的未标记帧)

和实际内容/etc/config/network

<snip>

config interface 'loco'
        option proto 'static'
        option ifname 'eth0.3'
        option ipaddr '192.168.20.1'
        option netmask '255.255.255.0'

config interface 'locolan'
       option proto 'static'
       option ifname 'eth0.4'
       option ipaddr '192.168.100.1'
       option netmask '255.255.255.0'

<snip>

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option vid '1'
        option ports '0t 2 4'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option vid '2'
        option ports '0t 1'

config switch_vlan
        option device 'switch0'
        option vlan '3'
        option vid '3'
        option ports '0t 3t'

config switch_vlan
       option device 'switch0'
       option vlan '4'
       option vid '4'
       option ports '0t 3'

config switch_port
    option port '3'
    option pvid '4'
Run Code Online (Sandbox Code Playgroud)

重启路由器后,swconfig显示如下交换机配置。请注意 VLAN 3 中缺少的“3t”。

# swconfig dev switch0 show
Global attributes:
    enable_vlan: 1
Port 0:
    pvid: 0
    link: port:0 link:up speed:1000baseT full-duplex txflow rxflow 
Port 1:
    pvid: 2
    link: port:1 link:up speed:100baseT full-duplex auto
Port 2:
    pvid: 1
    link: port:2 link:down
Port 3:
    pvid: 4
    link: port:3 link:up speed:100baseT full-duplex auto
Port 4:
    pvid: 1
    link: port:4 link:up speed:100baseT full-duplex auto
VLAN 0:
    vid: 0
    ports: 0t 
VLAN 1:
    vid: 1
    ports: 0t 2 4 
VLAN 2:
    vid: 2
    ports: 0t 1 
VLAN 3:
    vid: 3
    ports: 0t    <----- no tagged port 3!
VLAN 4:
    vid: 4
    ports: 0t 3
Run Code Online (Sandbox Code Playgroud)

结果,我无法ping通机头的管理IP。

我还尝试使用手动配置 vlan/端口分配和标签 swconfig,但在每次排列中,它要么将端口 3 留在一个 vlan 之外,要么强制端口 3 在两个 vlan 中进行标记。

问题

  1. 如何在同一端口上配置未标记和标记的 vlan?我特别想为 OpenWrt 配置它,但即使了解如何在 Linux 上执行此操作也会有所帮助。
  2. swconfig 或 AR7240/AR9330 OpenWrt 开关驱动程序是否存在任何可能导致此问题的已知错误/问题?(没有出现在我的搜索中。)

小智 2

一般来说,即使是未标记的端口也需要分配一个本机 VLAN ID,并且仅当该 ID 与默认 ID 1 不同时。这可以帮助交换机了解如何转发数据包。如果您不提供 VLAN 并且它是桥接的,则它被视为路由接口。通常不应在接口上指定子接口(即标记),除非您希望它通过该接口上的 IP 绑定到该系统上。

  1. 配置 VLAN 路由接口(不是物理/桥接)
  2. 指定物理桥接接口上使用的标记协议(即 dot1q)
  3. 选择并指定所有接口上的本机 VLAN id(如果不是 vlan 1)

还有一点。一般来说,标记仅在 L2 数据包从一个 VLAN 移动到核心交换机引擎时并且仅在需要通过另一条干线传送时才会发生。当数据包流出交换机引擎时,它会被剥离标签并通过标准以太网帧转发。