Networking

為什麼在目標介面上沒有擷取到 ICMP 數據包?

  • March 20, 2016

我有一個如圖所示的網路設置:

在此處輸入圖像描述

中央盒子是一個網關(Ubuntu 15.10),它在各種網路(圖片上只顯示一個lan0)和 Internet 之間中繼數據包。

  • 網關:我可以ping通Internet上的所有介面和主機
  • laptop: 我可以ping通網際網路上的所有介面和主機,除了192.168.0.254

我還不知道為什麼我不能 ping 它,這就是我擷取流量的原因。這不是我的問題,但如果有人有想法,歡迎。所有介面都接受所有流量,並且所有介面之間都有轉發

在抓包了解為什麼ping不通的時候,我做了三個測試

  1. ping 從laptop192.168.0.10

ping通過,但未tcpdump -i int0 icmp顯示任何擷取的數據包

  1. ping 從laptop192.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
  1. ping 從laptop8.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 上發送。

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