iptablesredirectIP地址

我有一个服务器(10.2.2.200)上的应用程序(欢乐),在端口6661正在从10.0.1.234端口56789从一个egate服务器接收HL7饲料。它收到/进程的每个消息,它生成一个HL7 ACK消息到10.0.1.234端口56789.该egate服务器(我不控制)没有得到ACK消息,因为它期望在10.1.1.111端口6661接收它们。

是否有可能build立iptables(在我的服装 – 这是10.0.2.200)编辑由快乐产生的原本应该去10.0.1.234端口56789的ACK数据包,而是发送到10.1.1.111端口6661 ?

我正在阅读NAT / iptables( http://www.karlrupp.net/en/computer/nat_tutorial ),但我不确定是否可能在这一点上,任何帮助将不胜感激。

假IP摘要:

  • 欢乐:10.2.2.200(听6661港)
  • Egate发件人:10.0.1.234(监听端口56789)
  • Egate希望收听ACK:10.1.1.111端口6661

你可以使用iptables和--tcp-flags参数 :

–tcp-flags [!] mask comp

当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 

或多或less,你想利用iptables的数据包重组function。 它涉及改变前路由和后路由表中的数据包。 使用此function时,您还需要加载自定义模块。 我不是iptables的专业人士,但是在我年轻的时候已经处理了这个问题。 下面是描述过程的文档的链接 –

谷歌有更多关于mangling数据包。 对不起,没有更多的信息。 我希望这有助于征服世界。

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

我认为这将起作用(尽pipe它不仅过滤了ACK,而且我仍在testing)。

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