Linux

ping 本地網路上不存在的主機時介面上的 tcpdump

  • April 5, 2013

我已經在伺服器上靜態配置了介面的 IP 地址:

ip addr add 10.40.0.6/16 broadcast 10.40.255.255 dev eth1

如果我嘗試 ping 網路上的一台機器(例如,10.40.0.1),它會失敗並顯示“無法訪問目標主機”。

當 ping 執行時,如果我執行以下操作,我根本看不到任何活動

tcpdump -i eth1 icmp

但是,如果我改為監聽環回介面:

tcpdump -i lo icmp

然後我看到類似的東西:

16:02:57.369632 IP 10.40.0.6 > 10.40.0.6: ICMP host 10.40.0.1 unreachable, length 92

我的問題是:為什麼 ICMP 數據包不顯示為通過 eth1 介面發出?

編輯:

# ip r ls
10.40.0.0/16 dev eth1 proto kernel scope link src 10.40.0.6

如果你 ping 一個不存在的主機,那麼 ARP 廣播就會失敗。Tcpdump 永遠不會看到 icmp,因為 eth1 不會在沒有第 2 層目標的情況下發送單播 IP 數據包。

試試這個:

tcpdump -i eth1 arp

您應該看到 ARP 解析失敗。

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