2016-04-13 23 views
0

Ich arbeite an einem Projekt, bei dem einige Clients (eingebettete Linux-Systeme) eine Verbindung zu einem Hauptserver unter Verwendung von mindestens zwei Protokolle herstellen müssen: HTTPS und SSH. Eine der Voraussetzungen ist, dass nur ein Fluss von jedem Client zum Server erlaubt ist, also muss ich einen Weg finden, die beiden Dienste am selben Port arbeiten zu lassen. Eine Lösung, an die ich gedacht habe, ist die Verwendung der iptables-Marker: Auf der Client-Seite markieren Sie die Pakete für SSH mit 0x1, die Pakete für HTTPS mit 0x2 und dann auf der Server-Seite, basierend auf dem Marker, umleiten Pakete zum richtigen Service, der auf der lokalen Schnittstelle hört. Ist es eine akzeptable Lösung? Werden die Marker von den Netzwerkroutern behalten oder arbeitet nur etwas lokal auf demselben Rechner für iptables?Mehrere TCP-Dienste auf dem gleichen Port

Und wie auch immer, wenn Sie über eine andere Lösung beraten können, ist es natürlich willkommen!

+0

Marker sind keine TCP/IP-Sache, daher glaube ich nicht, dass diese an das Netzwerk gesendet werden könnten. – Barmar

+0

Was ich denke, dass Sie tun müssen, ist eine Verbindung zu einem einzelnen Port, und senden Sie dann etwas in Ihrem Protokoll, das sagt, ob es SSH oder HTTPS ist, und der Server für Ihr Protokoll wird dann an den entsprechenden Dienst weiterleiten. – Barmar

Antwort

0

Mehr für andere Benutzer diese Frage in Zukunft zu finden:

https://github.com/yrutschle/sslh hat, was Sie brauchen. Ich habe es (noch) nicht benutzt, aber ich habe es geplant. Vom Github site: sslh - A ssl/SSH Multiplexer

sslh akzeptiert Verbindungen auf bestimmte Ports, und leitet sie weiter anhand von Tests an dem ersten Datenpaket von dem entfernten Client gesendet ausgeführt.

Sonden für HTTP, SSL, SSH, OpenVPN, Tinc, XMPP sind implementiert, und jedes andere Protokoll, das mit einem regulären Ausdruck getestet werden kann, kann erkannt werden. Ein typischer Anwendungsfall besteht darin, mehrere Dienste an Port 443 bedienen zu können (z. B. zur Verbindung mit SSH innerhalb einer Unternehmens-Firewall, die Port 443 fast nie blockiert), während HTTPS an diesem Port weiterhin bedient wird.

Daher fungiert sslh als Protokoll Demultiplexer oder eine Schalttafel. Sein Name kommt von seiner ursprünglichen Funktion, SSH und HTTPS auf demselben Port zu dienen.