¿Cómo acceder al host de forma local y remota de forma unificada?

¿Cómo acceder al host de forma local y remota de forma unificada?

Tengo un servidor SSH ejecutándose en mi red local que está expuesto a la Internet pública a través del reenvío de puertos de mi enrutador. También configuré un nombre para el host localmente en mi máquina (a través de etc/hosts) y de forma remota (a través de DNS dinámico), digamos:

            ip            name
locally     192.168.0.5   myhost
remotely    11.22.33.44   myhost.example.com

Desde mi red local, puedo acceder al servidor a través de ssh 192.168.0.5/ ssh myhosty desde fuera de mi red puedo acceder a él a través de ssh 11.22.33.44/ ssh myhost.example.com.

Hasta ese punto, todo funciona bien. Sin embargo, utilizar dos nombres de host diferentes para el mismo servidor es un poco engorroso. Me gustaría acceder al servidor en unmanera unificada, es decir, utilizando solo una única IP/nombre de host que funcione tanto de forma local como remota.

¿Existe una solución fácil a este problema? Estoy en macOS si eso importa.

Por cierto: no puedo acceder a mi enrutador desde la red local usando su IP pública.

Respuesta1

Dado que tiene configurado DNS dinámico, no necesita realizar cambios en el archivo /etc/hosts.

Para el acceso externo, usaría DNS para la resolución de host a IP y desea lo mismo para la red local.

La mayoría de los enrutadores admiten la inyección de DNS. Debe verificar la configuración de su enrutador y asignar la dirección IP 192.168.0.5 para que corresponda al mismo nombre de host de DNS dinámico como si fuera de una red externa. Luego, cuando esté en la red interna y utilice su enrutador como servidor DNS, el enrutador resolverá myhost.example.com en la dirección local. Y cuando salga e intente acceder externamente, el DNS dinámico tomará su turno para resolverse en una IP externa.

Si tiene problemas para configurar su enrutador, publique la marca y el modelo para que podamos ver si admite las configuraciones requeridas.

Respuesta2

Si no tuvieras la capacidad de configurar el DNS, podrías jugar algunos juegos con la configuración SSH en tu caja y hacer algo similar. Primero necesitarías una forma de detectar si estás en tu "casa" o no. Dependiendo de dónde vaya y cómo se conecte, esto se puede hacer más fácilmente sondeando su SSID wifi, pero el BSSID o las configuraciones de red pueden ser más sólidos/posibles para usted. Aquí hay una muestra:

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

Llámalo "at_home" y ponlo en tu camino. Luego, suponiendo que myservernormalmente se resuelve en la dirección externa, agregue una estrofa a su configarchivo ssh similar a esta para anular la dirección interna:

Match host myserver exec at_home
    Hostname myserver.localname # or "local IP"

información relacionada