下面的iptables规则用于redirect从本地主机(接口为lo,IP为127.0.0.1)从eth1进入端口3000的所有Internetstream量:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3000
然后tcpdump被设置为在lo接口上logging所有stream量:
tcpdump -i lo -w output.dump
但是,在通过eth1发送了一些互联网stream量(端口80)之后,这个stream量不会被tcpdumplogging下来。
我不知道为什么这样。 有人可以摆脱一些光? 谢谢。
当你正在将IP数据包目的地改写成本地主机的一个地址时,它不会通过该地址所属的接口(在你的情况下),而是直接由堆栈直接处理。 因此,您无法通过在回送接口上侦听来捕获它。 如果您select了任何物理上存在的接口地址,这也不会有什么不同。
如果你需要捕捉对话,我build议使用适当的filterexpression式。 东西沿线
tcpdump -i lo -i eth1 host 127.0.0.1 or port 3000
应该做你想做的。