我正在截取数据包,因为它们是通过某个服务器P路由的。我有一个客户端和一个服务器,分别是A和B,它们相互接收。
基本上,当P从A(目的地是B)获得一个数据包时,我希望能够将这个包转过来并修改它(变成一个ACK)。
我正在成功地修改ip包的源地址和目标地址,但是当我释放该数据包时,即使IP包标记为A的目的地,它仍将返回到B。
总之,我要的是:
A----->(src=A, dest=B) -----> P ------------------B
A-----<(src=B, dest=A) -----< P ------------------B但我得到的是:
A----->(src=A, dest=B) -----> P ------------------B
A ------------- P >-------(src=B, dest=A) ------- > B为什么情况是这样的:
作为参考,我的iptables命令是:
iptables -A FORWARD -j NFQUEUE --queue-num 0此外,当我将iptables命令更改为:
iptables -t mangle -A PREROUTING ....这个包似乎在netfilter接受它之后就消失了。wireshark显示的是原始数据包,而不是我将其更改为的ACK数据包。
发布于 2016-11-22 22:00:15
好吧,所以我想出来了。
目标NAT‘’ing需要在mangle表的PREROUTING链中完成。
iptables -t mangle -A PREROUTING .... -j NFQUEUE --queue-num 0此外,而且非常重要的是,rpfilter需要停用。这最初是在路由阶段之后丢弃数据包。
https://serverfault.com/questions/816147
复制相似问题