
Ich habe einen SSH-Server in meinem lokalen Netzwerk laufen, der über die Portweiterleitung meines Routers dem öffentlichen Internet zugänglich ist. Ich habe auch einen Namen für den Host lokal auf meinem Rechner (über etc/hosts
) und remote (über dynamisches DNS) eingerichtet, sagen wir:
ip name
locally 192.168.0.5 myhost
remotely 11.22.33.44 myhost.example.com
Innerhalb meines lokalen Netzwerks kann ich über ssh 192.168.0.5
/ auf den Server zugreifen ssh myhost
und von außerhalb meines Netzwerks über ssh 11.22.33.44
/ ssh myhost.example.com
.
Bis jetzt funktioniert alles einwandfrei. Allerdings ist es etwas umständlich, zwei verschiedene Hostnamen für denselben Server zu verwenden. Ich möchte auf den Server in einemeinheitlicher Weg, d. h. die Verwendung nur einer einzigen IP/eines einzigen Hostnamens, der/die sowohl lokal als auch remote funktioniert.
Gibt es eine einfache Lösung für dieses Problem? Ich verwende macOS, falls das wichtig ist.
Übrigens: Ich kann über die öffentliche IP-Adresse meines Routers nicht aus dem lokalen Netzwerk auf ihn zugreifen.
Antwort1
Da Sie dynamisches DNS eingerichtet haben, müssen Sie keine Änderungen an der Datei /etc/hosts vornehmen.
Für den externen Zugriff würden Sie DNS für die Host-zu-IP-Auflösung verwenden und dasselbe möchten Sie für das lokale Netzwerk.
Die meisten Router unterstützen DNS-Injection. Sie müssen Ihre Routerkonfiguration überprüfen und die IP-Adresse 192.168.0.5 so zuweisen, dass sie demselben dynamischen DNS-Hostnamen entspricht, als käme sie aus einem externen Netzwerk. Wenn Sie sich dann im internen Netzwerk befinden und Ihren Router als DNS-Server verwenden, löst der Router myhost.example.com in eine lokale Adresse auf. Und wenn Sie versuchen, extern darauf zuzugreifen, löst Dynamic DNS seinerseits eine externe IP auf.
Wenn Sie Probleme beim Einrichten Ihres Routers haben, posten Sie Marke und Modell, damit wir prüfen können, ob er die erforderlichen Einstellungen unterstützt.
Antwort2
Wenn Sie nicht in der Lage sind, DNS einzurichten, können Sie mit der SSH-Konfiguration auf Ihrer Box ein paar Spiele spielen. Machen Sie etwas Ähnliches. Zunächst brauchen Sie eine Möglichkeit, um festzustellen, ob Sie sich in Ihrem „Zuhause“ befinden oder nicht. Je nachdem, wohin Sie gehen und wie Sie sich verbinden, lässt sich dies möglicherweise am einfachsten durch Abfragen Ihrer WLAN-SSID erledigen, aber die BSSID oder die Netzwerkkonfigurationen sind für Sie möglicherweise robuster/möglicher. Hier ist ein Beispiel:
MY_SSID="local ssid name"
ssid=`/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep " SSID" | cut -d " " -f 2-`
if [ "$ssid" == "$MY_SSID" ]
then
exit 0
else
exit 1
fi
Nennen Sie dies "at_home" und fügen Sie es in Ihren Pfad ein. Wenn Sie dann davon ausgehen, dass es myserver
normalerweise zur externen Adresse aufgelöst wird, fügen Sie Ihrer SSH- config
Datei eine Strophe ähnlich dieser hinzu, um die interne Adresse zu überschreiben:
Match host myserver exec at_home
Hostname myserver.localname # or "local IP"