Uma bridge ou switch é um dispositivo que liga dois segmentos de um domínio de broadcast e segrega o tráfego unicast.
Para fazer isso, a bridge mantém uma tabela de encaminhamento que registra qual porta atinge um determinado endereço Mac. Essa tabela é preenchida sempre que um novo pacote com um novo endereço de origem de ethernet é recebido, e endereços MAC que não são vistos há algum tempo são removidos.
Quando uma bridge / switch recebe um quadro destinado a um determinado endereço MAC, se esse endereço MAC estiver em sua tabela de encaminhamento, ele será enviado somente na porta correspondente, caso contrário, para todas as portas.
A implementação do Linux não é diferente.
A tabela de encaminhamento pode ser consultada com o
brctl showmacs <bridge-name>
E está disponível em /sys/class/net/<bridge-name>/brforward
(binário).
Você pode obter um mapeamento entre o número da porta e o nome da interface com:
grep . /sys/class/net/vmbr0/brif/*/port_no
Ou, se em um sistema com uma versão recente de iproute2
o novo conjunto de utilitários de rede para Linux, você pode obter a tabela de encaminhamento com nomes de interface com:
bridge fdb show br <bridge-name>
Ou para saber todos os endereços MAC acessíveis através de uma determinada interface ou ponte, por exemplo eth0
:
bridge fdb show br <bridge-name> brport <interface-name>