使用REDIRECT和DNAT的iptables端口转发

我正在设置一个代理服务器以允许TCP数据包的特定path。 当到达代理的PORT A时,TCP数据包需要被redirect到代理端口B.一旦到达端口B,它们需要被DNAT到目的IP,端口B.

我在代理服务器上使用iptables规则,并将虚拟机设置为path中的每个IP地址,并使用netcat发送和监视TCP数据包。

我已经尝试了很多东西,但数据包似乎停止在代理,端口B.什么是这样做? 我在用着

-A PREROUTING -p tcp --dport PORT_A -j REDIRECT --to-port PORT_B 

将数据包从代理端口Aredirect到端口B,工作正常。 但是在这一步之后,我无法将数据包移动到目的IP,端口B.

我尝试在nat Output中捕获redirect的数据包,如下所示:

 -A OUTPUT -p tcp --dport PORT_B -j DNAT --to DESTINATION_IP:PORT_B 

我尝试了另一个预路由规则,假设redirect的数据包需要在规则链上有另一个复原(参见底部的图像)

 -A PREROUTING -p tcp --dport PORT_B -j DNAT--to DESTINATION_IP:PORT_B 

是的,我build立了我的转发链,让它通过,并启用IP转发。

任何帮助表示赞赏。 我是新来的iptables,这真是令我困惑。

PS我已经使用这个图像作为参考。