tcpdump na interface de ponte (virbr) não recebe nenhum pacote destinado a um de seus endereços

2

Veja a configuração da interface:

# ifconfig virbr0
virbr0: flags=4355  mtu 1500
        inet 192.168.11.1  netmask 255.255.255.255  broadcast 255.255.255.255
        ether 52:54:00:99:e3:0d  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
# ip link show virbr0
13: virbr0@NONE:  mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT 
    link/ether 52:54:00:99:e3:0d brd ff:ff:ff:ff:ff:ff

Eu sou capaz de fazer ping, estabelecer conexões TCP, etc para 192.168.11.1, mas relatórios tcpdump

0 packets captured
0 packets received by filter
0 packets dropped by kernel

UPDATE

Descobri que, se eu atribuir o endereço a uma interface veth, colocá-lo em um namespace de rede e, em seguida, anexar a outra extremidade do par veth à interface virbr, todos os pacotes serão exibidos no tcpdump na interface virbr. No entanto, a questão original ainda permanece.

    
por A__A__0 16.12.2015 / 17:11

1 resposta

1

tcpdump opera no nível do link abrindo um soquete de pacote [1]. Ele fica logo abaixo da interface, por isso intercepta os pacotes de entrada dos pacotes de hardware e de saída de uma interface. Quando você envia um pacote para essa interface no kernel, o pacote atingiu seu destino e não é enviado pela interface. Para os curiosos, aqui está o código relevante [2].

[1] link
[2] link

    
por 08.07.2016 / 18:19