Docker Hub | Registro de contenedores de GitHub | Muelle.io
Coturn es una implementación gratuita de código abierto de Turn and Stun Server. El servidor Turn es un servidor y puerta de enlace de Traversal Nat de tráfico VoIP.
Las distribuciones de Linux pueden tener una versión de Coturn que puede instalar por
apt install coturn turnserver --log-file stdout
O ejecute Coturn usando 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
Vea más detalles sobre el uso de Docker Container Docker Readme
Coturn requiere que las siguientes dependencias se instalen primero
libevent2
Opcional
OpenSSL (para admitir TLS y DTLS, aturdimiento y giro autorizado)
Libmicrohttp y Prometheus-Client-C (interfaz Prometheus)
MySQL (base de datos de usuarios)
Contratado (base de datos de usuarios, monitoreo)
SQLite (base de datos de usuarios)
PostgreSQL (base de datos de usuarios)
Git clone [email protected]: Coturn/Coturn.gitcd Coturn ./configure hacer
Especificaciones de aturdimiento:
RFC 3489 - Stun "clásico"
RFC 5389 - Especificaciones de aturdimiento "nuevas" base
RFC 5769 - Vectores de prueba para pruebas de protocolo de Stun
RFC 5780 - Soporte de descubrimiento de comportamiento NAT
RFC 7443 - Soporte ALPN para Stun & Turn
RFC 7635 - Autorización de Turn/Stun de terceros de OAUTH
ESPECCIONES DE GUERRES:
RFC 5766 - Especificaciones de giro base
RFC 6062 - Extensión de giro de retransmisión de TCP
RFC 6156 - Extensión IPv6 para turno
RFC 7443 - Soporte ALPN para Stun & Turn
RFC 7635 - Autorización de Turn/Stun de terceros de OAUTH
Soporte DTLS (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
Soporte de hielo móvil (ratones) (http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02)
Gire REST API (http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
Campo de origen a su vez (servidor de giro multi-Tenant) (https://tools.ietf.org/html/draft-ietf-tram-stun-origin-06)
Gire las especificaciones del draft de ancho de banda (http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
Bisil de turno (con dual asignación) ESPECIDADES DE ENCENDIDO (http://tools.ietf.org/html/draft-ietf-tram-turnbis-04)
Hielo y especificaciones relacionadas:
RFC 5245 - ICE
RFC 5768 - ICE - SIP
RFC 6336 - Registro ICE - AIA
RFC 6544 - ICE - TCP
RFC 5928 - Mecanismo de resolución de giro
La implementación admite plenamente los siguientes protocolos de cliente a servidor:
UDP (por RFC 5766)
TCP (por RFC 5766 y RFC 6062)
TLS (por RFC 5766 y RFC 6062): incluyendo TLS1.3; Ecdhe es compatible.
Dtls1.0 y dtls1.2 (http://tools.ietf.org/html/draft-petithuguenin-tram-thntls-00)
SCTP (implementación experimental).
Protocolos de retransmisión:
UDP (por RFC 5766)
TCP (por RFC 6062)
Bases de datos de usuarios (para repositorio de usuarios, con contraseñas o claves, si se requiere autenticación):
Sqlite
Mysql
Postgresql
Rehacer
Mongodb
Interfaces de gestión:
Telnet CLI
Interfaz HTTPS
Escucha:
Redis se puede utilizar para el almacenamiento y notificación de estado y estadísticas
Interfaz Prometheus (no disponible en el paquete APT)
Algoritmos de digestión de integridad de mensajes:
HMAC-SHA1, con claves molidas con MD5 (como lo requieren los estándares de aturdimiento y giro)
Gire los mecanismos de autenticación:
Mecanismo de credenciales a largo plazo 'clásico';
API REST de giro (una modificación del mecanismo a largo plazo, para la autenticación basada en el tiempo limitada en secreto, para aplicaciones WEBRTC: http://tools.ietf.org/html/draft-ubberti-behave-tourn-rest-00) ;
Opción experimental de autorización del cliente de terceros basada en OAuth;
Balanceo de rendimiento y carga:
Cuando se usa como parte de una solución de hielo, para la conectividad VoIP, este servidor de giro puede manejar miles de llamadas simultáneas por CPU (cuando se usa el protocolo de giro) o decenas de miles de llamadas cuando solo se usa un protocolo Stun. Para la escalabilidad prácticamente ilimitada se puede usar un esquema de equilibrio de carga. El equilibrio de carga se puede implementar con las siguientes herramientas (una o una combinación de ellas):
Balancio de carga basado en DNS SRV;
Mecanismo de servidor alternativo 300 incorporado (requiere un soporte de respuesta 300 por parte del cliente Turn);
Servidor de balancer de carga de red.
Limitación de ancho de banda de tráfico y algoritmos de evitación de congestión implementados.
Plataformas objetivo:
Linux (Debian, Ubuntu, Mint, Centos, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSuse)
BSD (FreeBSD, NetBSD, OpenBSD, Dragonflybsd)
Solaris 11
Mac OS X
Cygwin (para fines de I + D de no producción)
Windows (nativo con, por ejemplo, MSVC Toolchain)
Este proyecto también se puede utilizar con éxito en otras plataformas *NIX
, pero eso no es oficialmente compatible.
Se supone que la implementación es simple, fácil de instalar y configurar. El proyecto se centra en el rendimiento, la escalabilidad y la simplicidad. El objetivo es proporcionar una solución de giro de grado empresarial.
Para lograr un alto rendimiento y escalabilidad, el servidor Turn se implementa con las siguientes características:
Se utiliza el motor IO del motor IO de red industrial de alto rendimiento LibEvent2
Modelo configurable de múltiples subprocesos implementado para permitir el uso completo de los recursos de CPU disponibles (si el sistema operativo permite el múltiple subproceso)
Se pueden configurar múltiples direcciones de escucha y relé
Modelo de memoria eficiente utilizado
El código de proyecto Turn se puede utilizar en un entorno de red de propiedad personalizada. En el código del servidor Turn, se utiliza una API de red abstracta. Solo los archivos de pareja en el proyecto deben reescribirse para enchufar el servidor convertir en un entorno propietario. Con este proyecto, solo se proporciona implementación para la API estándar de redes UNIX/IO, pero el usuario puede implementar cualquier otro entorno. El código del servidor Turn se desarrolló originalmente para un entorno corporativo propietario de alto rendimiento, luego se adoptó para la API de redes UNIX
El servidor de giro funciona como un proceso de espacio de usuario, sin imponer ningún requisito especial en el sistema
Página de inicio del proyecto: https://coturn.github.io/
Repositorio: https://github.com/coturn/coturn/
Tracker de emisión: https://github.com/coturn/coturn/issues
Google Group: https://groups.google.com/forum/#!forum/turn-server-project-rfc5766-trurn-server