使用linux路由器修改H323 tcp数据包

时间:2012-11-22 08:25:14

标签: linux perl tcp packet

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

这需要我检查TCP数据包主体并更改数据包正文中的IP地址。任何人都知道如何实现这一目标?是否有任何开源第7层路由器能够做到这一点?

2 个答案:

答案 0 :(得分:1)

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

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

但最好的解决方案是将网守作为代理。这样你就不会愚弄协议,你实际上是在重新打电话。

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

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

答案 1 :(得分:0)

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

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

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