TURN

Un serveur TURN fiabilise les connexions WebRTC lorsque la liaison directe entre le client et l’agent Reemo ne peut pas s’établir. Il sert de relais média : le flux audio/vidéo et les données transitent par le serveur plutôt qu’en pair à pair.

Le serveur TURN de Reemo s’appuie sur coturn, qui assure à la fois les fonctions STUN et TURN : un seul service couvre les deux rôles. Ce composant est optionnel et n’est pas déployé par défaut.

À quoi sert TURN

Une connexion WebRTC tente d’abord d’établir le chemin le plus direct possible entre les deux pairs, à l’aide du protocole ICE :

  • Connexion directe : les deux pairs communiquent en pair à pair, sans intermédiaire.

  • STUN : aide chaque pair à découvrir son adresse publique pour franchir un NAT simple.

  • TURN : relaie l’intégralité du flux quand aucun chemin direct n’est possible.

coturn répond aux requêtes STUN comme TURN : le même serveur couvre les deux étapes.

Dans la plupart des réseaux, STUN suffit. Certains contextes empêchent toutefois toute liaison directe :

  • NAT symétrique côté client ou côté agent.

  • Pare-feu d’entreprise bloquant le trafic UDP ou les flux pair à pair.

  • Politiques réseau n’autorisant que le trafic sortant vers des ports standards (443).

Dans ces situations, le serveur TURN fournit un point de passage de repli : le flux WebRTC est relayé par le serveur, ce qui garantit l’établissement de la session au prix d’une consommation de bande passante sur le relais.

Deux façons d’utiliser TURN dans Reemo

  • Serveur TURN déployé par le rôle reemo-infra : le rôle installe et configure coturn (STUN + TURN) dans votre infrastructure. Voir Serveur TURN.

  • Serveurs TURN déclarés depuis l’interface : vous pouvez renseigner des serveurs TURN existants depuis la Zone d’administration, qu’ils soient auto-hébergés par vos soins ou fournis par un service tiers (par exemple Cloudflare), puis les assigner à des organisations. Voir Relais TURN.

Important

Les serveurs TURN renseignés dans l’inventaire (rôle reemo-infra ou variables API_TURN*) prévalent sur ceux configurés manuellement dans l’interface et assignés aux organisations. Pour laisser le choix du TURN aux organisations depuis l’interface, ne renseignez pas de TURN dans l’inventaire.

Authentification

Quel que soit le mode de mise en place, l’API distribue aux clients les identifiants nécessaires pour s’authentifier auprès du relais, qui valide ensuite ces identifiants avant de relayer le flux.

Deux modes d’authentification sont disponibles :

  • secret (recommandé) : identifiants éphémères à durée de vie limitée, dérivés d’un secret partagé (HMAC). Le secret n’est jamais transmis au client.

  • static : identifiants fixes, composés d’un nom d’utilisateur et d’un mot de passe, identiques pour tous les clients.

Modes de déploiement

Lorsqu’il est déployé par le rôle reemo-infra, le serveur TURN peut être installé de deux manières :

  • Colocalisé : le relais tourne sur le même cluster que l’environnement INFRA. Simple à mettre en place, adapté aux petits déploiements.

  • Dédié : le relais tourne sur des machines dédiées (groupe d’inventaire turn_manager), sur un Swarm distinct. Recommandé lorsque le trafic relayé est important ou doit être isolé du cœur de la plateforme.

Jusqu’à deux serveurs TURN peuvent être déclarés pour assurer la redondance.

Voir aussi

Serveur TURN — Options Ansible pour activer et configurer le serveur TURN.