为什么 Linux 桥接器显示本地接口的两个 MAC 地址条目?

为什么 Linux 桥接器显示本地接口的两个 MAC 地址条目?

为什么 Linux 桥接器显示本地接口的两个 MAC 地址条目?

brctl showmacs bridge1  
port no mac addr        is local?   ageing timer  
  1 0c:b4:7a:f5:36:b6   no        23.90   
  1 0c:b4:7a:f5:37:3b   no        19.58  
  1 0c:a4:7a:f9:d7:04   yes        0.00  
  1 0c:a4:7a:f9:d7:04   yes        0.00  
 10 fe:c4:00:ab:d5:18   yes        0.00   
 10 fe:c4:00:ab:d5:18   yes        0.00

答案1

这与我的 Debian 9 类似:

# brctl showmacs br0
port no mac addr                is local?       ageing timer
  2     00:08:ca:42:2c:02       yes                0.00
  2     00:08:ca:42:2c:02       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00

这些条目来自 FDB(转发数据库)。还有另一个工具可以显示它:

# bridge fdb show | grep 'master br0'
00:30:18:a6:cb:21 dev eth1 vlan 1 master br0 permanent
00:30:18:a6:cb:21 dev eth1 master br0 permanent
00:08:ca:42:2c:02 dev wlan0 master br0 permanent
00:08:ca:42:2c:02 dev wlan0 vlan 1 master br0 permanent

两个具有相同 MAC 地址的条目在输出中看起来相同,brctlbridge显示它们不同。每对都有一个有MAC 地址的条目vlan 1和一个没有 MAC 地址的条目。

vlan 1指的是虚拟局域网(VLAN)标识符为 1。这表示该特定标识符有一个 VLAN 过滤器条目。

未配置 VLAN 的基本交换机会禁用或永久启用 VLAN 功能,并使用包含设备上所有端口作为成员的默认 VLAN。默认 VLAN 通常使用 VLAN 标识符 1。

我从未在 Debian 中明确配置过它vlan 1;它默认存在。我尝试调查它的来源,发现这次讨论。那里的问题与您的问题无关,但它仍然表明vlan 1Linux 中的 VLAN-aware bridge 没有什么奇怪的。

为了确认 VLAN 与您的要求相关,我执行以下操作:

# bridge vlan show dev eth1
port    vlan ids
eth1     1 PVID Egress Untagged

# bridge vlan add vid 123 dev eth1
#
# bridge vlan show dev eth1
port    vlan ids
eth1     1 PVID Egress Untagged
         123

# bridge fdb show | grep 'master br0'
00:30:18:a6:cb:21 dev eth1 vlan 123 master br0 permanent
00:30:18:a6:cb:21 dev eth1 vlan 1 master br0 permanent
00:30:18:a6:cb:21 dev eth1 master br0 permanent
00:08:ca:42:2c:02 dev wlan0 master br0 permanent
00:08:ca:42:2c:02 dev wlan0 vlan 1 master br0 permanent
#
# brctl showmacs br0
port no mac addr                is local?       ageing timer
  2     00:08:ca:42:2c:02       yes                0.00
  2     00:08:ca:42:2c:02       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00
#
# bridge vlan del vid 123 dev eth1
#
# sudo brctl showmacs br0
port no mac addr                is local?       ageing timer
  2     00:08:ca:42:2c:02       yes                0.00
  2     00:08:ca:42:2c:02       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00
  1     00:30:18:a6:cb:21       yes                0.00

如你所见,将带有标识符123(任意数字,示例)的 VLAN 过滤器添加到我的后eth1brctl showmacs列出了其 MAC 地址次。123已删除 – 我们又回到了两次。


概括:

  • 您的网桥能够识别 VLAN。
  • 每个桥接本地接口都添加了一个 VLAN 过滤器条目(vlan X,最有可能vlan 1)。
  • 实际上,对于每个这样的接口,FDB 包含两个条目:一个带有该接口的条目vlan X,一个不带有该接口的条目。
  • brctl showmacs显示这些条目但省略了有关 VLAN 的信息,因此有些行看起来完全相同。
  • bridge fdb show不会省略有关 VLAN 的信息,它会向您显示实际条目的不同。

相关内容