Linux

橋接介面 (virbr) 上的 tcpdump 未收到任何發往其地址之一的數據包

  • July 8, 2016

這是介面的配置:

# ifconfig virbr0
virbr0:標誌 = 4355 人 1500
inet 192.168.11.1 網路遮罩 255.255.255.255 廣播 255.255.255.255
乙太 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 state LOWERLAYERDOWN mode DEFAULT
連結/乙太 52:54:00:99:e3:0d brd ff:ff:ff:ff:ff:ff

我能夠 ping、建立 TCP 連接等到 192.168.11.1,但 tcpdump 報告

0 個數據包被擷取
過濾器接收到 0 個數據包
0 個被核心丟棄的數據包

更新

我發現如果我將地址分配給 veth 介面,將其放在網路命名空間中,然後將 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

引用自:https://serverfault.com/questions/743466