2015-02-23 34 views
0

是否有可能将所有流出的udp流量从网关路由器转换为tcp与iptables位于同一端口。已经看过了,但我不确定我可以如何使用它。Iptables从udp到tcp

回答

3

这是不可能在一个通用的方式为至少由于以下原因:

  • UDP是一个数据报协议,其中,每个分组是独立于其他。 TCP改为流协议。虽然可以将UDP数据包连接到TCP流,但是不清楚应该在哪个边界处分割TCP流以生成数据包。
  • 使用UDP重复,可能发生数据包丢失和数据包重新排序。如果你不能确定正确的顺序,并且你得到了所有的消息,并且恰好一次你不能从中构建可靠的TCP流。
  • TCP在收到数据包时确认,如果ACK丢失,则数据包被重新发送。一旦将TCP转发到UDP,这些ACK将无法完成,因为UDP没有这种机制。

它可能仍然可以执行应用程序特定的翻译,如UDP DNS到TCP DNS或类似的。但是这种翻译取决于应用程序协议,因此您需要具有特定于应用程序的网关。 iptables作为数据包过滤器工作在较低层,并不提供这种功能。