Networking
為什麼在目標介面上沒有擷取到 ICMP 數據包?
我有一個如圖所示的網路設置:
中央盒子是一個網關(Ubuntu 15.10),它在各種網路(圖片上只顯示一個
lan0
)和 Internet 之間中繼數據包。
- 網關:我可以ping通Internet上的所有介面和主機
laptop
: 我可以ping通網際網路上的所有介面和主機,除了192.168.0.254
我還不知道為什麼我不能 ping 它,這就是我擷取流量的原因。這不是我的問題,但如果有人有想法,歡迎。所有介面都接受所有流量,並且所有介面之間都有轉發
在抓包了解為什麼ping不通的時候,我做了三個測試
- ping 從
laptop
到192.168.0.10
ping通過,但未
tcpdump -i int0 icmp
顯示任何擷取的數據包
- ping 從
laptop
到192.168.0.254
ping 不通過並
tcpdump -i int0 icmp
顯示13:26:28.032635 IP 10.10.10.93 > 192.168.0.254: ICMP echo request, id 1, seq 671, length 40 13:26:32.604606 IP 10.10.10.93 > 192.168.0.254: ICMP echo request, id 1, seq 672, length 40
- ping 從
laptop
到8.8.8.8
ping 通過並
tcpdump -i int0 icmp
顯示14:02:52.016081 IP 192.168.0.10 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 749, length 40 14:02:52.029388 IP google-public-dns-a.google.com > 192.168.0.10: ICMP echo reply, id 1, seq 749, length 40
我理解第二種情況(至少擷取回應要求的事實)。
為什麼在第一種情況下 ping 通過時沒有擷取到數據包?
為什麼在第三種情況下擷取只顯示來自 192.168.0.10 的請求?哪裡來的
laptop
?(我猜原因和上面一樣)
為什麼在第一種情況下 ping 通過時沒有擷取到數據包?
因為您在 int0 上擷取,但數據包沒有在 int0 上發送。筆記型電腦通過 lan0 將其發送到網關,網關顯示“192.168.0.10 - 嘿,就是我!” 並在 lan0 上發迴響應。它不需要將數據包轉發到 192.168.0 網路上的另一台主機,因此不需要在 int0 上將其發送出去。
是的,
int0
偽裝來自lan0
網際網路的流量。還有 DNAT 將埠重定向192.168.0.10
到內部主機。那麼這可以解釋“為什麼在第三種情況下擷取只顯示來自 192.168.0.10 的請求?” - 來自筆記型電腦的請求可能已將其源 IP 地址修改為 192.168.0.10,然後在 int0 上發送。