我正处于与优先端口转发相关的小项目的研究阶段。
我有一组客户端试图通过其后面的一些无线电设备访问终端服务器。
问题是,如果两个客户端访问终端服务器上的同一目标端口,我就会在错误的客户端上看到垃圾数据。
假设客户端 A 从目标端口请求某些内容,但客户端 B 已经在请求某些内容,则该端口上的终端服务器后面的设备将使用它排队等待发送的数据进行响应。
请注意,两个客户端的目标端口是相同的。
我想优先考虑其中一台服务器,因此我想在 2 个客户端和终端服务器之间实现一种基于 Linux 的路由器应用程序。每个客户端将访问不同的端口,但如果优先客户端开始通信,它将被转发。另一个将被阻止、停止、暂停或任何其他操作。
我可能有点操之过急,开发了一个小型 Python 应用程序,用于监听 2 个不同的端口,并将“优先”端口转发到终端服务器。阻止“非优先”端口的转发,直到优先端口中没有发生一定数量的通信。
我已经阅读了有关 iptables、一些 NATing、socat、一点 QoS 等的文章,但似乎找不到解决我的问题的方法。
我不是网络专家,并且已经使用 Linux 大约 2 年了,但我从未对这种 TCP/ip 路由/转发场景做过太多研究,所以我想知道是否有东西可以帮助我优先考虑一个端口转发,并且比自定义 Python 应用程序更有效率。
谢谢您的反馈。
这是一个小图片,供参考我正在尝试做的事情:
答案1
我相信你可以完成你想做的事情:
据我所知,您必须重新考虑这两个终端的连接方式。我相信 TMUX 可以位于中间,作为服务于两个客户端的应用程序。必须有某种东西来多路复用串行连接,这是无法避免的。
这里有一些有用的 SOCAT 命令
我相信 TMUX 将是你最好的选择,这里有一个tmux 入门指南
我列出了 GNU screen,因为它看起来可能有用在这种情况下。
我也在 serverfault 上发现了一个与您的问题有些类似的问题。
https://serverfault.com/questions/797397/connect-two-ttys-via-tcp-ip