以下 iptables 规则用于将来自 eth1 的所有互联网流量重定向到本地主机的端口 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 发送了一些互联网流量(端口 80)之后,这个流量并没有被 tcpdump 记录下来。
我不确定为什么会这样。有人可以阐明一下吗?谢谢。
当您将 IP 数据包目标重写为本地主机地址之一时,它不会通过地址所属的接口(
lo
在您的情况下)传递,而是由堆栈直接处理。因此,您无法通过在环回接口上侦听来捕获它。如果您选择任何实际存在的接口地址,这不会有任何不同。如果您需要捕获对话,我建议您使用适当的过滤器表达式。类似的东西
应该做你想做的。