2013-02-12 125 views
0

我的公司正在通过两台服务器之间的TCP进行私有协议,现在他们询问我们是否可以侦听此协议并尝试阻止其中的一些消息。通过TCP协议的代理

我正在考虑使用Simpleproxy,但我不知道如何听这个协议,我也不确定这个实现有多强大。

是否有任何实现或设计我可以用来做到这一点?

这个想法是,我需要在服务器和客户端之间的中间,并通过/转发消息,除非当我向服务器发送失败响应时,由于某些特定规则我不接受消息有。

服务器将是Linux。

假设有server1连接到server2,我的服务器将被命名为middle_server,因此server1将更改其配置并将连接到我,然后middle_server将发送到server2,那么middle_server将收到来自服务器2和为下图所示寄回到server1,

server1 --ask--> middle_server --ask---> server2 
server2 --response--> middle_server --response---> server2 
+0

什么是协议?设计在很大程度上取决于它是什么。 – duskwuff 2013-02-12 00:34:14

+0

这是我们的供应商和我们的服务器使用的奇怪和私人的东西。它的一部分是XML。 – user1832809 2013-02-12 00:36:50

+0

你可以访问路由器吗? – hek2mgl 2013-02-12 00:37:37

回答

0

我不知道任何实际的软件包,可以做到你想要什么,但你应该能够使用iptables来阻止使用字符串模块的特定字符串。我不太确定,如果字符串碰巧在多个数据包中被分解了,但它可以起作用,但您可以尝试一下。

stackexchange question on filtering http requests using iptables

+0

这将工作随机和不可预测的,正是你提到的原因。 – 2013-02-12 03:06:07

+0

作为一个中继服务器怎么样,所以我从服务器1接收信息,然后如果我想通过消息传递给服务器2,则更改源IP并发送它,并且如果我想根据我的规则拒绝它,请将其拒绝。 – user1832809 2013-02-12 21:13:39

+0

这就是你要用iptables做的事情,但是要做到这一点,你需要像大卫施瓦茨所说的那样做,并在尝试应用任何过滤器之前重新组装数据包。 – Eric 2013-02-12 22:06:39