在Debian Squeeze上重复传入的TCPstream量

我必须testing一个自制的服务器,在一个端口上接受大量的传入TCPstream量。 协议也是自制软件。

为了testing的目的,我想发送这个stream量: – 到生产服务器(比如说,监听端口12345) – 到testing服务器(比如说,监听端口23456)

我的客户端应用程序是“愚蠢的”:他们从不读取数据,服务器永远不会回复,我的服务器只接受连接,并进行统计计算并存储/转发/处理原始数据和计算数据。

事实上,客户端应用程序和硬件是如此简单,我不能告诉客户端在两台服务器上发送它们的stream…而使用“假”客户端还不够好。

什么可能是最简单的解决scheme? 我当然可以写一个中间的应用程序,只是复制传入的数据,并将其发送回testing服务器,假装成客户端。

我有一台运行Squeeze的服务器,可以完全控制它。

提前感谢您的回复。

如果你不想写任何东西,也许netcat在一个端口上监听,pipe道连接到tee,tee转到几个命名pipe道,然后netcat到prod和testing服务器端口?

就像是:

mkfifo /tmp/prodpipe mkfifo /tmp/testpipe nc -l 9999 -k | tee /tmp/prodpipe | tee /tmp/testpipe 

而且,在单独的terminal中:

 cat /tmp/prodpipe | nc 127.0.0.1 12345 

 cat /tmp/testpipe | nc 127.0.0.1 23456 

然后你的客户在港口9999喷出。

如果你的stream量是UDP,那么使用iptables很容易。

一个TEE的iptables目标是可用的,基本上允许你发送一个数据包的副本到不同的目的地。

它没有默认内置到内核中,但源代码和工具在xtables-addons-source包中可用。