LinuxはHTTPSとOpenVPNトラフィックを区別できますか?

LinuxはHTTPSとOpenVPNトラフィックを区別できますか?

同じポート(TCP 443)でHTTPSとOpenVPNトラフィックの両方をリッスンするLinuxサーバーがあり、両方のサーバーポートのいずれかを変更できない場合は、OpenVPNトラフィックを別のサーバーにリダイレクトするにはどうすればよいですか。

私が知る限り、プロトコルレベルではHTTPSとOpenSSLは異なり、SPIは違いを識別できます。 Linuxでこれを行う方法は?

答え1

OpenVPNのマニュアルページ( )を読むと、man openvpn次のことを行う方法がわかります。

マニュアルページから直接引用:

--port-share host port [dir] TCPサーバーモードで実行すると、OpenVPNポートは他のアプリケーション(HTTPSサーバーなど)と共有されます。 OpenVPNがOpenVPN以外のプロトコルを使用してポート接続を検出すると、ホスト:ポートはサーバーへの接続をプロキシします。

Webサーバーが別のポート(たとえば)でリッスンし、localhost:40443その宛先へのインバウンド接続をプロキシするようにOpenVPNを構成します。

私は着信時に着信トラフィックを分離する方法を知りません。 OpenVPNを実行しているサーバーでこれを行う必要があります。

答え2

見てSSLH、この目的のために設計されたツール:

SSLHとは何ですか?

SSLHはプロトコルマルチプレクサです。 HTTP、HTTPS、SSH、OpenVPN、Tinc、XMPP、または正規表現を使用してテストできる他のプロトコルへの同じポートからの接続を許可します。これにより、そのポートでHTTPSを引き続き提供しながら、ポート443でこれらのサーバーに接続できます。

関連情報