¿Qué causa el mensaje 'Conexión rechazada'?

110

Esta es una pregunta canónica sobre la conexión rechazada

Vemos muchas preguntas al respecto

Cuando intento conectarme a un sistema recibo un mensaje

conexión denegada

Por qué es esto ?

usuario9517
fuente
2
Obtenemos esto mucho en Apache Hadoop, donde a menudo es causado por errores de configuración en el cliente: con qué host hablar, con qué están configuradas sus tablas de DNS o / etc / host, o una falta de coincidencia entre los puertos utilizados por un servicio y que los clientes piensan que debería usar. En consecuencia, tenemos una entrada wiki dedicada sobre el tema. Muchos de los problemas son probables en otros lugares, aunque (con suerte) en menor escala. La depuración de problemas de conexión en un clúster de 1000 nodos no es divertida.
Steve Loughran
Su enlace de entrada wiki dedicado apunta a esta pregunta;)
user9517
1
buena atrapada. Aquí está el enlace oficial: wiki.apache.org/hadoop/ConnectionRefused . Sin embargo, agregaré una referencia cruzada desde allí hasta aquí para ese ciclo completo.
Steve Loughran
@SteveLoughran Artículo genial - un comentario - el enlace de regreso dice Desbordamiento de pila y somos Falla del servidor;)
user9517
hecho. FWIW, ese enlace wiki se agrega a las excepciones ConnectionRefused pasadas en la pila de Hadoop, junto con la información adicional (hosts, puertos) necesaria para resolver lo que va mal. Todavía recibimos muchos informes de errores de personas que ven el seguimiento de la pila y no siguen el enlace a la wiki
Steve Loughran

Respuestas:

118

Nota : Este mensaje es un síntoma del problema que está tratando de resolver. Comprender la causa del mensaje finalmente lo llevará a resolver su problema.

El mensaje 'Conexión rechazada' tiene dos causas principales:

  1. Nada está escuchando en la IP: puerto al que está intentando conectarse.
  2. El puerto está bloqueado por un firewall.

Ningún proceso está escuchando.

Esta es, con mucho, la razón más común para el mensaje. Primero asegúrese de que está intentando conectarse al sistema correcto. Si desea determinar si este es el problema, en el sistema remoto ejecute netstat o ss 1, por ejemplo, si espera que un proceso escuche en el puerto 22222

sudo netstat -tnlp | grep :22222

o

ss -tnlp | grep :22222

Para OSX, un comando adecuado es

sudo netstat -tnlp tcp | grep '\.80 '

Si nada está escuchando, lo anterior no producirá salida. Si ve algún resultado, confirme que es lo que espera, consulte la sección de firewall a continuación.

Si no tiene acceso al sistema remoto y desea confirmar el problema antes de informarlo a los administradores pertinentes, puede usar tcpdump (wireshark o similar).

Cuando se intenta una conexión a un puerto IP: donde nada está escuchando, la respuesta del sistema remoto al paquete SYN inicial es un paquete con los indicadores RST, ACK establecidos. Esto cierra la conexión y provoca el mensaje Conexión rechazada, p. Ej.

$ sudo tcpdump -n host 192.0.2.1 y puerto 22222
tcpdump: salida detallada suprimida, use -v o -vv para
escuchar decodificación de protocolo completo en enp14s0, tipo de enlace EN10MB (Ethernet), tamaño de captura 262144 bytes

12: 31: 27.013976 IP 192.0.2.2.34390> 192.0.2.1.22222: Banderas [S] , seq 1207858804, win 29200, opciones [mss 1460, sackOK, TS val 15306344 ecr 0, nop, wscale 7], longitud 0

12: 31: 27.020162 IP 192.0.2.1.22222> 192.0.2.2.34390: Flags [R.] , seq 0, ack 1207858805, win 0, length 0

Tenga en cuenta que tcpdump usa a . para representar la bandera ACK .

El puerto está bloqueado por un firewall

Si el puerto está bloqueado por un cortafuegos y el cortafuegos se ha configurado para responder con icmp-port-unreachableesto, también provocará un mensaje de conexión rechazada. De nuevo, puede ver esto con tcpdump (o similar)

$ sudo tcpdump -n icmp
tcpdump: salida detallada suprimida, use -v o -vv para la decodificación completa del protocolo

escuchando enpp14s0, tipo de enlace EN10MB (Ethernet), tamaño de captura 262144 bytes 13: 03: 24.149897 IP 192.0.2.1> 192.0. 2.2: ICMP 192.0.2.1 tcp puerto 22222 inalcanzable, longitud 68

Tenga en cuenta que esto también nos dice dónde está el firewall de bloqueo.


Entonces, ahora que sabe qué está causando el mensaje Conexión rechazada, debe tomar las medidas apropiadas, por ejemplo, contacte al administrador del firewall o investigue el motivo por el cual el proceso no está escuchando.

1 Es probable que haya otras herramientas disponibles.

usuario9517
fuente
2
Versión ELI5: significa que la solicitud de conexión llegó a la otra computadora, y la otra computadora no tenía idea de lo que estaba hablando.
immibis
"Ningún proceso está escuchando". La razón principal ...!
Samitha Chathuranga
En mi caso, algo estaba escuchando ... pero en un nodo diferente al que estaba intentando conectarme. Ups
ijoseph
1
@ijoseph Entonces nada estaba escuchando.
user9517
5

Para mí en Debian 6 squeeze fue tan simple como verificar el servicio SSH :

sudo service ssh status

Y al no encontrar nada (con el mensaje ssh: unrecognized service) simplemente instalando el servicio :

sudo apt-get install openssh-server

Esto también funciona si no está obteniendo una conexión SFTP, ya que SFTP es un subconjunto de SSH (mientras que FTPS es un subconjunto de FTP).

SharpC
fuente