Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

coturn

Configuration

Voir coturn.conf.

Utilisateurs

coturn permet de définir des utilisateurs dans une base de données. C'est ce qui était fait à l'origine dans ce rôle, avec un utilisateur par application.

Mais en fait, pour que ça fonctionne, il faudrait un utilisateur par utilisateur réel. Nexcloud Talk, par exemple, explique que pour un utilisateur global à l'application :

As the global TURN credentials are sent to each participant in a call (registered and anonymous), everybody could (ab-)use the credentials to create other connections through the TURN server from other services.

Au final, l'approche est d'utiliser un secret global côté serveur d'application, qui lui se charge de distribuer (en gros) des identifiants temporaires. Cette approche n'est pas normalisée, c'est un draft IETF, mais largement utilisée car implémentée dans coturn qui fait référence et bien adaptée à WebRTC/ICE.

To retrieve a new set of credentials, the client [e.g. Nexcloud Talk] makes a HTTP GET request, specifying TURN as the service to allocate credentials for, and optionally specifying a user id parameter. The purpose of the user id parameter is to simplify debugging on the TURN server, as well as provide the ability to control the number of credentials handed out for a specific user, if desired. The TURN credentials and their lifetime are returned as JSON, along with URIs that indicate how to connect to the server using the TURN protocol.

Firewall

Il doit ouvrir en UDP la plage de ports 49152 → 65535 (c'est sur cette plage qu'un port aléatoire servira pour faire relai entre les clients, en cas de dernier recours), et en TCP 3478 et 5349.

Tests

Utiliser Trickle ICE, proposé par le projet WebRTC.

On testera la version "en clair" (le flux est chiffré dans tous les cas) et la version TLS. Les deux ports marchent pour les deux types, mais par convention on utilisera turns:<domain>:5349 pour indiquer, au moins aux humains, le chiffrement.

Laisser l'utilisateur vide et mettre le secret global en mot de passe (voir vault de l'hôte). Il faut ensuite cliquer sur Gather candidates et attendre que le test termine.

Tester ensuite sur une application, par exemple Nextcloud Talk.

Backups

Il y a bien une base de données mais elle est pleine d'utilisateurs « jetables », ça ne vaut a priori pas le coup.