Docker Hub | Registre des conteneurs GitHub | Quay.io
Coturn est une implémentation Open Source gratuite de Turn and Stun Stern. Le serveur Turn est un serveur de traversée NAT de trafic VOIP et une passerelle.
Linux Distros peut avoir une version de Coturn que vous pouvez installer par
apt install coturn turnserver --log-file stdout
Ou exécutez COTURN à l'aide de Docker Container:
docker run -d -p 3478:3478 -p 3478:3478/udp -p 5349:5349 -p 5349:5349/udp -p 49152-65535:49152-65535/udp coturn/coturn
Voir plus de détails sur l'utilisation de Docker Container Docker Readme
Coturn exige que les dépendances suivantes soient d'abord installées
libevent2
Facultatif
OpenSSL (pour prendre en charge TLS et DTLS, Autorisé Stun and Turn)
libmicrohttp et prometheus-client-c (interface prometheus)
MySQL (base de données utilisateur)
Hiredis (base de données utilisateur, surveillance)
SQLITE (base de données utilisateur)
PostgreSQL (base de données utilisateur)
git clone [email protected]: coturn / coturn.gitcd coturn ./configure faire
Spécifications Stun:
RFC 3489 - "classique"
RFC 5389 - Base "Nouvelles"
RFC 5769 - Vecteurs de test pour les tests de protocole STOM
RFC 5780 - Nat Behavior Discovery Support
RFC 7443 - Prise en charge de l'ALPN pour Stun & Turn
RFC 7635 - Autorisation de virage tiers OAuth
Tourne les spécifications:
RFC 5766 - spécifications de virage de base
RFC 6062 - Extension de virage de relais TCP
RFC 6156 - Extension IPv6 pour le virage
RFC 7443 - Prise en charge de l'ALPN pour Stun & Turn
RFC 7635 - Autorisation de virage tiers OAuth
Support DTLS (http://tools.ietf.org/html/draft-pethiduguenin-tram-linn-dtls-00)
Support de glace mobile (souris) (http://tools.ietf.org/html/draft-wing-tram-purn-mobility-02)
API TORT REST (http://tools.ietf.org/html/Draft-Uberti-Behave-Turn-Rest-00)
Champ d'origine à son tour (serveur de virage multi-locataire) (https://tools.ietf.org/html/draft-ietf-tam-stun-origin-06)
Tournez les spécifications du projet de bande passante (http://tools.ietf.org/html/draft-thomson-tam-purn-bandwidth-01)
Turn-Bis (avec double allocation) Draft Specs (http://tools.ietf.org/html/draft-ietf-tam-turnbis-04)
Glace et spécifications connexes:
RFC 5245 - glace
RFC 5768 - ICE - SIP
RFC 6336 - Registre ICE - INIA
RFC 6544 - ICE - TCP
RFC 5928 - Mécanisme de résolution de virage
La mise en œuvre prend entièrement en charge les protocoles de client-serveur suivant:
UDP (par RFC 5766)
TCP (par RFC 5766 et RFC 6062)
TLS (par RFC 5766 et RFC 6062): y compris TLS1.3; ECDHE est soutenu.
DTLS1.0 et DTLS1.2 (http://tools.ietf.org/html/draft-pethiduguenin-tram-turn-dtls-00)
SCTP (implémentation expérimentale).
Protocoles de relais:
UDP (par RFC 5766)
TCP (par RFC 6062)
Bases de données utilisateur (pour le référentiel utilisateur, avec des mots de passe ou des clés, si l'authentification est requise):
Sqlite
Mysql
Postgresql
Redis
Mongodb
Interfaces de gestion:
CLI Telnet
Interface HTTPS
Surveillance:
Redis peut être utilisé pour le stockage et la notification des statistiques et des statistiques
Interface Prométhée (indisponible sur le package APT)
Algorithmes de digestion d'intégrité des messages:
HMAC-SHA1, avec des clés MD5-Hashed (comme l'exige les normes Stun and Turn)
Tourner les mécanismes d'authentification:
Mécanisme de références à long terme «classique»;
API Turn REST (une modification du mécanisme à long terme, pour l'authentification secrète limitée dans le temps, pour les applications de WebBrtc: http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) ;
Option d'autorisation client de la clientèle basée sur un tiers expérimental;
Performances et équilibrage de charge:
Lorsqu'elle est utilisée dans le cadre d'une solution de glace, pour la connectivité VoIP, ce serveur de virage peut gérer des milliers d'appels simultanés par CPU (lorsque le protocole de virage est utilisé) ou des dizaines de milliers d'appels lorsque seul le protocole d'étourdissement est utilisé. Pour une évolutivité pratiquement illimitée, un schéma d'équilibrage de charge peut être utilisé. L'équilibrage de la charge peut être mis en œuvre avec les outils suivants (soit l'un ou une combinaison d'entre eux):
Équilibrage de charge basé sur DNS SRV;
Mécanisme de serveur alternatif 300 intégré (nécessite un support de réponse 300 par le client Turn);
serveur de chargeur de charge réseau.
Limitation de bande passante et algorithmes d'évitement de la congestion mis en œuvre.
Plates-formes cibles:
Linux (Debian, Ubuntu, Mint, Centos, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSUSE)
BSD (FreeBSD, NetBSD, OpenBSD, DragonFlyBSD)
Solaris 11
Mac OS X
Cygwin (à des fins de R&D sans production)
Windows (natif avec, par exemple, chaîne d'outils MSVC)
Ce projet peut également être utilisé avec succès sur d'autres plates-formes *NIX
, mais ce n'est pas officiellement soutenu.
L'implémentation est censée être simple, facile à installer et à configurer. Le projet se concentre sur les performances, l'évolutivité et la simplicité. L'objectif est de fournir une solution de virage de qualité d'entreprise.
Pour atteindre des performances et une évolutivité élevées, le serveur de virage est implémenté avec les fonctionnalités suivantes:
Réseau industriel haute performance IO Engine LibeVent2 est utilisé
Modèle multi-threading configurable implémenté pour permettre une utilisation complète des ressources CPU disponibles (si le système d'exploitation permet le multi-threading)
Plusieurs adresses d'écoute et de relais peuvent être configurées
Modèle de mémoire efficace utilisé
Le code de projet Turn peut être utilisé dans un environnement de réseautage propriétaire personnalisé. Dans le code de serveur Turn, une API de mise en réseau abstraite est utilisée. Seuls les fichiers de couple du projet doivent être réécrits pour brancher le serveur de virage en un environnement propriétaire. Avec ce projet, seule l'implémentation pour l'API standard UNIX Networking / IO est fournie, mais l'utilisateur peut implémenter n'importe quel autre environnement. Le code de serveur de virage a été initialement développé pour un environnement d'entreprise propriétaire haute performance, puis adopté pour API de réseautage UNIX
Le serveur Turn fonctionne comme un processus d'espace utilisateur, sans imposer aucune exigence particulière au système
Page d'accueil du projet: https://coturn.github.io/
Référentiel: https://github.com/coturn/coturn/
Tracker de numéro: https://github.com/coturn/coturn/issues
Google Group: https://groups.google.com/forum/#!forum/turn-server-project-rfc5766-turn-server