Docker Hub | GitHub Container Registrierung | Quay.io
Coturn ist eine kostenlose Open -Source -Implementierung von Turn and Stun Server. Der Turn -Server ist ein VoIP -Medienverkehr NAT -Traversal -Server und Gateway.
Linux -Distributiere haben möglicherweise eine Version von Cotbrand, die Sie installieren können
apt install coturn turnserver --log-file stdout
Oder führen Sie Cotbrand mit Docker -Container aus:
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
Weitere Informationen zur Verwendung von Docker Container Docker Readme finden Sie
Die Cotbrand erfordert, zuerst die folgenden Abhängigkeiten zu installieren
libevent2
Optional
OpenSSL (zur Unterstützung von TLS und DTLs, autorisierte Betäubung und Turn)
libmicrohttp und prometheus-client-c (Prometheus-Schnittstelle)
MySQL (Benutzerdatenbank)
Hiredis (Benutzerdatenbank, Überwachung)
SQLite (Benutzerdatenbank)
PostgreSQL (Benutzerdatenbank)
git klone [email protected]: coturn/coturn.gitcd coturn ./konfigurieren machen
Betäubungsspezifikationen:
RFC 3489 - "Classic" Stun
RFC 5389 - Basis "neue" Stun -Spezifikationen
RFC 5769 - Testvektoren für Stun -Protokoll -Tests
RFC 5780 - NAT -Verhaltensbekämpfungsunterstützung
RFC 7443 - ALPN -Unterstützung für Stun & Turn
RFC 7635 - OAuth Drittanbieter Turn/Stun -Autorisierung
Spezifikationen drehen:
RFC 5766 - Basis -Turn -Spezifikationen
RFC 6062 - TCP -Relais -Kurve Erweiterung
RFC 6156 - IPv6 -Erweiterung für Turn
RFC 7443 - ALPN -Unterstützung für Stun & Turn
RFC 7635 - OAuth Drittanbieter Turn/Stun -Autorisierung
DTLS Support (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
Support für mobile Eis (Mäuse) (http://tools.ietf.org/html/draft-wing-tram--mobility-02)
REST-API (http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
Origin-Feld wiederum (Multi-Tenant-Turn-Server) (https://tools.ietf.org/html/draft-ietf-stun-origin-06)
Turn Bandwidth-Entwurfsspezifikationen (http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
Turn-BIS (mit Dual Allocation) Entwurfsspezifikationen (http://tools.ietf.org/html/draft-ietf-tram--turnbis-04)
Eis und verwandte Spezifikationen:
RFC 5245 - Eis
RFC 5768 - ICE -SIP
RFC 6336 - ICE -IANA -Register
RFC 6544 - ICE -TCP
RFC 5928 - Mechanismus zur Auflösung von Drehauflösung
Die Implementierung unterstützt die folgenden Protokolle für Client-zu-Turn-Server-Server vollständig:
UDP (pro RFC 5766)
TCP (pro RFC 5766 und RFC 6062)
TLS (pro RFC 5766 und RFC 6062): einschließlich TLS1.3; ECDHE wird unterstützt.
Dtls1.0 und dtls1.2 (http://tools.ietf.org/html/draft-petithuguenin-tram---dtls-00)
SCTP (Experimentelle Implementierung).
Staffelprotokolle:
UDP (pro RFC 5766)
TCP (pro RFC 6062)
Benutzerdatenbanken (für das User -Repository mit Kennwörtern oder Tasten, falls eine Authentifizierung erforderlich ist):
Sqlite
Mysql
PostgreSQL
Redis
MongoDb
Management -Schnittstellen:
Telnet Cli
HTTPS -Schnittstelle
Überwachung:
Redis kann zur Speicherung und Benachrichtigung von Statistiken und Statistiken verwendet werden
Prometheus -Schnittstelle (nicht verfügbar im APT -Paket)
Message Integrity Digest Algorithmen:
HMAC-SHA1 mit MD5-Hashed-Tasten (wie von Betäubung und Drehstandards erforderlich)
Authentifizierungsmechanismen drehen:
"Klassiker" langfristiger Mechanismus;
REST-API drehen (eine Modifikation des langfristigen Mechanismus für zeitlich begrenzte geheime Authentifizierung für WEBRTC-Anwendungen: http://tools.ietf.org/html/draft-uberti-behave-turn-st-00) ;
experimentelle OATH-Basis-Kundenautorisierungsoption von Drittanbietern;
Leistung und Lastausgleich:
Wenn dieser Turn -Server als Teil einer Eislösung verwendet wird, kann er für die VoIP -Konnektivität Tausende gleichzeitige Aufrufe pro CPU (wenn das Turn -Protokoll verwendet wird) oder Zehntausende Anrufe verarbeiten, wenn nur ein Stun -Protokoll verwendet wird. Für eine praktisch unbegrenzte Skalierbarkeit kann ein Lastausgleichsschema verwendet werden. Der Lastausgleich kann mit den folgenden Tools (entweder eine oder eine Kombination davon) implementiert werden:
DNS SRV -Basis -Lastausgleich;
Eingebauter 300-alternatischer Server-Mechanismus (erfordert 300 Antwortunterstützung durch den Turn-Client);
Netzwerk-Last-Balancer-Server.
Verkehrsbandbreitenbeschränkung und Überlastungsvermeidungsalgorithmen implementiert.
Zielplattformen:
Linux (Debian, Ubuntu, Mint, Centos, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSuse)
BSD (FreeBSD, NetBSD, OpenBSD, DragonflyBsd)
Solaris 11
Mac OS X
Cygwin (für F & E-Zwecke nicht-produktionieren)
Windows (nativ mit, z. B. MSVC Toolchain)
Dieses Projekt kann auch auf anderen *NIX
-Plattformen erfolgreich verwendet werden, aber das wird nicht offiziell unterstützt.
Die Implementierung soll einfach, einfach zu installieren und zu konfigurieren sein. Das Projekt konzentriert sich auf Leistung, Skalierbarkeit und Einfachheit. Ziel ist es, eine Drehlösung für Unternehmensqualität bereitzustellen.
Um eine hohe Leistung und Skalierbarkeit zu erzielen, wird der Turn -Server mit den folgenden Funktionen implementiert:
Hochleistungs-Netzwerk-Netzwerk-Netzwerk IO Engine libvent2 wird verwendet
Konfigurierbares Multi-Threading-Modell implementiert, um die vollständige Verwendung der verfügbaren CPU-Ressourcen zu ermöglichen (wenn OS Multi-Threading ermöglicht)
Mehrere Hör- und Relaisadressen können konfiguriert werden
Effizientes Speichermodell verwendet
Der Turn -Projektcode kann in einer benutzerdefinierten proprietären Netzwerkumgebung verwendet werden. Im Turn -Server -Code wird eine abstrakte Netzwerk -API verwendet. Nur Paardateien im Projekt müssen umgeschrieben werden, um den Turn-Server in eine proprietäre Umgebung zu stecken. Mit diesem Projekt wird nur eine Implementierung für Standard -UNIX -Networking/IO -API zur Verfügung gestellt, aber der Benutzer kann jede andere Umgebung implementieren. Der Turn-Server-Code wurde ursprünglich für eine leistungsstarke proprietäre Unternehmensumgebung entwickelt und dann für die UNIX-Networking-API übernommen
Der Turn -Server arbeitet als Benutzerraumprozess, ohne spezielle Anforderungen an das System aufzuerlegen
Projekt Homepage: https://coturn.github.io/
Repository: https://github.com/coturn/coturn/
Issue Tracker: https://github.com/coturn/coturn/issues
Google Group: https://groups.google.com/forum/#!forum/turn-server-project-crfc5766---Server