日志服务器数据包

嘿,一些脚本小子正在崩溃我的客户的游戏服务器(基于Linux)。 为了提供最好的服务,我正在寻找一种方法来find那些垃圾邮件发送的数据包,所以我可以在以后阻止它。

所以,我需要一个简单的程序,它将logging从所有客户端发送或从服务器软件获取的每个数据包。 正如我所说的,游戏服务器软件基于Linux(Ubuntu 9.10),因此该程序应该支持Linux。 游戏服务器软件,不是开源的。

谢谢。

Wireshark让人想起 – 或者用于控制台版本的tshark。 两个都应该在Karmic Koala仓库中可用。

请注意, 所有stream量可能意味着数十,数百或数千兆/秒,所以检查您的服务器的平均stream量,并准备(数据需要存储在某个地方,而不是在同一接口上的networking(否则你会生成一个无限循环的数据))。


编辑:正如@威廉说, 如果游戏服务器本身崩溃 ,数据可能不会写入磁盘的时间; 但在这种情况下,他们甚至可能不能及时从另一个networking接口发出。 在我看来,这不仅仅是应用程序崩溃的可能性,但如果是这样的话,我会这样做:

把另一台带有两块网卡的计算机放在你的服务器前面,把它们连接在一起,并以混杂的方式在那台主机上捕获(这些接口甚至不需要IP地址)。

[game server[eth0]]------[[eth1]capturing computer[eth0]]-----[[eth1]your router, the Net etc] 

我在这里做的是:捕获计算机假装你的游戏服务器和你的路由器之间有一个网段(虽然现在有两个网段)。 因此,捕获计算机将看到游戏服务器和路由器之间的所有stream量,但是TCP和UDPstream量本身没有被改变。 现在,即使游戏服务器崩溃,您仍然会拥有前面所有的stream量。

所描述的方法可能会减慢线路(因为捕获计算机必须来回地连接数据包),但是除非您处理千兆位吞吐量,否则这应该不会太明显。

您可以使用tcpdump来logging数据包。

针对stream量分析的一个选项可能是snort( http://www.snort.org/ )。