转发TCP连接,第一个字节是' {'到端口3333,否则到端口80,可能用iptables?

时间:2013-09-07 16:49:47

标签: tcp port iptables forward

端口80接受两种不同的协议:HTTP和Stratum。后者是一个基于行的协议,始终以'{'开头。如果客户端连接到端口80并发送类似'GET / HTTP / 1.0 ...'的内容,请将连接转发到端口8000,如果它发送'{“id”:1,...',则将其转发到端口3333是否有可能用iptables做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你不能用iptables做到这一点。

问题在于,当您可以检测到TCP有效负载的第一个字节时,已在source:portserver:80之间建立了连接。

在中间连接中转发数据包将导致数据包被拒绝,因为TCP堆栈从未看到用于连接到端口的连接的SYN / SYN-ACK数据包:8000或:3333。

你需要某些东西监听端口:80,然后根据收到的第一个,打开到端口的连接:8000或:3333并重放内容。那个某些东西还必须对连接启动器执行webserver的/ Stratumserver重放的反向重放。