Não consigo capturar tráfego unicast na interface br0 ( linux bridge ) usando o comando tcpdump -nni any -vvv
. O tráfego broadcast, no entanto, é capturado conforme o esperado. Curiosamente, o tráfego unicast é capturado se eu abrir outro terminal e executar tcpdump -nni br0 -vvv
para capturar tráfego especificamente na interface br0 simultaneamente.
Notei que esse comportamento está presente com tcpdump
a versão 4.9.3 (libpcap versão 1.8.1), onde o tcpdump -nni any -vvv
comando não captura tráfego unicast br0. No entanto, usar tcpdump
a versão 4.99.5 ( libpcap versão 1.10.5 com TPACKET_V3 ) funciona corretamente e captura o tráfego unicast em br0.
Eu sei que o br0 obtém todo o tráfego que flui para o dispositivo de ponte Linux, veja também Anatomia de uma ponte Linux .
Em casos em que o endereço MAC de destino do quadro de entrada é multi- ou broadcast, o dispositivo de ponte é definido para receber todo o tráfego, ou o endereço corresponde a uma das interfaces locais, um clone do quadro também é entregue para cima na pilha de rede local chamando a função br_pass_frame_up. A função atualiza as estatísticas do dispositivo de ponte e passa o quadro de entrada para cima na pilha de rede chamando a função netif_receive_skb independente do dispositivo
Suspeito que o que estou vendo pode estar relacionado à versão tcpdump
ou aos seus parâmetros, mas não posso confirmar isso. Você poderia ajudar a explicar o motivo desse comportamento?