Iptables

tcpdump 沒有接收到由 iptables 重定向的流量

  • September 13, 2014

以下 iptables 規則用於將來自 eth1 的所有 Internet 流量重定向到 localhost 的埠 3000(介面 lo 與 ip 127.0.0.1):

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3000

然後設置 tcpdump 來記錄 lo 介面的所有流量:

tcpdump -i lo -w output.dump

但是,在我通過 eth1 發送了一些 Internet 流量(埠 80)後,tcpdump 不會記錄此流量。

我不確定為什麼會這樣。有人可以闡明一下嗎?謝謝。

當您將 IP 數據包目標重寫為本地主機的地址之一時,它不會通過地址所屬的介面(lo在您的情況下),而只是由堆棧直接處理。因此,您無法通過偵聽環回介面來擷取它。如果您選擇任何物理存在的介面地址,這將沒有什麼不同。

如果您需要擷取對話,我建議使用適當的過濾器表達式。類似的東西

tcpdump -i lo -i eth1 host 127.0.0.1 or port 3000

應該做你想做的。

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