TURN Server: mi ez, hogyan működik és hol használják

Szerző: IT Sectr Megjelenés: 2026-06-02 Olvasási idő: 8 perc

TURN Server — a Traversal Using Relays around NAT protokoll szervere, amely médiaforgalmat továbbít két peer között, amikor a közvetlen P2P kapcsolat lehetetlen. Az IETF RFC 5766, 2010 szerint a TURN szerver az utolsó tartalékként (fallback) működik a WebRTC ICE folyamatában, garantált kapcsolatot biztosítva még Symmetric NAT és vállalati tűzfalak esetén is.

Főbb pontok

  • TURN Server — egy relé szerver, amely médiaadatokat továbbít a peerek között, amikor a közvetlen P2P kapcsolat NAT-on keresztül lehetetlen.
  • Elv — minden peer adatokat küld a TURN szervernek, amely továbbítja azt a másik peernek, közvetítőként működve a kommunikációban.
  • Szerep az ICE-ben — a TURN akkor aktiválódik, amikor a közvetlen kapcsolódási kísérletek (host és server reflexive jelöltek) mindegyike sikertelen.
  • Hátrány — a TURN többlet késleltetést és szerverterhelést okoz, mivel az összes forgalom áthalad a relén.
  • Biztonság — a TURN támogatja a hitelesítést (username, credential, realm) és a TLS titkosítást a továbbított adatok védelmére.

Mi az a TURN Server

TURN Server (Traversal Using Relays around NAT) — egy RFC 5766-ban meghatározott és RFC 8656-ban frissített hálózati szolgáltatás, amely UDP és TCP forgalmat továbbít két ügyfél között, amikor a közvetlen P2P kapcsolat lehetetlen NAT korlátozások vagy tűzfalak miatt. A WebRTC architektúrában a TURN szerver végső tartalékmechanizmusként működik, garantálva a kapcsolatot bármilyen hálózati körülmények között.

Ellentétben a STUN-nal, amely csak közli az ügyféllel a külső címét, a TURN szerver aktívan részt vesz az adatátvitelben. Minden peer kapcsolatot létesít a TURN szerverrel és elküldi neki a médiaadatait. A TURN szerver továbbítja ezeket az adatokat a másik peernek. Ennek eredményeként nincs közvetlen kapcsolat a peerek között — az összes forgalom a relé szerveren halad át, ami garantálja a kézbesítést még a legszigorúbb NAT korlátozások mellett is.

TURN protokoll

A TURN a STUN protokoll kiterjesztése. A TURN üzenetek ugyanazt a 20 bájtos fejlécet és attribútummechanizmust használják. A fő különbség, hogy a TURN új üzenettípusokat (Allocate, Refresh, Send, Data, CreatePermission, ChannelBind) és attribútumokat határoz meg a relé allokációk kezeléséhez. Az ügyfél allokációt hoz létre a TURN szerveren az Allocate üzenettel, megkapja a relé szállítási címet (relayed transport address), és azt használja adatok küldésére és fogadására a szerveren keresztül.

Hogyan működik a TURN szerver

A TURN szerver a következő lépéssorozat szerint működik. Az ügyfél Allocate Requestet küld hitelesítéssel (username, credential). A szerver ellenőrzi a hitelesítő adatokat és létrehoz egy allokációt — a relé cím (IP:port a TURN szerveren) ideiglenes hozzárendelését az ügyfélhez. A szerver Allocate Response-t küld a relayed transport address-szel — azzal a címmel, amelyet a többi peer használni fog adatok küldésére ennek az ügyfélnek a TURN szerveren keresztül.

Az allokáció létrehozása után az ügyfél adatokat küldhet a TURN szerveren keresztül Send Indication üzenetekkel vagy csatornákon (ChannelBind) keresztül. Az ügyféltől érkező adatok fogadásakor a TURN szerver ellenőrzi az engedélyeket (permissions) és továbbítja az adatokat a cél peernek. A bejövő adatok fogadásához az ügyfélnek előzetesen engedélyt kell létrehoznia annak a peernek, akitől adatokat vár, különben a TURN szerver elutasítja a bejövő csomagot. Az engedély a CreatePermission üzenettel jön létre a peer IP címének megadásával.

Allokáció és élettartam

A TURN szerveren lévő allokáció korlátozott élettartammal rendelkezik — alapértelmezés szerint 10 perc. Az ügyfélnek időszakosan Refresh Requestet kell küldenie az allokáció meghosszabbításához. Az élettartam másodpercekben van megadva a LIFETIME attribútumon. Refresh hiányában a szerver törli az allokációt és felszabadítja a relé címet. Ajánlott frissítési intervallum 5 perc (300 másodperc) a Refresh csomagok elvesztése elleni védelem érdekében.

TURN szerver konfigurálása WebRTC-ben

A WebRTC-ben a TURN szervert az RTCPeerConnection konfigurációban, az iceServers tömbben konfiguráljuk. A TURN szerverek használhatnak UDP, TCP és TLS szállítást is. A hitelesítéshez általában ideiglenes hitelesítő adatokat (TURN credentials) használnak, amelyek az alkalmazásszerveren generálódnak és időben korlátozottak.

Nézzünk egy példát a TURN szerver konfigurálására JavaScript-ben HMAC-SHA1 tokenes hitelesítéssel.

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);

Ebben a példában a TURN szerver a STUN szerverrel együtt egy egységes ICE konfigurációban van megadva. Az ICE folyamat először megpróbálja használni a host jelölteket és a STUN-tól kapott srflx jelölteket. Ha a közvetlen kapcsolat sikertelen, az ICE automatikusan átvált a TURN szervertől kapott relé jelöltre. A iceTransportPolicy: "all" paraméter engedélyezi a relé jelölteket — az alternatív "relay" érték tiltja az összes jelöltet a TURN kivételével, ami teszteléshez hasznos.

TURN szerver hitelesítése

A jogosulatlan használat megakadályozása érdekében a TURN szerver hitelesítést igényel. A standard megközelítés az időkorlátos hitelesítő adatok (time-limited credentials) használata, amelyek az alkalmazásszerveren HMAC-SHA1 segítségével generálódnak. Az alkalmazásszerver titkosítja a felhasználónevet a TURN szerver titkos kulcsával, és visszaküldi a felhasználónevet és a hitelesítő adatokat az ügyfélnek. Az ügyfél továbbítja őket az RTCPeerConnection konfigurációba, a böngésző pedig használja őket az allokáció létrehozásakor a TURN szerveren. A hitelesítő adatok lejárta után az ügyfél újakat kap az alkalmazásszervertől.

TURN vs STUN: összehasonlítás

TURN és STUN hasonló NAT átjárási feladatokat oldanak meg, de alapvetően különböznek mechanizmusban és költségben. A TURN továbbítja a forgalmat, közvetítőként működve, míg a STUN csak a külső cím meghatározásában segít a közvetlen P2P kapcsolathoz. A közöttük való választást a peerek NAT típusa és a teljesítménykövetelmények határozzák meg.

SzempontSTUNTURN
MechanizmusKülső cím meghatározásaForgalom továbbítása
KapcsolatKözvetlen P2PRelé szerveren keresztül
KésleltetésMinimális (közvetlen útvonal)Többlet (relén keresztül)
SzerverterhelésCsak kezdeti kérésekFolyamatos forgalomtovábbítás
KöltségAlacsony (egyedi kérések)Magas (szerverforgalom)
Symmetric NAT működésNemIgen
SávszélességCsak a P2P csatorna korlátjaSzervercsatorna korlátja

A gyakorlatban a TURN szervert csak azokhoz a kapcsolatokhoz használják, ahol a P2P lehetetlen. A Google adatai szerint (WebRTC statisztika, 2023) az összes WebRTC kapcsolat körülbelül 15–20%-a igényel TURN továbbítást. A fennmaradó 80–85% STUN-on vagy helyi host jelölteken keresztül jön létre. Az alkalmazás tervezésekor költségkeretet kell elkülöníteni a TURN forgalomra az összes médiaadat-mennyiség 15–20%-ának megfelelően, ha a célközönség vállalati hálózatokból és szigorú NAT korlátozású régiókból származó felhasználókat tartalmaz.

TURN szerver költsége és teljesítménye

A TURN szerver jelentős erőforrásokat fogyaszt, mivel az összes médiaforgalom áthalad rajta. Minden aktív, TURN továbbítással rendelkező hívás a szerver sávszélességét a médiaforgalom teljes átbocsátóképességével megegyező mértékben használja (bejövő + kimenő adatfolyam). Egy HD minőségű (720p) videóhívás esetén ez kapcsolatonként 1,5–2,5 Mb/s lehet minden irányban, azaz 3–5 Mb/s teljes forgalom a TURN szerveren keresztül.

Több lehetőség létezik a TURN infrastruktúra telepítésére. Az ingyenes nyilvános TURN szerverek nem ajánlottak éles célú használatra a minőségi és biztonsági garanciák hiánya miatt. A kereskedelmi szolgáltatók (Twilio Network Traversal Service, Xirsys, Metered) TURN-t szolgáltatásként kínálják gigabájtonkénti forgalmi díjjal — a tipikus költség $0,005–0,02 gigabájtonként. A saját telepítés coturn (open-source TURN szerver) alapján megfelelő sávszélességű szervert és monitorozás konfigurálását igényel.

  • coturn — a legnépszerűbb open-source TURN szerver, a legtöbb éles rendszerben használják, támogatja az UDP, TCP, TLS és DTLS szállítást.
  • Twilio — kereskedelmi szolgáltatás, amely TURN + STUN-t kínál forgalom alapú díjazással és ideiglenes tokenes hitelesítéssel.
  • Xirsys — speciális TURN szolgáltató globális szerverhálózattal és részletes használati analitikával.
  • Metered.ca — TURN szolgáltatás havi 50 GB ingyenes korláttal és a túllépésért fizetendő díjjal.
  • Self-hosted coturn — teljes kontroll a konfiguráció felett, de szerveradminisztrációt és rendelkezésre állás monitorozásának beállítását igényli.

A TURN szerverre vonatkozó megoldás kiválasztásakor figyelembe kell venni a felhasználók földrajzi eloszlását, a forgalmi költségeket és a biztonsági követelményeket. Többezer egyidejű hívással rendelkező alkalmazások esetén a self-hosted coturn széles sávú (1+ Gb/s) szervereken gazdaságosabb lehet, mint a kereskedelmi szolgáltatók. Kis projektek esetén, tízes nagyságrendű felhasználóval, a kereskedelmi TURN szolgáltatások előnyösebbek az adminisztrációs és monitorozási költségek hiánya miatt.

Gyakran ismételt kérdések

Mi az a TURN szerver egyszerű szavakkal?

A TURN szerver egy közvetítő, amely adatokat továbbít a felhasználók között, amikor azok nem tudnak közvetlenül kapcsolódni. Ha két számítógép olyan útválasztók mögött van, amelyek nem teszik lehetővé a közvetlen kapcsolatot, a TURN szerver fogadja az adatokat az egyiktől és továbbítja a másiknak.

Mikor van szükség TURN szerverre a WebRTC-ben?

TURN szerverre akkor van szükség, amikor egy WebRTC hívás mindkét résztvevője Symmetric NAT vagy a P2P forgalmat blokkoló vállalati tűzfalak mögött van. Ilyen esetekben a STUN nem tud segíteni, és az ICE folyamat automatikusan átvált a TURN szervertől kapott relé jelöltre.

Mi a különbség TURN és STUN között?

A STUN csak megmutatja a számítógépnek a külső címét a közvetlen kapcsolathoz. A TURN aktívan továbbítja a forgalmat saját magán keresztül. A STUN nem okoz szerverterhelést, a TURN sávszélességet fogyaszt. A STUN csak bizonyos NAT típusokkal működik, a TURN mindig működik, de drágább.

Mennyibe kerül egy TURN szerver?

A TURN szerver költsége a szolgáltatótól és a forgalom mennyiségétől függ. A Twilio körülbelül $0,005–0,01-t számít fel a TURN-on átmenő forgalom GB-jáért. Az Xirsys — $0,007-tól GB-ként. A coturn saját telepítése legalább 100 Mb/s sávszélességű szervert igényel, amelynek költsége a hosting szolgáltatótól függ.

Hogyan konfigurálhatom a saját TURN szerveremet?

A saját TURN szerver a coturn (open-source) segítségével konfigurálható. A telepítés magában foglalja a portok, hitelesítés (shared secret), TLS tanúsítványok és tűzfal konfigurálását. Az alap konfigurációs fájl a listening-port, realm, user és fingerprint paramétereket tartalmazza. Konfigurálás után a szervert a WebRTC iceServers-ben kell megadni a turn: vagy TLS esetén a turns: előtaggal.

Összefoglaló

  • TURN Server — relé szerver a médiaforgalom továbbítására, amikor a közvetlen P2P kapcsolat a peerek között lehetetlen.
  • Működési elv — az ügyfél allokációt hoz létre a TURN szerveren, megkapja a relé szállítási címet és azt használja adatok küldésére és fogadására a közvetítő szerveren keresztül.
  • ICE szerep — a TURN utolsó tartalékként aktiválódik az ICE folyamatban, amikor a host és srflx jelöltek nem biztosították a kapcsolatot.
  • Korlátozások — többlet késleltetés (50–200 ms), szerver sávszélesség fogyasztása (3–5 Mb/s HD hívásonként), forgalmi költségek.
  • STUN-nal való összehasonlítás — a TURN bármilyen NAT típussal működik, de drágább és lassabb. A STUN előnyösebb a kapcsolatok 80–85%-nál.
  • Eszközök — coturn (self-hosted open-source), Twilio NTS, Xirsys, Metered.ca a TURN szerver kereskedelmi használatához.
  • Ajánlás — használja a TURN-t csak fallbackként, ha a STUN sikertelen, figyelje a TURN kapcsolatok arányát és optimalizálja szükség esetén.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is