Docker Hub | Registro de contêineres do Github | Quay.io
Coturn é uma implementação gratuita de código aberto do servidor Turn and Sun. O servidor Turn é um servidor e gateway de travessal de tráfego de mídia VoIP e gateway.
As distritos Linux podem ter uma versão de Coturn que você pode instalar
apt install coturn turnserver --log-file stdout
Ou execute coturn usando o contêiner do docker:
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
Veja mais detalhes sobre o uso do Docker Container Docker Readme
Coturn exige que as dependências seguintes sejam instaladas primeiro
libevent2
Opcional
OpenSSL (para apoiar o TLS e o DTLS, atordoamento autorizado e turno)
Libmicrohttp e Prometheus-Client-C (interface Prometheus)
MySQL (banco de dados do usuário)
Hiredis (banco de dados do usuário, monitoramento)
Sqlite (banco de dados do usuário)
PostGresql (banco de dados do usuário)
git clone [email protected]: coturn/coturn.gitcd coturn ./configure fazer
Especificações de atordoamento:
RFC 3489 - atordoamento "clássico"
RFC 5389 - BASE "NOVAS" especificações de atordoamento
RFC 5769 - Vetores de teste para testes de protocolo de atordoamento
RFC 5780 - Suporte de descoberta de comportamento NAT
RFC 7443 - Suporte ALPN para atordoamento e curva
RFC 7635 - Autorização de turnos/atordoamento de terceiros OAuth
Turn Specs:
RFC 5766 - Especificações de curva de base
RFC 6062 - Extensão de Turn TCP retransmitindo
RFC 6156 - Extensão IPv6 para Turn
RFC 7443 - Suporte ALPN para atordoamento e curva
RFC 7635 - Autorização de turnos/atordoamento de terceiros OAuth
Suporte ao DTLS (http://tools.ietf.org/html/draft-pecituguenin-tram-turn-dtls-00)
Suporte para gelo móvel (ratos) (http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02)
Vire API REST (http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
Campo de origem por sua vez (servidor de Turn Multi-Tenant) (https://tools.ietf.org/html/draft-ietf-tram-stun-origin-06)
Turn Fandwidth Draft Specs (http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
Especificações de rascunho de Turn-Bis (com alocação dupla) (http://tools.ietf.org/html/draft-ietf-tram-turnbis-04)
Gelo e especificações relacionadas:
RFC 5245 - gelo
RFC 5768 - ICE - SIP
RFC 6336 - Registro de gelo - iana
RFC 6544 - ICE - TCP
RFC 5928 - Mecanismo de resolução de giro
A implementação suporta totalmente os seguintes protocolos de cliente para servidor:
UDP (por RFC 5766)
TCP (por RFC 5766 e RFC 6062)
TLS (por RFC 5766 e RFC 6062): incluindo TLS1.3; Ecdhe é suportado.
Dtls1.0 e dtls1.2 (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
SCTP (implementação experimental).
Protocolos de retransmissão:
UDP (por RFC 5766)
TCP (por RFC 6062)
Banco de dados do usuário (para repositório de usuários, com senhas ou chaves, se for necessária autenticação):
Sqlite
Mysql
PostgreSQL
Redis
MongoDB
Interfaces de gerenciamento:
Telnet CLI
Interface HTTPS
Monitoramento:
Redis pode ser usado para armazenamento e notificação de status e estatística
Interface Prometheus (indisponível no pacote APT)
Algoritmos de digestão de integridade de mensagem:
HMAC-SHA1, com teclas de md5 (conforme exigido pelos padrões de atordoamento e giro)
Mecanismos de autenticação de Turn:
mecanismo de credenciais de longo prazo 'clássico';
Vire a API REST (uma modificação do mecanismo de longo prazo, para autenticação baseada em segredo com tempo limitado, para aplicativos WebRTC: http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) ;
opção experimental de autorização de clientes baseada em terceiros da OAuth;
Desempenho e balanceamento de carga:
Quando usado como parte de uma solução de gelo, para a conectividade VoIP, este servidor de turno pode lidar com milhares de chamadas simultâneas por CPU (quando o protocolo Turn é usado) ou dezenas de milhares de chamadas quando apenas o protocolo atordoado é usado. Para escalabilidade praticamente ilimitada, um esquema de balanceamento de carga pode ser usado. O balanceamento de carga pode ser implementado com as seguintes ferramentas (uma ou uma combinação deles):
Balanceamento de carga baseado em DNS SRV;
300 mecanismo de servidor alternativo interno (requer 300 suporte de resposta pelo cliente Turn);
Servidor de carga-balanceador de rede.
Limitação de largura de banda de tráfego e algoritmos de prevenção de congestionamentos implementados.
Plataformas de destino:
Linux (Debian, Ubuntu, Mint, Centos, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSUSE)
BSD (FreeBSD, NetBSD, OpenBSD, Dragonflybsd)
Solaris 11
Mac OS X.
Cygwin (para fins de P&D não produtiva)
Windows (nativo com, por exemplo, MSVC Toolchain)
Este projeto também pode ser usado com sucesso em outras plataformas *NIX
, mas isso não é oficialmente suportado.
A implementação deve ser simples, fácil de instalar e configurar. O projeto se concentra no desempenho, escalabilidade e simplicidade. O objetivo é fornecer uma solução de giro de grau corporativo.
Para obter alto desempenho e escalabilidade, o servidor de Turn é implementado com os seguintes recursos:
Rede de resistência industrial de alto desempenho
Modelo de múltiplas threading configurável implementado para permitir o uso total dos recursos da CPU disponíveis (se o SO permitir um multi-threading)
Vários endereços de escuta e relé podem ser configurados
Modelo de memória eficiente usado
O código do projeto Turn pode ser usado em um ambiente de rede proprietário personalizado. No código do servidor Turn, uma API de rede abstrata é usada. Apenas os arquivos de casal no projeto devem ser reescritos para conectar o servidor Turn a um ambiente proprietário. Com este projeto, é fornecida apenas implementação para a API padrão de rede UNIX/IO, mas o usuário pode implementar qualquer outro ambiente. O código do servidor Turn foi originalmente desenvolvido para um ambiente corporativo proprietário de alto desempenho e depois adotado para a API de rede Unix
O servidor Turn funciona como um processo espacial do usuário, sem impor nenhum requisito especial ao sistema
Página inicial do projeto: https://coturn.github.io/
Repositório: https://github.com/coturn/coturn/
Rastreador de edição: https://github.com/coturn/coturn/issues
Grupo do Google: https://groups.google.com/forum/#!forum/turn-sherver-project-rfc5766-turn-sever