iptables 重定向 IP 地址

iptables 重定向 IP 地址

我在服务器 (10.2.2.200) 上有一个应用程序 (mirth),它在端口 6661 上接收来自 10.0.1.234 端口 56789 的 egate 服务器的 HL7 反馈。对于它接收/处理的每​​条消息,它都会向 10.0.1.234 端口 56789 生成一条 HL7 ACK 消息。但是,egate 服务器 (我无法控制) 并没有收到 ACK 消息,因为它期望在 10.1.1.111 端口 6661 上接收这些消息。

是否可以设置 iptables(在我的 mirth 服务器上 - 即 10.0.2.200)来编辑 mirth 生成的 ACK 数据包,这些数据包原本应该发送到 10.0.1.234 端口 56789,而是将它们发送到 10.1.1.111 端口 6661?

我正在阅读有关 NAT/iptables 的内容(http://www.karlrupp.net/en/computer/nat_tutorial),但我不知道目前是否可行,任何帮助都将不胜感激。

虚假IP总结:

  • Mirth :10.2.2.200(监听端口 6661)
  • Egate发送方:10.0.1.234(监听端口56789)
  • Egate 需要监听 ACK:10.1.1.111 端口 6661

答案1

您可以使用 iptables--tcp-flags争论

--tcp-flags [!] 掩码组合

当 TCP 标志符合指定条件时匹配。第一个参数是我们应该检查的标志,以逗号分隔的列表形式写出,第二个参数是必须设置的标志的逗号分隔列表。标志为:SYN ACK FIN RST URG PSH ALL NONE。因此命令

  iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN

只会匹配设置了 SYN 标志且未设置 ACK、FIN 和 RST 标志的数据包。

我手边没有 Linux 机器来输入正确的咒语,但我认为它会是这样的:

iptables -t nat -A PREROUTING -p tcp --tcp-flags ACK ACK --dest 10.0.1.234 --dport 56789 -j DNAT --to:destination 10.1.1.111:6661

答案2

您或多或少想要利用 iptables 的数据包处理功能。它涉及更改预路由和后路由表中的数据包。使用此功能时,您还需要加载自定义模块。我绝不是 iptables 的专家,但在我年轻的时候曾经处理过这个问题。以下是描述该过程的文档的链接 -

谷歌上有更多关于破坏数据包的信息。抱歉没有提供更多信息。我希望这能帮助征服世界。

www.linuxsecurity.com.br/info/fw/PacketManglingwithiptables.doc

答案3

我认为这会起作用(尽管它不仅仅是过滤 ACK 而且我还在测试。)

iptables -t nat -A OUTPUT -p tcp -d 10.0.1.234 --dport 10000:65535 -j DNAT --to-destination 10.1.1.111:6661

相关内容