1

我有一个 Linux 路由器,我在其上使用 CONFIG_IP_NF_QUEUE、iptables 用户空间和 Perl 模块IPTables::IPv4::IPQueue来检查 H323 - H.225 数据包,然后通过或丢弃。我不仅需要接受或丢弃数据包,还需要修改它,更具体地说,我想更改从 H323 网守返回给客户端的 MCU(在数据包中)的 IP 地址。

这将需要我检查 TCP 数据包正文并更改数据包正文中的 IP 地址。有谁知道我怎么能做到这一点?是否有任何开源第 7 层路由器能够做到这一点?

4

2 回答 2

1

在过去,我使用“ip masquerade”来做类似于您所描述的事情。

http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/supported-client-software.html

但最好的解决方案是放置一个网守作为代理。这样你就不会欺骗协议,你实际上是在重新调用。

我会在这里寻找 gnugk 路由模式:

http://www.gnugk.org/h323-proxy.html

于 2013-02-22T18:28:11.903 回答
0

如果您已经获得了 IP 数据包,从您的声明中您已经成功地这样做了,我认为在传递数据包之前更改数据包的 IP 地址没有问题。

只需进行一些位操作以更改 IP 标头中的 IP 地址(同时更新 IP 校验和)。另请注意,您必须更新 TCP 标头校验和,因为它的计算涉及包含 IP 地址的伪标头。

只需阅读RFC 791RFC 793即可让您了解如何执行此操作。这很简单。

于 2013-02-23T07:44:56.843 回答