Linux 可以区分 HTTPS 和 OpenVPN 流量吗?

Linux 可以区分 HTTPS 和 OpenVPN 流量吗?

如果我有一台 Linux 服务器在同一端口 (TCP 443) 上同时接收 HTTPS 和 OpenVPN 流量,并且我无法更改任一服务器端口,那么如何将 OpenVPN 流量重定向到其他服务器?

据我了解,在协议层面,HTTPS和OpenSSL是不同的,SPI可以识别出差异。在 Linux 中如何做到这一点?

答案1

如果您阅读 OpenVPN 手册页 ( man openvpn),它会告诉您如何执行类似的操作:

直接引用手册页:

--port-share host port [dir] 当在 TCP 服务器模式下运行时,与其他应用程序(例如 HTTPS 服务器)共享 OpenVPN 端口。如果 OpenVPN 检测到使用非 OpenVPN 协议的端口连接,它将代理该连接到主机:端口处的服务器。

让您的 Web 服务器侦听不同的端口(例如 ),localhost:40443并将 OpenVPN 配置为代理到该目标的入站连接。

我不知道有什么方法可以在入口处分离入站流量;您必须在运行 OpenVPN 的服务器上执行此操作。

答案2

看一眼sslh,一个为此目的而设计的工具:

sslh是什么?

sslh 是一个协议复用器。它在同一端口上接受 HTTP、HTTPS、SSH、OpenVPN、tinc、XMPP 或任何其他可以使用正则表达式测试的协议的连接。这使得可以在端口 443 上连接到任何这些服务器,同时仍然在该端口上提供 HTTPS。

相关内容