¿Qué hace que ssh devuelva Network is down?

Estoy intentando, sin éxito, conectarme a un servidor ssh de red local desde macOS haciendo:

$ ssh user@1111:ab1:123:ab1:011b:12bc:ab12:1a2b

y luego obtengo:

ssh: connect to host 1111:ab1:123:ab1:011b:12bc:ab12:1a2b port 22: Network is down

De hecho, puedo conectarme a ese servidor desde la aplicación de iPhone Termius (y también hay otras razones para pensar que el lado del servidor está bien), así que creo que hay un problema en el lado del cliente. Probé esa misma aplicación en macOS sin éxito.

Además, ssh a una máquina virtual funciona bien, así como a un servidor aws de amazon.

También probé detallado:

$ ssh user@1111:ab1:123:ab1:011b:12bc:ab12:1a2b -vvv
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 1111:ab1:123:ab1:011b:12bc:ab12:1a2b port 22.
ssh: connect to host 1111:ab1:123:ab1:011b:12bc:ab12:1a2b port 22: Network is down

Y IPV6:

$ ssh -6 -vvv user@1111:ab1:123:ab1:011b:12bc:ab12:1a2b
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 1111:ab1:123:ab1:011b:12bc:ab12:1a2b port 22.
ssh: connect to host 1111:ab1:123:ab1:011b:12bc:ab12:1a2b port 22: Network is down

Y hacer ping:

$ ping 1111:ab1:123:ab1:011b:12bc:ab12:1a2b
ping: cannot resolve 1111:ab1:123:ab1:011b:12bc:ab12:1a2b: Unknown host

¿Qué podría estar causando el Network is down? ¿Cómo debo depurar esto?

Respuestas (1)

SSH es solo el mensajero, y es probable que llame strerror(3)o sea equivalente en un código de salida incorrecto de alguna llamada de socket:

$ find /usr/include -name "*.h" -exec grep 'Network is down' {} +
/usr/include/apr-1/apr_errno.h:#define SOCENETDOWN             (SOCBASEERR+50)            /* Network is down */
/usr/include/sys/errno.h:#define        ENETDOWN        50              /* Network is down */
$ 

Si buscamos en las páginas del manual del sistema, ENETDOWNaparecerá documentación...

$ find /usr/share/man -type f -exec grep -l ENETDOWN {} +
/usr/share/man/man2/connect.2
/usr/share/man/man2/connectx.2
/usr/share/man/man2/intro.2
/usr/share/man/man2/send.2
...

Aunque no mucho como connect(2)o intro(2)simplemente indicar

 [ENETDOWN]         The local network interface is not functioning.
...
 50 ENETDOWN Network is down.  A socket operation encountered a dead net-
         work.

¿Funciona IPv6 en este host? Probablemente necesitará depurar con ping6(no ping) y tal vez verificar la configuración de IPv6 a través de alguna interfaz clicky o en su lugar ifconfigy netstat -rn.

Para evitar la GUI, la configuración de red para IPv6 se puede ajustar con algo como

sudo ipconfig set en0 AUTOMATIC-V6

vea el ipconfig(8)manual para más detalles.

ping6: UDP connect: No route to host
Entiendo. IPV6 estaba Offen System Preferences> Network> Advanced> TCP/IP. Cambiado autoy solucionado!