Guía de Solución: Error de Conexión de Telegram (ETIMEDOUT/ENETUNREACH) en OpenClaw
Esta guía detalla el proceso de diagnóstico y solución para un problema de red persistente que afectaba la capacidad de OpenClaw para enviar mensajes a Telegram, aunque sí podía recibirlos.
1. Síntoma
- El agente OpenClaw (Rox) recibe mensajes de Telegram sin problemas.
- Las respuestas del agente no llegan al cliente de Telegram.
- No hay errores obvios en la interfaz principal, la comunicación entrante parece funcionar.
2. Proceso de Diagnóstico
El objetivo del diagnóstico fue aislar la causa del fallo en la comunicación de salida.
Paso 2.1: Revisar los Registros
El primer paso fue consultar los registros de OpenClaw para buscar errores relacionados con Telegram.
# Comando para ver los últimos 20 registros relacionados con "telegram"grep -i "telegram" /tmp/openclaw/openclaw-$(date +%F).log | tail -n 20Resultado: Se encontró un error recurrente de tipo WARN (advertencia):
fetch fallback: enabling sticky IPv4-only dispatcher (codes=ETIMEDOUT,ENETUNREACH)ETIMEDOUT: La conexión expiró por tiempo de espera.ENETUNREACH: La red de destino era inalcanzable.
Esto apuntaba a un problema de red o de resolución de DNS.
Paso 2.2: Descartar un Fallo de Red General
Para confirmar que no era un problema de la conexión a internet de la máquina, se realizó una prueba de conexión directa a la API de Telegram usando curl.
# Se obtuvo el Bot Token del archivo de configuración ~/.openclaw/openclaw.jsoncurl -v https://api.telegram.org/bot<TU_BOT_TOKEN_AQUI>/getMeResultado: El comando curl funcionó perfectamente, devolviendo un HTTP/2 200 OK y una respuesta JSON válida.
Conclusión clave: La máquina SÍ tenía conexión a internet y podía alcanzar los servidores de Telegram. Por lo tanto, el problema estaba aislado al entorno de software de OpenClaw/Node.js.
Paso 2.3: Investigar la Configuración DNS del Sistema
La hipótesis se centró en un problema de resolución de DNS específico de Node.js, probablemente relacionado con un mal manejo de registros IPv6. Para investigarlo, se revisó la configuración de DNS del sistema.
cat /etc/resolv.confResultado: El servidor de nombres era 127.0.0.53. Esto indicó que el sistema estaba usando un intermediario local para las consultas DNS: el servicio systemd-resolved.
Paso 2.4: Identificar al Culpable
Para ver qué servidores DNS estaba usando realmente systemd-resolved, se ejecutó el siguiente comando:
resolvectl statusResultado: Se confirmó que systemd-resolved estaba activo y que utilizaba servidores DNS públicos y válidos (ej. 8.8.8.8).
Conclusión Final del Diagnóstico: El único punto de fallo restante era el propio servicio systemd-resolved, que actuaba como un intermediario defectuoso entre Node.js y los servidores DNS funcionales, causando los timeouts.
3. Solución (Permanente)
La solución consiste en evitar por completo el servicio systemd-resolved, reconfigurando el sistema para que todas las aplicaciones usen directamente un servidor DNS público.
Paso 3.1: Reconfigurar el DNS del Sistema
Estos comandos requieren permisos de administrador (sudo).
- Eliminar el archivo
resolv.confdinámico (que es un enlace simbólico):Terminal window sudo rm /etc/resolv.conf - Crear un nuevo archivo
resolv.confestático apuntando a un DNS público (ej. Google):Terminal window echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
Paso 3.2: Deshabilitar el Servicio systemd-resolved
Para asegurar que el intermediario no vuelva a activarse.
- Deshabilitar el servicio para que no inicie en el arranque:
Terminal window sudo systemctl disable systemd-resolved.service - Detener el servicio activo:
Terminal window sudo systemctl stop systemd-resolved.service
Paso 3.3: Reiniciar los Servicios
Para que todo el sistema adopte la nueva configuración de red.
- Reiniciar el servicio de red principal (el nombre puede variar):
Terminal window # Para sistemas modernos como Ubuntu 20.04+sudo systemctl restart NetworkManager.service# Para sistemas más antiguos (ej. Debian)# sudo systemctl restart networking.service - Reiniciar el gateway de OpenClaw para que corra en segundo plano con la nueva configuración:
Terminal window openclaw gateway restart
4. Verificación
Tras aplicar la solución, se envió un mensaje de prueba desde Telegram al agente. El agente pudo recibirlo y, lo más importante, su respuesta llegó correctamente al cliente de Telegram, confirmando que la comunicación bidireccional fue completamente restaurada.