Hub Docker | Registry Kontainer GitHub | Quay.io
Coturn adalah implementasi open source gratis dari server Turn dan STUN. Turn Server adalah Lalu Lintas Media VoIP Nat Traversal Server dan Gateway.
Distro Linux mungkin memiliki versi Coturn yang dapat Anda instal
apt install coturn turnserver --log-file stdout
Atau jalankan Coturn menggunakan 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
Lihat detail lebih lanjut tentang menggunakan Docker Container Docker ReadMe
Coturn mensyaratkan dependensi berikut untuk diinstal terlebih dahulu
libevent2
Opsional
OpenSSL (untuk mendukung TLS dan DTL, setrum dan putaran)
libmicrohttp dan prometheus-client-c (antarmuka prometheus)
MySQL (database pengguna)
Hiredis (database pengguna, pemantauan)
Sqlite (database pengguna)
PostgreSQL (database pengguna)
git clone [email protected]: coturn/coturn.gitcd coturn ./configure membuat
Spesifikasi setrum:
RFC 3489 - setrum "klasik"
RFC 5389 - basis "baru" setrum spesifikasi
RFC 5769 - Vektor uji untuk pengujian protokol setrum
RFC 5780 - Dukungan Penemuan Perilaku NAT
RFC 7443 - Dukungan ALPN untuk Stun & Turn
RFC 7635 - OAuth Otorisasi Pihak Ketiga/Stun
Turns Specs:
RFC 5766 - spesifikasi belokan dasar
RFC 6062 - TCP Relaying Turn Extension
RFC 6156 - Ekstensi IPv6 untuk giliran
RFC 7443 - Dukungan ALPN untuk Stun & Turn
RFC 7635 - OAuth Otorisasi Pihak Ketiga/Stun
Dukungan DTLS (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
Dukungan Es Mobile (tikus) (http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02)
Turn REST API (http://tools.ietf.org/html/draft-uberbu-behave-turn-rest-00)
Bidang Asal pada gilirannya (Multi-Tenant Turn Server) (https://tools.ietf.org/html/draft-ietf-tram-stun-origin-06)
Turns Bandwidth Draft Specs (http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
Turn-bis (dengan alokasi ganda) Draf spesifikasi (http://tools.ietf.org/html/draft-ietf-tram-turnbis-04)
Es dan spesifikasi terkait:
RFC 5245 - ICE
RFC 5768 - ICE - SIP
RFC 6336 - Registry ICE -AIANA
RFC 6544 - ICE - TCP
RFC 5928 - Mekanisme Resolusi Putar
Implementasi sepenuhnya mendukung protokol klien-ke-turn-server berikut:
UDP (per RFC 5766)
TCP (per RFC 5766 dan RFC 6062)
TLS (per RFC 5766 dan RFC 6062): termasuk TLS1.3; ECDHE didukung.
Dtls1.0 dan dtls1.2 (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
SCTP (Implementasi Eksperimental).
Protokol relay:
UDP (per RFC 5766)
TCP (per RFC 6062)
Basis data pengguna (untuk repositori pengguna, dengan kata sandi atau kunci, jika diperlukan otentikasi):
Sqlite
Mysql
PostgreSQL
Redis
Mongodb
Antarmuka manajemen:
telnet cli
Antarmuka https
Pemantauan:
Redis dapat digunakan untuk penyimpanan dan pemberitahuan status dan statistik
Antarmuka Prometheus (tidak tersedia pada paket APT)
Algoritma Digest Integritas Pesan:
HMAC-SHA1, dengan kunci yang dipukul MD5 (seperti yang dipersyaratkan oleh Stun dan Turn Standards)
Putar mekanisme otentikasi:
Mekanisme kredensial jangka panjang 'klasik';
Turn REST API (modifikasi mekanisme jangka panjang, untuk otentikasi berbasis rahasia yang dibatasi waktu, untuk aplikasi WebRTC: http://tools.ietf.org/html/draft-ububti-behave-turn-rest-00) ;
opsi otorisasi klien pihak ketiga eksperimental yang berbasis di pihak ketiga;
Kinerja dan penyeimbangan beban:
Ketika digunakan sebagai bagian dari solusi ICE, untuk konektivitas VoIP, server turn ini dapat menangani ribuan panggilan simultan per CPU (ketika protokol belokan digunakan) atau puluhan ribu panggilan ketika hanya protokol setrum yang digunakan. Untuk skalabilitas yang hampir tidak terbatas, skema penyeimbangan beban dapat digunakan. Balancing beban dapat diimplementasikan dengan alat -alat berikut (baik atau kombinasi dari mereka):
Penyeimbangan beban berbasis DNS SRV;
300 mekanisme server alternatif bawaan (membutuhkan 300 dukungan respons oleh klien Turn);
Server Load-Balancer Network.
Keterbatasan bandwidth lalu lintas dan algoritma penghindaran kemacetan diimplementasikan.
Platform Target:
Linux (Debian, Ubuntu, Mint, Centos, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSUSE)
BSD (FreeBSD, NetBSD, OpenBSD, DragonflyBSD)
Solaris 11
Mac OS X.
Cygwin (untuk tujuan R&D non-produksi)
Windows (asli dengan, misalnya, msvc toolchain)
Proyek ini dapat berhasil digunakan pada platform *NIX
lainnya juga, tetapi itu tidak didukung secara resmi.
Implementasi seharusnya sederhana, mudah diinstal dan dikonfigurasi. Proyek ini berfokus pada kinerja, skalabilitas, dan kesederhanaan. Tujuannya adalah untuk memberikan solusi belok tingkat perusahaan.
Untuk mencapai kinerja tinggi dan skalabilitas, server Turn diimplementasikan dengan fitur -fitur berikut:
Jaringan industri berkekuatan tinggi IO engine libevent2 digunakan
Model multi-threading yang dapat dikonfigurasi diimplementasikan untuk memungkinkan penggunaan penuh sumber daya CPU yang tersedia (jika OS memungkinkan multi-threading)
Berbagai alamat mendengarkan dan relai dapat dikonfigurasi
Model memori yang efisien digunakan
Kode Proyek Turn dapat digunakan dalam lingkungan jaringan berpemilik khusus. Dalam kode Turn Server, API jaringan abstrak digunakan. Hanya pasangan file dalam proyek yang harus ditulis ulang untuk plug-in server Turn ke lingkungan berpemilik. Dengan proyek ini, hanya implementasi untuk Jaringan UNIX standar/API IO disediakan, tetapi pengguna dapat menerapkan lingkungan lain. Kode server turn awalnya dikembangkan untuk lingkungan korporat berpemilik berkinerja tinggi, kemudian diadopsi untuk API jaringan UNIX
Turn Server berfungsi sebagai proses ruang pengguna, tanpa memaksakan persyaratan khusus pada sistem
Homepage Proyek: https://coturn.github.io/
Repositori: https://github.com/coturn/coturn/
Tracker masalah: https://github.com/coturn/coturn/issues
Google Group: https://groups.google.com/forum/#!forum/turn-server-project-rfc5766-turn-server