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

ric*_*132 5 networking linux bridge

为什么 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
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 5

这在我的 Debian 9 中是类似的:

\n\n
# brctl showmacs br0\nport no mac addr                is local?       ageing timer\n  2     00:08:ca:42:2c:02       yes                0.00\n  2     00:08:ca:42:2c:02       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
# bridge fdb show | grep \'master br0\'\n00:30:18:a6:cb:21 dev eth1 vlan 1 master br0 permanent\n00:30:18:a6:cb:21 dev eth1 master br0 permanent\n00:08:ca:42:2c:02 dev wlan0 master br0 permanent\n00:08:ca:42:2c:02 dev wlan0 vlan 1 master br0 permanent\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

vlan 1指的是标识符为 1 的虚拟 LAN (VLAN)。它表示存在针对该特定标识符的 VLAN 过滤器条目。

\n\n
\n

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

\n
\n\n

我从来没有vlan 1在我的 Debian 中明确配置过这个;默认情况下它就在那里。我试图调查它的来源并发现了这个讨论。那里的问题与你的问题无关,但它仍然表明vlan 1Linux中的VLAN感知桥没有什么奇怪的。

\n\n

为了确认 VLAN 与您的要求相关,我这样做了:

\n\n
# bridge vlan show dev eth1\nport    vlan ids\neth1     1 PVID Egress Untagged\n\n# bridge vlan add vid 123 dev eth1\n#\n# bridge vlan show dev eth1\nport    vlan ids\neth1     1 PVID Egress Untagged\n         123\n\n# bridge fdb show | grep \'master br0\'\n00:30:18:a6:cb:21 dev eth1 vlan 123 master br0 permanent\n00:30:18:a6:cb:21 dev eth1 vlan 1 master br0 permanent\n00:30:18:a6:cb:21 dev eth1 master br0 permanent\n00:08:ca:42:2c:02 dev wlan0 master br0 permanent\n00:08:ca:42:2c:02 dev wlan0 vlan 1 master br0 permanent\n#\n# brctl showmacs br0\nport no mac addr                is local?       ageing timer\n  2     00:08:ca:42:2c:02       yes                0.00\n  2     00:08:ca:42:2c:02       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n#\n# bridge vlan del vid 123 dev eth1\n#\n# sudo brctl showmacs br0\nport no mac addr                is local?       ageing timer\n  2     00:08:ca:42:2c:02       yes                0.00\n  2     00:08:ca:42:2c:02       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n  1     00:30:18:a6:cb:21       yes                0.00\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您所看到的,在将带有标识符123(任意数字,例如)的 VLAN 过滤器添加到 my后eth1brctl showmacs列出了其 MAC 地址3次。123删除了\xe2\x80\x93,我们又回到了两个。

\n\n
\n\n

概括:

\n\n
    \n
  • 您的网桥知道 VLAN。
  • \n
  • 每个桥接本地接口都添加了一个 VLAN 过滤器条目(vlan X最有可能的是vlan 1)。
  • \n
  • 实际上,FDB 每个此类接口包含两个条目:一个有vlan X,一个没有。
  • \n
  • brctl showmacs显示这些条目,但省略有关 VLAN 的信息,因此有些行看起来相同。
  • \n
  • bridge fdb show不会省略有关 VLAN 的信息,它会显示实际条目是不同的。
  • \n
\n