Debian Squeeze 上重复传入 TCP 流量

Debian Squeeze 上重复传入 TCP 流量

我必须测试一个自制服务器,该服务器在单个端口上接受大量传入 TCP 流量。协议也是自制的。

为了测试目的,我想将此流量发送到: - 生产服务器(例如,监听端口 12345) - 测试服务器(例如,监听端口 23456)

我的客户端应用程序很“笨”:它们从不读回数据,服务器也从不回复,我的服务器只接受连接,进行统计计算并存储/转发/服务原始数据和计算数据。

实际上,客户端应用程序和硬件非常简单,我无法告诉客户端在两个服务器上发送他们的流......并且使用“假”客户端是不够的。

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

我有一台运行 Squeeze 的服务器并且对它拥有完全的控制权。

提前感谢您的回复。

答案1

如果您不想写任何东西,也许 netcat 会监听一个端口,通过管道连接到 tee,然后 tee 会转到几个命名管道,然后这些管道又会连接到生产和测试服务器端口?

就像是:

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

并且,在单独的终端中:

cat /tmp/prodpipe | nc 127.0.0.1 12345

cat /tmp/testpipe | nc 127.0.0.1 23456

然后你的客户端在端口 9999 上进行喷发。

答案2

如果您的流量是 UDP,那么使用 iptables 应该很容易做到。

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

它不是默认内置在内核中的,但是源代码和工具可以在xtables-插件源包裹。

相关内容