Ich glaube, Sie mischen die Bedingungen.
Lastausgleich bedeutet normalerweise, dass Sie sich mit einem Host ( example.com
) verbinden und der Load Balancer alle Verbindungen an einen oder mehrere Backend-Hosts verteilen lässt, normalerweise ohne dass der Benutzer die Kontrolle über den tatsächlichen Host hat, zu dem Sie eine Verbindung herstellen. Dies kann für SSH auf verschiedene Weise leicht durchgeführt werden.
Einige Protokolle, wie beispielsweise HTTP mit dem Host
Header, können dem Load Balancer mehr Informationen geben, um zu entscheiden, zu welchen Back-End-Servern die Verbindung geleitet werden soll (z. B. example.com
wird zu a
und zu b
, während example.org
zu c
und weitergeleitet wird d
).
SSH hat kein solches Feld und kann daher nicht mit einem Lastausgleich und nur einer IP-Adresse ausgeführt werden. Dies macht eine LB für diese Aufgabe ungeeignet.
In der Regel wird dies dadurch gelöst, dass ein Host als SSH-Proxy / Gateway / Jump-Host verwendet wird und Ihre SSH-Clients angewiesen werden, ihn als solche zu verwenden. Wenn Sie OpenSSH verwenden, geben Sie Folgendes in Ihre Kunden ein~/.ssh/config
Host *.internal.lan ProxyCommand ssh -q -A -x proxy.example.com -W %h:%p
Wenn Sie nun eine Verbindung zu den in der Host
Zeile aufgeführten Namen herstellen, stellt Ihr SSH-Client zunächst eine Verbindung her proxy.example.com
(die auf Ihre öffentliche IP-Adresse verweisen muss) und verwendet sie als Gateway, um an den eigentlichen Computer weiterzuleiten (verwenden Sie die NAT-Port-Weiterleitung an Port 22) Ihres aktuellen Proxy-Rechners (falls zutreffend). Beachten Sie, dass proxy.example.com
das Problem behoben werden kann *.internal.lan
. Richten Sie entweder einen DNS-Server ein oder verwenden Sie den internen, von Ihrem Router angebotenen, um dies zu erreichen.
Danach stellen Sie von einem externen Netzwerk aus eine Verbindung zu nas.internal.lan
Ihrem NAS (oder raspi.internal.lan
usw.) her, und von Ihrem lokalen Netzwerk aus nutzen Sie einfach nas
oder raspi
(so ist die Verbindung direkt und nicht über das Gateway).
Eine andere Möglichkeit, angesichts der Tatsache, dass Sie NAT verwenden:
Erstellen Sie Portweiterleitungen in Ihrem NAT-Router, z. B.
Port 2210 -> internal host1, port 22 Port 2211 -> internal host2, port 22
und fügen Sie dann Folgendes in Ihre Kunden ein ~/.ssh/config
:
Host host1.example.com Port 2210 Host host2.example.com Port 2211
host1/2.example.com
Stellen Sie sicher, dass beide auf Ihre externe IP-Adresse verweisen.
Dann können Sie einfach über SSH eine Verbindung herstellen host1.example.com
und OpenSSH stellt eine Verbindung mit Port 2210 her, der vom NAT-Gateway an Ihren internen Host1 weitergeleitet wird.
Beide Methoden funktionieren in Ihrem Szenario.