桥接口(virbr)上的tcpdump没有收到任何发往其地址之一的数据包

这里是接口的configuration:

 #ifconfig virbr0
 virbr0:flags = 4355 mtu 1500
         inet 192.168.11.1networking掩码255.255.255.255广播255.255.255.255
         ether 52:54:00:99:e3:0d txqueuelen 0(以太网)
         RX数据包0字节0(0.0 B)
         RX错误0丢弃0超限0帧0
         TX分组0字节0(0.0 B)
         TX错误0丢弃0超载0载波0碰撞0
 #ip链接显示virbr0
 13:virbr0 @ NONE:mtu 1500 qdisc noqueue状态LOWERLAYERDOWN模式DEFAULT 
     link / ether 52:54:00:99:e3:0d brd ff:ff:ff:ff:ff:ff

我能ping通,build立TCP连接等到192.168.11.1,但tcpdump报告

捕获0个数据包
filter收到的0个数据包
内核丢弃了0个数据包

UPDATE

我发现如果将地址分配给veth接口,将其放入networking名称空间,然后将veth对的另一端连接到virbr接口,所有数据包将显示在virbr接口上的tcpdump上。 但是原来的问题依然存在。

tcpdump通过打开数据包套接字[1]在链路级别运行。 它位于接口的正下方,因此拦截来自硬件的入站数据包和来自接口的出站数据包。 当你发送一个数据包到内核中的那个接口时,数据包已经到达目的地,不会通过接口发送出去。 好奇,这里是相关的代码[2]。

[1] http://man7.org/linux/man-pages/man7/packet.7.html
[2] https://github.com/the-tcpdump-group/libpcap/blob/master/pcap-linux.c#L3281