Docker Hub | Github 컨테이너 레지스트리 | quay.io
Coturn은 Turn 및 Stun Server의 무료 오픈 소스 구현입니다. Turn Server는 VoIP 미디어 트래픽 NAT Traversal Server 및 Gateway입니다.
Linux 배포판에는 Coturn 버전이있을 수 있습니다.
apt install coturn turnserver --log-file stdout
또는 Docker 컨테이너를 사용하여 Coturn을 실행하십시오.
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, 승인 된 기절 및 회전 지원)
Libmicrohttp 및 Prometheus-Client-C (Prometheus Interface)
MySQL (사용자 데이터베이스)
Hiredis (사용자 데이터베이스, 모니터링)
sqlite (사용자 데이터베이스)
PostgreSQL (사용자 데이터베이스)
git clone [email protected] : coturn/coturn.gitcd coturn ./configure 만들다
기절 사양 :
RFC 3489- "클래식"기절
RFC 5389- 기본 "새로운"기절 사양
RFC 5769- 스턴 프로토콜 테스트를위한 테스트 벡터
RFC 5780- NAT 행동 발견 지원
RFC 7443 -Stun & Turn에 대한 ALPN 지원
RFC 7635 -OAUTH 타사 회전/기절 인증
사양 회전 :
RFC 5766- 기본 회전 사양
RFC 6062- TCP 릴레이 회전 연장
RFC 6156- 회전을위한 IPv6 확장
RFC 7443 -Stun & Turn에 대한 ALPN 지원
RFC 7635 -OAUTH 타사 회전/기절 인증
DTLS 지원 (http://tools.ietf.org/html/draft-petithuguenin-tram-turn-dtls-00)
Mobile Ice (마우스)지지 (http://tools.ietf.org/html/draft-wing-tram-turn-mobility-02)
REST API (http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
원래 필드 (다중 테넌트 회전 서버) (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 - 얼음 - 시프
RFC 6336 - ICE – iANA 레지스트리
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
레 디스
Mongodb
관리 인터페이스 :
텔넷 CLI
HTTPS 인터페이스
모니터링 :
Redis는 상태 및 통계 저장 및 알림에 사용될 수 있습니다.
프로 메테우스 인터페이스 (APT 패키지에서 사용할 수 없음)
메시지 무결성 다이제스트 알고리즘 :
HMAC-SHA1, MD5 하시 키가있는 (Stun and Turn 표준에 따라 필요한대로)
인증 메커니즘 전환 :
'클래식'장기 자격 증명 메커니즘;
REST API (WEBRTC 응용 프로그램에 대한 시간 제한 비밀 기반 인증을위한 장기 메커니즘의 수정 : http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) ;
실험적 제 3 자 OAUTH 기반 클라이언트 승인 옵션;
성능 및로드 밸런싱 :
VoIP 연결을 위해 ICE 솔루션의 일부로 사용될 때이 턴 서버는 CPU 당 수천 개의 동시 호출 (턴 프로토콜이 사용될 때) 또는 스틱 프로토콜 만 사용될 때 수만 통화를 처리 할 수 있습니다. 사실상 무제한 확장 성을 위해로드 밸런싱 체계를 사용할 수 있습니다. 로드 밸런싱은 다음 도구 (하나 또는 조합)로 구현할 수 있습니다.
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 (비 생산 R & D 목적)
Windows (기본, 예 : MSVC 툴체인)
이 프로젝트는 다른 *NIX
플랫폼에서도 성공적으로 사용될 수 있지만 공식적으로 지원되지는 않습니다.
구현은 간단하고 설치가 쉽고 구성해야합니다. 이 프로젝트는 성능, 확장 성 및 단순성에 중점을 둡니다. 목표는 엔터프라이즈 등급 회전 솔루션을 제공하는 것입니다.
고성능 및 확장 성을 달성하기 위해 Turn 서버는 다음과 같은 기능으로 구현됩니다.
고성능 산업 강도 네트워크 IO 엔진 Libevent2가 사용됩니다
사용 가능한 CPU 리소스의 전체 사용을 허용하기 위해 구현 된 구성 가능한 멀티 스레딩 모델 (OS가 멀티 스레딩을 허용하는 경우)
다중 청취 및 릴레이 주소를 구성 할 수 있습니다
사용 된 효율적인 메모리 모델
턴 프로젝트 코드는 사용자 정의 독점 네트워킹 환경에서 사용할 수 있습니다. Turn Server 코드에는 추상 네트워킹 API가 사용됩니다. 턴 서버를 독점 환경으로 플러그인하기 위해 프로젝트의 몇 가지 파일 만 다시 작성해야합니다. 이 프로젝트를 사용하면 Standard UNIX 네트워킹/IO API에 대한 구현 만 제공되지만 사용자는 다른 환경을 구현할 수 있습니다. Turn Server 코드는 원래 고성능 독점 기업 환경을 위해 개발 된 다음 UNIX Networking API에 채택되었습니다.
Turn Server는 시스템에 특별한 요구 사항을 부과하지 않고 사용자 공간 프로세스로 작동합니다.
프로젝트 홈페이지 : https://coturn.github.io/
저장소 : https://github.com/coturn/coturn/
문제 추적기 : https://github.com/coturn/coturn/issues
Google 그룹 : https://groups.google.com/forum/# !forum/turn-server-project-rfc5766-turn-server