动态修改TCP数据包

时间:2014-11-24 00:33:58

标签: java networking tcp packet-capture

我正在编写一个Java应用程序,我正在运行主服务器和备份服务器(使用VM)。为了使备份服务器作为主服务器(如果主服务器崩溃)接管,同时对客户端完全透明,我需要在主服务器和备份服务器上运行相同的应用程序,并且两者必须具有相同的状态。

为此,我必须将备份与主服务器同步,以便它从客户端接收相同的数据包序列并发送相同的(抑制的)回复。为此,我需要获取备份的初始TCP序列号以匹配主要的初始序列号。

为了实现这一点,我想到拦截进出备份服务器的数据包并修改其TCP头中的序列号,使其与主要数据库的序列号匹配。因此,我需要一个应用程序 -

  • 让我动态拦截TCP数据包
  • 允许我修改它们,然后将它们转发到原始目的地
  • 确保删除原始未修改的数据包
  • 可以嵌入Java应用程序中的东西是一个巨大的优势,但这不是一个主要的要求

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

对于任何面临同样问题的人,我终于设法使用ettercap - http://ettercap.github.io/ettercap/

更具体地说,我使用ARP中毒模式来拦截进出服务器的数据包,并使用自定义的ettercap插件来适当地修改它们