578 palabras
3 minutos
Guía de Solución: Error de Conexión de Telegram (ETIMEDOUT/ENETUNREACH) en OpenClaw

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.

Terminal window
# Comando para ver los últimos 20 registros relacionados con "telegram"
grep -i "telegram" /tmp/openclaw/openclaw-$(date +%F).log | tail -n 20

Resultado: 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.

Terminal window
# Se obtuvo el Bot Token del archivo de configuración ~/.openclaw/openclaw.json
curl -v https://api.telegram.org/bot<TU_BOT_TOKEN_AQUI>/getMe

Resultado: 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.

Terminal window
cat /etc/resolv.conf

Resultado: 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:

Terminal window
resolvectl status

Resultado: 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).

  1. Eliminar el archivo resolv.conf dinámico (que es un enlace simbólico):
    Terminal window
    sudo rm /etc/resolv.conf
  2. Crear un nuevo archivo resolv.conf está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.

  1. Deshabilitar el servicio para que no inicie en el arranque:
    Terminal window
    sudo systemctl disable systemd-resolved.service
  2. 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.

  1. 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
  2. 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.

Guía de Solución: Error de Conexión de Telegram (ETIMEDOUT/ENETUNREACH) en OpenClaw
https://fuwari.vercel.app/posts/01-telegram_fix_guide/
Autor
Adrián
Publicado el
2026-03-28
Licencia
CC BY-NC-SA 4.0