tcpdump 未接收由 iptables 重定向的流量

tcpdump 未接收由 iptables 重定向的流量

以下 iptables 规则用于将从 eth1 进入的所有互联网流量重定向到 localhost(接口 lo 的 ip 为 127.0.0.1)的端口 3000:

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 发送一些互联​​网流量(端口 80)后,tcpdump 并未记录这些流量。

我不确定为什么会这样。有人能解释一下吗?谢谢。

答案1

当你将 IP 数据包目标重写为本地主机的某个地址时,不是通过地址所属的接口传递(lo就您的情况而言),但只是由堆栈直接处理。因此,您无法通过监听环回接口来捕获它。如果您选择任何物理存在的接口地址,情况也不会有什么不同。

如果你需要捕捉对话,我建议使用适当的过滤表达式。类似于

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

应该做你想做的事。

相关内容