TURN Server: bu nədir, necə işləyir və harada istifadə olunur

Müəllif: IT Sectr Dərc olunub: 2026-06-02 Oxuma vaxtı: 8 dəq

TURN Server — bu, iki peer arasında birbaşa P2P əlaqəsi mümkün olmadıqda media trafikini ötürən Traversal Using Relays around NAT protokolunun serveridir. IETF RFC 5766, 2010-a görə, TURN serveri WebRTC-nin ICE prosesində son ehtiyat (fallback) rolunu oynayır, hətta Symmetric NAT və korporativ firewall-lar olduqda belə zəmanətli əlaqəni təmin edir.

Başlıca

  • TURN Server — NAT vasitəsilə birbaşa P2P əlaqəsi mümkün olmadıqda peer-lər arasında media məlumatlarını ötürən rele serveridir.
  • Prinsip — hər bir peer TURN serverinə məlumat göndərir, o da onları digər peerə ötürərək kommunikasiyada vasitəçi rolunu oynayır.
  • ICE-də rolu — TURN, birbaşa əlaqə (host və server reflexive namizədləri) cəhdlərinin hamısı uğursuz olduqda aktivləşir.
  • Çatışmazlıq — TURN əlavə gecikmə və server yükü yaradır, çünki bütün trafik rele üzərindən keçir.
  • Təhlükəsizlik — TURN autentifikasiyanı (username, credential, realm) və ötürülən məlumatların qorunması üçün TLS şifrələməsini dəstəkləyir.

TURN Server nədir

TURN Server (Traversal Using Relays around NAT) — bu, RFC 5766-da müəyyən edilmiş və RFC 8656-da yenilənmiş şəbəkə xidmətidir, NAT və ya firewall məhdudiyyətləri səbəbindən birbaşa P2P əlaqəsi mümkün olmadıqda iki müştəri arasında UDP və TCP trafikini ötürür. WebRTC arxitekturasında TURN serveri istənilən şəbəkə şəraitində əlaqəni təmin edən son ehtiyat mexanizmi kimi çıxış edir.

STUN-dan fərqli olaraq, sadəcə müştəriyə onun xarici ünvanını bildirən, TURN serveri məlumat ötürülməsində aktiv iştirak edir. Hər bir peer TURN serveri ilə əlaqə qurur və media məlumatlarını ona göndərir. TURN serveri öz növbəsində bu məlumatları digər peerə yönləndirir. Nəticədə peer-lər arasında birbaşa əlaqə yoxdur — bütün trafik rele serverindən keçir, bu da ən sərt NAT məhdudiyyətlərində belə çatdırılmanı təmin edir.

TURN protokolu

TURN STUN protokolunun genişləndirilməsidir. TURN mesajları eyni 20 baytlıq başlıqdan və atribut mexanizmindən istifadə edir. Əsas fərq ondadır ki, TURN rele alokasiyalarını idarə etmək üçün yeni mesaj növləri (Allocate, Refresh, Send, Data, CreatePermission, ChannelBind) və atributlar müəyyən edir. Müştəri Allocate mesajı vasitəsilə TURN serverində alokasiya yaradır, rele ünvanını (relayed transport address) alır və ondan server vasitəsilə məlumat göndərmək və qəbul etmək üçün istifadə edir.

TURN serveri necə işləyir

TURN serveri aşağıdakı addımlar ardıcıllığı ilə işləyir. Müştəri autentifikasiya ilə (username, credential) Allocate Request göndərir. Server hesab məlumatlarını yoxlayır və alokasiya — rele ünvanının (TURN serverində IP:port) müştəriyə müvəqqəti bağlanmasını yaradır. Server relayed transport address ilə Allocate Response qaytarır — digər peer-lərin bu müştəriyə TURN serveri vasitəsilə məlumat göndərmək üçün istifadə edəcəyi ünvan.

Alokasiya yaradıldıqdan sonra müştəri Send Indication mesajları və ya kanallar (ChannelBind) vasitəsilə TURN serveri üzərindən məlumat göndərə bilər. Müştəridən məlumat alındıqda TURN serveri icazələri (permissions) yoxlayır və məlumatları hədəf peerə ötürür. Daxil olan məlumatları qəbul etmək üçün müştəri əvvəlcə məlumat gözlədiyi peer üçün icazə yaratmalıdır, əks halda TURN serveri daxil olan paketi rədd edəcək. İcazə peer-in IP ünvanını göstərən CreatePermission mesajı vasitəsilə yaradılır.

Alokasiya və ömür müddəti

TURN serverində alokasiyanın məhdud ömür müddəti var — standart olaraq 10 dəqiqə. Müştəri alokasiyanı uzatmaq üçün dövri olaraq Refresh Request göndərməlidir. Ömür müddəti LIFETIME atributunda saniyələrlə göstərilir. Refresh olmadıqda server alokasiyanı silir və rele ünvanını azad edir. Tövsiyə edilən yeniləmə intervalı Refresh paketlərinin itkisindən qorunmaq üçün 5 dəqiqə (300 saniyə)dir.

TURN serverinin WebRTC-də konfiqurasiyası

WebRTC-də TURN serveri RTCPeerConnection konfiqurasiyasında iceServers massivində konfiqurasiya edilir. TURN serverləri həm UDP, həm də TCP və ya TLS transportundan istifadə edə bilər. Autentifikasiya üçün adətən tətbiq serverində yaradılan və vaxt məhdudiyyəti olan müvəqqəti hesab məlumatları (TURN credentials) istifadə olunur.

JavaScript-də HMAC-SHA1 tokeni ilə TURN serverinin konfiqurasiya nümunəsinə baxaq.

js
async function createPeerConnection(turnServerUrl) {
    const credentials = await fetchTurnCredentials();

    const config = {
        iceServers: [
            {
                urls: "stun:stun.l.google.com:19302"
            },
            {
                urls: turnServerUrl,
                username: credentials.username,
                credential: credentials.credential
            }
        ],
        iceTransportPolicy: "all"
    };

    return new RTCPeerConnection(config);
}

async function fetchTurnCredentials() {
    const response = await fetch("/api/turn-credentials");
    return response.json();
}

const turnUrl = "turn:turn.example.com:3478";
const pc = await createPeerConnection(turnUrl);

Bu nümunədə TURN serveri STUN serveri ilə birlikdə vahid ICE konfiqurasiyasında göstərilir. ICE prosesi əvvəlcə host namizədlərindən və STUN-dan alınan srflx namizədlərindən istifadə etməyə çalışacaq. Birbaşa əlaqə uğursuz olarsa, ICE avtomatik olaraq TURN serverindən alınan rele namizədinə keçəcək. iceTransportPolicy: "all" parametri rele namizədlərinə icazə verir — alternativ "relay" dəyəri TURN-dan başqa bütün namizədləri qadağan edir, bu da test etmək üçün faydalıdır.

TURN serverinin autentifikasiyası

Qeyri-icazəli istifadənin qarşısını almaq üçün TURN serveri autentifikasiya tələb edir. Standart yanaşma — tətbiq serverində HMAC-SHA1 istifadə edilərək yaradılan müvəqqəti hesab məlumatlarıdır (time-limited credentials). Tətbiq serveri istifadəçi adını TURN serverinin gizli açarı ilə şifrələyir və müştəriyə istifadəçi adı və etimadnamə qaytarır. Müştəri onları RTCPeerConnection konfiqurasiyasına ötürür, brauzer isə onları TURN serverində alokasiya yaradarkən istifadə edir. Hesab məlumatlarının müddəti bitdikdə müştəri tətbiq serverindən yenilərini alır.

TURN vs STUN: müqayisə

TURN və STUN NAT keçidi ilə bağlı oxşar vəzifələri həll edir, lakin mexanizm və dəyər baxımından əsaslı şəkildə fərqlənir. TURN trafiki ötürərək vasitəçi rolunu oynayır, STUN isə yalnız birbaşa P2P əlaqəsi üçün xarici ünvanı müəyyən etməyə kömək edir. Onların arasında seçim peer-lərin NAT növü və performans tələbləri ilə müəyyən edilir.

MeyarSTUNTURN
MexanizmXarici ünvanın müəyyən edilməsiTrafikin ötürülməsi
ƏlaşəBirbaşa P2PRele serveri vasitəsilə
GecikməMinimal (birbaşa marşru)Əlavə (rele vasitəsilə)
Server yüküYalnız ilkin sorğularDaimi trafik ötürülməsi
DəyərAşağı (tək sorğular)Yüksək (server trafiki)
Symmetric NAT ilə işXeyrBəli
Ötürmə qabiliyyətiYalnız P2P kanalının limitiServer kanalının limiti

Təcrübədə TURN serveri yalnız P2P-nin mümkün olmadığı əlaqələr üçün istifadə olunur. Google məlumatlarına görə (WebRTC statistikası, 2023), bütün WebRTC əlaqələrinin təxminən 15–20%-i TURN ötürülməsi tələb edir. Qalan 80–85% STUN və ya yerli host namizədləri vasitəsilə qurulur. Tətbiqin layihələndirilməsi zamanı, əgər auditoriyaya korporativ şəbəkələrdən və sərt NAT məhdudiyyətləri olan regionlardan istifadəçilər daxildirsə, ümumi media məlumatlarının 15–20%-i həcmində TURN trafiki üçün büdcə ayrılmalıdır.

TURN serverinin dəyəri və performansı

TURN serveri əhəmiyyətli resurslar istehlak edir, çünki bütün media trafiki ondan keçir. TURN ötürülməsi olan hər aktiv zəng media trafikinin ümumi ötürmə qabiliyyətinə bərabər server bənd genişliyindən istifadə edir (daxil olan + çıxan axın). HD keyfiyyətli (720p) video zəng üçün bu, hər istiqamətdə əlaqə başına 1,5–2,5 Mb/s, yəni TURN serveri vasitəsilə ümumi 3–5 Mb/s trafik ola bilər.

TURN infrastrukturunun yerləşdirilməsinin bir neçe variantı var. Pulsuz ictimai TURN serverləri keyfiyyət və təhlükəsizlik təminatının olmaması səbəbindən istehsal mühiti üçün tövsiyə edilmir. Kommersiya provayderləri (Twilio Network Traversal Service, Xirsys, Metered) TURN-u gigabayt trafik üçün ödənişli xidmət kimi təqdim edir — tipik dəyəri gigabayt üçün $0,005–0,02 təşkil edir. coturn (açıq mənbəli TURN serveri) əsasında öz yerləşdirməniz kifayət qədər ötürmə qabiliyyəti olan server və monitorinq konfiqurasiyası tələb edir.

  • coturn — ən məşhur açıq mənbəli TURN serveri, əksər istehsal sistemlərində istifadə olunur, UDP, TCP, TLS və DTLS transportunu dəstəkləyir.
  • Twilio — trafik üçün ödəniş və müvəqqəti tokenlərlə autentifikasiya ilə TURN + STUN təklif edən kommersiya xidməti.
  • Xirsys — qlobal server şəbəkəsi və ətraflı istifadə analitikası ilə ixtisaslaşmış TURN provayderi.
  • Metered.ca — ayda 50 GB-a qədər pulsuz limiti və limitdən yuxarı ödənişi olan TURN xidməti.
  • Self-hosted coturn — konfiqurasiya üzərində tam nəzarət, lakin serverin idarə edilməsi və əlçatanlıq monitorinqinin qurulması tələb olunur.

TURN serveri üçün həll seçərkən istifadəçilərin coğrafiyasını, trafikin dəyərini və təhlükəsizlik təlƏlərini nəzərə almaq lazımdır. Minlərlə eyni vaxtda zəngi olan tətbiqlər üçün geniş kanallı (1+ Gb/s) serverlərdə self-hosted coturn kommersiya provayderlərindən daha qənaətli ola bilər. Onlarla istifadəçisi olan kiçik layihələr üçün kommersiya TURN xidmətləri idarəetmə və monitorinq xərclərinin olmaması səbəbindən üstünlük təşkil edir.

Tez-tez verilən suallar

TURN serveri sadə sözlərlə nədir?

TURN serveri — bu, istifadəçilər birbaşa qoşula bilmədikdə onların arasında məlumat ötürən vasitəçidir. Əgər iki kompüter birbaşa əlaqəyə imkan verməyən marşrutizatorların arxasındadırsa, TURN serveri birindən məlumat alır və digərinə göndərir.

WebRTC-də nə zaman TURN serveri tələb olunur?

TURN serveri WebRTC zənginin hər iki iştirakçısı Symmetric NAT və ya P2P trafikini bloklayan korporativ firewalllar arxasında olduqda tələb olunur. Belə hallarda STUN kömək edə bilməz və ICE prosesi avtomatik olaraq TURN serverindən alınan rele namizədinə keçir.

TURN və STUN arasındakı fərq nədir?

STUN sadəcə kompüterə birbaşa əlaqə üçün onun xarici ünvanını göstərir. TURN trafiki özü vasitəsilə aktiv şəkildə ötürür. STUN server yükü yaratmır, TURN bənd genişliyi istehlak edir. STUN yalnız müəyyən NAT növləri ilə işləyir, TURN həmişə işləyir, lakin bahadır.

TURN serveri nə qədər başa gəlir?

TURN serverinin dəyəri provayderdən və trafikin həcmindən asılıdır. Twilio TURN vasitəsilə keçən hər GB üçün təxminən $0,005–0,01 alır. Xirsys — GB üçün $0,007-dən başlayaraq. coturn-un müstəqil yerləşdirilməsi 100 Mb/s-dən kanalı olan server tələb edir, onun dəyəri hostinq provayderindən asılıdır.

Öz TURN serverinizi necə konfiqurasiya etməli?

Öz TURN serveriniz coturn (açıq mənbə) köməyi ilə konfiqurasiya edilir. Quraşdırma portların, autentifikasiyanın (shared secret), TLS sertifikatlarının və firewallın konfiqurasiyasını əhatə edir. Əsas konfiqurasiya faylı listening-port, realm, user və fingerprint parametrlərini ehtiva edir. Konfiqurasiyadan sonra server WebRTC iceServers-də turn: və ya TLS üçün turns: prefiksi ilə göstərilir.

Nəticə

  • TURN Server — peer-lər arasında birbaşa P2P əlaqəsi mümkün olmadıqda media trafikinin ötürülməsi üçün rele serveri.
  • İş prinsipi — müştəri TURN serverində alokasiya yaradır, rele ünvanını alır və ondan vasitəçi server vasitəsilə məlumat göndərmək və qəbul etmək üçün istifadə edir.
  • ICE rolu — TURN ICE prosesində son ehtiyat kimi aktivləşir, host və srflx namizədləri əlaqəni təmin etmədikdə.
  • Məhdudiyyətlər — əlavə gecikmə (50–200 ms), server bənd genişliyi istehlakı (HD zəng üçün 3–5 Mb/s), trafik xərcləri.
  • STUN ilə müqayisə — TURN istənilən NAT növü ilə işləyir, lakin baha və yavaşdır. STUN 80–85% əlaqə üçün üstünlük təşkil edir.
  • Alətlər — coturn (self-hosted open-source), Twilio NTS, Xirsys, Metered.ca TURN serverinin kommersiya istifadəsi üçün.
  • Tövsiyə — TURN-u yalnız STUN uğursuz olduqda fallback kimi istifadə edin, TURN əlaqələrinin faizini izləyin və zəruri olduqda optimallaşdırın.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun