Netfilter 不改变目的地

Netfilter 不改变目的地

我正在拦截通过某个服务器 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 数据包

答案1

好的,我明白了。

目标 NAT 需要在 mangle 表的 PREROUTING 链中完成。

iptables -t mangle -A PREROUTING .... -j NFQUEUE --queue-num 0

此外,非常重要的是,反渗透过滤器需要停用。这原本是在路由阶段之后丢弃数据包。

相关内容