BookinglyTech News
Infraestructura

Problemas comunes al auto‑alojar un servidor TURN con coturn

Cuando configuras coturn por ti mismo, las fallas suelen ser silenciosas y difíciles de detectar. Este artículo revisa los síntomas más frecuentes, sus causas y las correcciones prácticas.

2 min de lecturaDev.to0 vistas

El primer artículo de la serie abordó los problemas internos del código, el segundo las capas subyacentes y ahora examinamos el relé, el último eslabón que suele romperse sin que el error sea evidente.

¿Cuándo está el TURN involucrado?

Para saber si el problema es el relé, inspecciona el tipo de candidato en 'chrome://webrtc-internals' o 'about:webrtc' y verifica si el candidato seleccionado es 'relay'. Si no lo es, el fallo está en la configuración de ICE y no en coturn. Si sí es relay, fuerza el uso de relay con 'iceTransportPolicy: 'relay'' y comprueba la conexión.

Fallos comunes y sus señales

  1. El servicio parece arrancar pero no funciona – 'systemctl start coturn' devuelve éxito, 'systemctl status' indica activo, pero no se abren puertos. En Debian/Ubuntu el paquete incluye '/etc/default/coturn' con 'TURNSERVER_ENABLED' comentado; habilitarlo y reiniciar soluciona el problema. Asegúrate de que coturn lea el 'turnserver.conf' correcto y que el proceso esté vinculando a los puertos 3478/5349.

  2. El candidato relé muestra una dirección privada – En una VM de nube el servidor anuncia la IP interna (10.x o 172.16–31.x). Configura 'external-ip' y 'relay-ip' en el formato externa / interna. Solo la dirección pública debe quedar visible a los clientes.

  3. La asignación de puerto funciona, pero no llega la señal – coturn reserva puertos de 49152 a 65535 para RTP. Si el firewall de la nube o el host bloquea UDP en ese rango, el flujo de medios se pierde. Abre el rango completo en el grupo de seguridad y en ufw/iptables. No limites el rango por “seguridad”; cada cliente ocupa un puerto.

Herramientas de diagnóstico

  • 'ss -lunp | grep -E '3478|5349'' para comprobar puertos.
  • 'journalctl -u coturn -n 50 --no-pager' para ver mensajes de arranque.
  • 'curl http://localhost:3478' es inútil; TURN no es HTTP.

Por qué importa

Un relé mal configurado oculta problemas subyacentes y provoca sesiones ICE bloqueadas sin mensajes claros. Al detectar y corregir estos síntomas, tu infraestructura WebRTC gana fiabilidad y menor tiempo de resolución de incidentes.

Enlaces útiles

lowlatencykit.com