我必须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包中可用。