Introducción al Error 'Connection Refused' en Linux
Uno de los problemas más frecuentes al administrar servidores o estaciones de trabajo en Linux es encontrarse con el mensaje Connection refused al intentar conectar a un puerto o servicio específico. Este error indica que la máquina destino ha recibido la solicitud de conexión, pero ha rechazado activamente establecerla, impidiendo el acceso a la aplicación deseada.
Causas Principales del Error
Las razones por las cuales Linux rechaza una conexión suelen estar relacionadas con el estado del servicio o la configuración de red. Entre las causas más comunes destacan:
- El servicio o aplicación no está en ejecución en el puerto indicado.
- El cortafuegos (Firewall) está bloqueando el tráfico entrante o saliente en ese puerto.
- El servicio está configurado para escuchar únicamente en la interfaz local (localhost/127.0.0.1) en lugar de aceptar conexiones externas.
Método 1: Verificar el Estado del Servicio y los Puertos en Escucha
El primer paso para solucionar el problema es comprobar si realmente hay un programa escuchando en el puerto que intentas alcanzar.
- Abre tu terminal de Linux.
- Ejecuta el siguiente comando para listar los puertos activos y los servicios asociados:
sudo netstat -tulpn
(O si prefieres utilizar herramientas modernas):sudo ss -tulpn - Busca el número de puerto en la lista y verifica que el estado sea
LISTENy que esté asociado al proceso correcto. - Si el servicio está detenido, inícialo con systemctl, por ejemplo:
sudo systemctl start nginx
Método 2: Comprobar y Configurar el Cortafuegos (UFW o Firewalld)
Si el servicio está activo pero la conexión sigue siendo rechazada desde el exterior, es muy probable que el cortafuegos esté bloqueando el acceso.
- Si utilizas UFW (Ubuntu/Debian), verifica su estado con:
sudo ufw status - Si el cortafuegos está activo y necesitas permitir el tráfico en un puerto específico (por ejemplo, el puerto 80), ejecuta:
sudo ufw allow 80/tcp - Si utilizas CentOS o RHEL con Firewalld, abre el puerto permanentemente con:
sudo firewall-cmd --permanent --add-port=80/tcpsudo firewall-cmd --reload
Método 3: Revisar el Archivo de Configuración del Servicio
Muchos servicios de red limitan su acceso por motivos de seguridad. Si estás intentando acceder a una base de datos o servidor web desde otra máquina y obtienes el error, es posible que esté configurado para aceptar peticiones exclusivamente en 127.0.0.1.
- Localiza el archivo de configuración de tu aplicación (por ejemplo,
/etc/mysql/mysql.conf.d/mysqld.cnf). - Busca la directiva de dirección de escucha, comúnmente llamada
bind-addressoListenAddress. - Cambia el valor de
127.0.0.1a0.0.0.0para permitir conexiones desde cualquier IP (asegúrate de mantener medidas de seguridad adicionales). - Guarda los cambios y reinicia el servicio para aplicar la nueva configuración:
sudo systemctl restart mysql