同一端口上有多个tcp服务

时间:2016-04-13 15:39:21

标签: linux tcp firewall iptables markers

我正在开发一个项目,其中一些客户端(嵌入式Linux系统)需要使用至少两种协议连接到主服务器:HTTPS和SSH。其中一个要求是每个客户端只允许一个流到服务器,因此我找到了一种方法使两个服务在同一个端口上运行。

我正在考虑的一个解决方案是使用iptables标记:在客户端标记SSH的数据包为0x1,HTTPS的数据包为0x2,然后在服务器端,根据标记重定向数据包在本地界面上收听正确的服务。这是可接受的解决方案吗?标记是由网络路由器保存还是仅在同一台机器上本地工作用于iptables?

无论如何,如果你能就不同的解决方案提出建议,当然欢迎你!

1 个答案:

答案 0 :(得分:0)

更多其他用户将来发现此问题:

https://github.com/yrutschle/sslh有你可能需要的东西。我还没有使用它(但是)但是正在计划它。 来自Github网站: sslh - 一个ssl / ssh多路复用器

sslh接受指定端口上的连接,并根据对远程客户端发送的第一个数据包执行的测试进一步转发它们。

实现了HTTP,SSL,SSH,OpenVPN,tinc,XMPP的探测,并且可以识别可以使用正则表达式测试的任何其他协议。一个典型的用例是允许在端口443上提供多个服务(例如,从公司防火墙内部连接到SSH,几乎从不阻止端口443),同时仍然在该端口上提供HTTPS。

因此,sslh充当协议解复用器或交换机。它的名字来源于它在同一端口上提供SSH和HTTPS的原始功能。