Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
端口 80 接受两种不同的协议:HTTP 和 Stratum。后者是基于行的协议,总是以'{'开头。如果客户端连接到端口 80 并发送类似 'GET / HTTP/1.0...' 的内容,则将连接转发到端口 8000,如果它发送 '{"id": 1,...',则将其转发到端口 3333 . 有没有可能用 iptables 做到这一点?谢谢!
我不认为你可以用 iptables 做到这一点。
问题是,当您可以检测到 TCP 有效负载的第一个字节时,已经建立了source:port与server:80.
source:port
server:80
在连接中间转发数据包将导致数据包被拒绝,因为 TCP 堆栈永远不会看到 SYN/SYN-ACK 数据包以建立与端口:8000 或:3333 的连接。
您需要监听端口:80,然后根据收到的第一个端口,打开与端口:8000 或:3333 的连接并重播内容。某些东西还必须对连接发起者执行网络服务器/ Stratumserver的重播的反向重播。