1

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

4

1 回答 1

0

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

问题是,当您可以检测到 TCP 有效负载的第一个字节时,已经建立了source:portserver:80.

在连接中间转发数据包将导致数据包被拒绝,因为 TCP 堆栈永远不会看到 SYN/SYN-ACK 数据包以建立与端口:8000 或:3333 的连接。

您需要监听端口:80,然后根据收到的第一个端口,打开与端口:8000 或:3333 的连接并重播内容。某些东西还必须对连接发起者执行网络服务器/ Stratumserver的重播的反向重播。

于 2014-10-30T09:20:34.027 回答