Docker Hub | GitHub Container Registry | Quay.io
Coturn เป็นการใช้งานเปิดต้นโอเพนซอร์สฟรีของ Turn และ Stun Server Turn Server เป็นเซิร์ฟเวอร์ NAT Traversal Traffic ของ VoIP Media Traversal และเกตเวย์
Linux distros อาจมี Coturn เวอร์ชันซึ่งคุณสามารถติดตั้งได้โดย
apt install coturn turnserver --log-file stdout
หรือเรียกใช้ Coturn โดยใช้คอนเทนเนอร์ 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
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการใช้ Docker Container Docker Readme
Coturn ต้องการการติดตั้งการพึ่งพาก่อน
libevent2
ไม่จำเป็น
OpenSSL (เพื่อรองรับ TLS และ DTLs, stun และ turn ที่ได้รับอนุญาต)
libmicrohttp และ prometheus-client-c (อินเทอร์เฟซ Prometheus)
MySQL (ฐานข้อมูลผู้ใช้)
Hiredis (ฐานข้อมูลผู้ใช้การตรวจสอบ)
SQLite (ฐานข้อมูลผู้ใช้)
PostgreSQL (ฐานข้อมูลผู้ใช้)
git clone [email protected]: coturn/coturn.gitcd coturn ./configure ทำ
สเตจสเป็ค:
RFC 3489 - "คลาสสิก" stun
RFC 5389 - Base "ใหม่" สเป็คสตัน
RFC 5769 - ทดสอบเวกเตอร์สำหรับการทดสอบโปรโตคอล STAN
RFC 5780 - การสนับสนุนการค้นพบพฤติกรรมของ NAT
RFC 7443 - การสนับสนุน ALPN สำหรับ Stun & Turn
RFC 7635 - OAuth Turny Turn/stun อนุญาต
เปลี่ยนสเป็ค:
RFC 5766 - ข้อมูลจำเพาะการเลี้ยวฐาน
RFC 6062 - TCP Relaying Extension
RFC 6156 - ส่วนขยาย IPv6 สำหรับการเลี้ยว
RFC 7443 - การสนับสนุน ALPN สำหรับ Stun & Turn
RFC 7635 - OAuth Turny Turn/stun อนุญาต
การสนับสนุน DTLS (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
Support Mobile Ice (MICE) (http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02)
Turn REST API (http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
ฟิลด์ Origin ในทางกลับกัน (เซิร์ฟเวอร์เทิร์นหลายคน) (https://tools.ietf.org/html/draft-ietf-tram-stun-origin-06)
เปลี่ยนรายละเอียดร่างแบนด์วิดธ์ (http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
Turn-bis (พร้อมการจัดสรรคู่) รายละเอียดร่าง (http://tools.ietf.org/html/draft-ietf-tram-turnbis-04)
น้ำแข็งและรายละเอียดที่เกี่ยวข้อง:
RFC 5245 - น้ำแข็ง
RFC 5768 - ICE - SIP
RFC 6336 - รีจิสทรีน้ำแข็ง - อานาน่า
RFC 6544 - ICE - TCP
RFC 5928 - กลไกความละเอียดเปลี่ยน
การใช้งานสนับสนุนโปรโตคอลไคลเอ็นต์ไปยังเซิร์ฟเวอร์ต่อไปนี้อย่างเต็มที่:
UDP (ต่อ RFC 5766)
TCP (ต่อ RFC 5766 และ RFC 6062)
TLS (ต่อ RFC 5766 และ RFC 6062): รวมถึง TLS1.3; ECDHE ได้รับการสนับสนุน
dtls1.0 และ dtls1.2 (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
SCTP (การใช้งานเชิงทดลอง)
โปรโตคอลรีเลย์:
UDP (ต่อ RFC 5766)
TCP (ต่อ RFC 6062)
ฐานข้อมูลผู้ใช้ (สำหรับที่เก็บผู้ใช้ด้วยรหัสผ่านหรือคีย์หากจำเป็นต้องมีการตรวจสอบสิทธิ์):
sqlite
mysql
PostgreSQL
Redis
MongoDB
อินเทอร์เฟซการจัดการ:
Telnet CLI
อินเตอร์เฟส https
การตรวจสอบ:
Redis สามารถใช้สำหรับสถานะและการจัดเก็บสถิติและการแจ้งเตือน
อินเทอร์เฟซ Prometheus (ไม่สามารถใช้งานได้บนแพ็คเกจ APT)
อัลกอริทึมการย่อยความสมบูรณ์ของข้อความ:
HMAC-Sha1 พร้อมปุ่ม MD5-hashed (ตามที่กำหนดตามมาตรฐานของ Stun และ Turn)
กลไกการตรวจสอบความถูกต้อง:
กลไกการรับรองระยะยาว 'คลาสสิก';
Turn REST API (การปรับเปลี่ยนกลไกระยะยาวสำหรับการตรวจสอบความถูกต้องตามความลับที่ จำกัด เวลาสำหรับแอปพลิเคชัน WEBRTC: http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) ;
ตัวเลือกการอนุญาตไคลเอนต์ที่ใช้ OAUTH ของบุคคลที่สาม
ประสิทธิภาพและการโหลดบาลานซ์:
เมื่อใช้เป็นส่วนหนึ่งของโซลูชันน้ำแข็งสำหรับการเชื่อมต่อ VoIP เซิร์ฟเวอร์เทิร์นนี้สามารถจัดการการโทรพร้อมกันหลายพันสายต่อ CPU (เมื่อใช้โปรโตคอลการเปิด) หรือการโทรนับหมื่นครั้งเมื่อใช้โปรโตคอล STAN เท่านั้น สำหรับความสามารถในการปรับขนาดไม่ จำกัด ได้รูปแบบการปรับสมดุลโหลดสามารถใช้งานได้ โหลดบาลานซ์สามารถนำไปใช้กับเครื่องมือต่อไปนี้ (อย่างใดอย่างหนึ่งหรือการรวมกันของพวกเขา):
DNS SRV ตามการปรับสมดุลการโหลด
กลไกการเลือกเซิร์ฟเวอร์ทางเลือก 300 ครั้ง (ต้องการการสนับสนุนการตอบสนอง 300 ครั้งโดยไคลเอนต์เลี้ยว);
เซิร์ฟเวอร์โหลดเครือข่าย
ข้อ จำกัด แบนด์วิดท์การจราจรและอัลกอริทึมการหลีกเลี่ยงความแออัด
แพลตฟอร์มเป้าหมาย:
Linux (Debian, Ubuntu, Mint, Centos, Fedora, Redhat, Amazon Linux, Arch Linux, OpenSuse)
BSD (FreeBSD, NetBSD, OpenBSD, DragonFLYBSD)
Solaris 11
mac os x
Cygwin (เพื่อวัตถุประสงค์ด้านการวิจัยและพัฒนาที่ไม่ใช่การผลิต)
Windows (Native with, EG, MSVC Toolchain)
โครงการนี้สามารถใช้งานได้สำเร็จบนแพลตฟอร์ม *NIX
อื่น ๆ เช่นกัน แต่ไม่ได้รับการสนับสนุนอย่างเป็นทางการ
การใช้งานควรจะง่ายติดตั้งและกำหนดค่าง่าย โครงการมุ่งเน้นไปที่ประสิทธิภาพความสามารถในการปรับขนาดและความเรียบง่าย จุดมุ่งหมายคือการจัดหาโซลูชันการเลี้ยวระดับองค์กร
เพื่อให้ได้ประสิทธิภาพสูงและความสามารถในการปรับขนาดได้เซิร์ฟเวอร์เทิร์นจะถูกนำไปใช้กับคุณสมบัติดังต่อไปนี้:
ใช้เครือข่ายความแข็งแรงในอุตสาหกรรมที่มีประสิทธิภาพสูง IO Engine libevent2
โมเดลมัลติเธรดแบบมัลติเธรดที่กำหนดค่าได้นำมาใช้เพื่อให้สามารถใช้ทรัพยากร CPU ที่มีอยู่ได้เต็มรูปแบบ (หากระบบปฏิบัติการอนุญาตมัลติเธรด)
สามารถกำหนดค่าที่อยู่การฟังและรีเลย์ได้หลายที่
ใช้โมเดลหน่วยความจำที่มีประสิทธิภาพ
รหัสโครงการเปิดสามารถใช้ในสภาพแวดล้อมเครือข่ายที่เป็นกรรมสิทธิ์ที่กำหนดเอง ในรหัสเทิร์นเซิร์ฟเวอร์จะใช้ API เครือข่ายนามธรรม มีเพียงสองไฟล์ในโครงการเท่านั้นที่จะต้องเขียนใหม่เพื่อปลั๊กอินเซิร์ฟเวอร์เลี้ยวเข้าสู่สภาพแวดล้อมที่เป็นกรรมสิทธิ์ ด้วยโครงการนี้จะมีการใช้งานเฉพาะสำหรับเครือข่าย UNIX/IO API มาตรฐานเท่านั้น แต่ผู้ใช้สามารถใช้สภาพแวดล้อมอื่น ๆ ได้ เดิมรหัสเซิร์ฟเวอร์เทิร์นได้รับการพัฒนาสำหรับสภาพแวดล้อมขององค์กรที่เป็นกรรมสิทธิ์สูงจากนั้นนำไปใช้สำหรับ UNIX Networking API
เซิร์ฟเวอร์เลี้ยวทำงานเป็นกระบวนการพื้นที่ผู้ใช้โดยไม่ต้องกำหนดข้อกำหนดพิเศษใด ๆ ในระบบ
หน้าแรกของโครงการ: https://coturn.github.io/
ที่เก็บ: https://github.com/coturn/coturn/
ตัวติดตามปัญหา: https://github.com/coturn/coturn/issues
Google Group: https://groups.google.com/forum/#! forum/turn-server-project-rfc5766-turn-server