ANATSTUNNATBdirect P2Phole punchingprivateprivate

NAT Traversal

11 min prečítanévytváranie sietí

Hlasové hovory, videohovory, hry typu peer-to-peer a nástroje pre vzdialenú plochu musia spájať dve zariadenia, ktoré sú za rôznymi NAT – ani jedno z nich nemá dostupnú verejnú IP. NAT traversal je súbor techník, vďaka ktorým to funguje: STUN, TURN, ICE, dierovanie. Mechanici vysvetľujú, prečo niektoré hovory fungujú priamo a niektoré sa odrážajú cez prenosové servery.

Celé telo článku je uvedené v angličtine nižšie.

NAT traversal je súbor techník, ktoré umožňujú dvom zariadeniam za samostatnými NAT vytvoriť priame spojenie. Bez neho sú protokoly peer-to-peer úplne závislé od prenosových serverov, čo zvyšuje náklady a latenciu. Vďaka tomu môžu dva telefóny za domácimi smerovačmi komunikovať priamo cez internet po väčšinu životnosti pripojenia.

Základný problém

NAT (pozri náš článok NAT) prekladá odchádzajúce pripojenia zo súkromných adries IP na zdieľané verejné adresy IP. Prichádzajúce pripojenia bez existujúceho mapovania nemajú žiadny cieľ – NAT nevie, na ktoré interné zariadenie má presmerovať. Dve zariadenia NAT nemôžu navzájom nadviazať spojenie; obaja musia byť pôvodcom.

STUN: „Ako vyzerá moja verejná IP?“

STUN (Session Traversal Utilities for NAT) , RFC 5389, je jednoduchý protokol, ktorý umožňuje zariadeniu objaviť svoje verejné mapovanie IP/portov. Zariadenie odošle požiadavku STUN na verejný server STUN; server odpovie zdrojovou adresou, ktorú pozoroval (čo je externé mapovanie NAT). Servery

STUN sú bez stavu a môžu sa voľne spúšťať. Google prevádzkuje stun.l.google.com:19302; existuje mnoho ďalších. Náklady na prevádzku jedného sú zanedbateľné, pretože výmena protokolov je malá.

Najjednoduchší vzor prechodu NAT

Pre dve zariadenia A a B za NAT:

  1. A dopytuje STUN, učí sa, že jeho verejné mapovanie je X.PLZXXPLZ verejné mapovanie ST6UNXX je Y.
  2. A a B si vymieňajú tieto adresy cez signalizačný kanál (mimo pásma, ako webová zásuvka cez server aplikácie).
  3. A začne odosielať pakety do Y; B začne posielať do X.
  4. Oba NAT vidia odchádzajúce pakety na adresu toho druhého, vytvoria potrebné mapovania a potom sa prichádzajúce pakety na tieto mapovania preposielajú interne.
  5. Priama cesta z A do B teraz funguje.
  6. hoX
XPLZ38 dierovanie. Funguje, keď sú oba NAT primerane tolerantné (plný kužeľ alebo obmedzený kužeľ). Typy

NAT a ich schopnosť dierovania

  • NAT. Najtolerantnejší – každý externý verejný IP/port môže poslať na mapovaný port Dierovanie funguje jednoducho.
  • Restricted-cone NAT. Odosielať môžu iba predtým kontaktovaní externí hostitelia. Dierovanie funguje, keď obe strany odoslali aspoň jeden paket.
  • Port-restricted-cone NAT. Obmedzené hostiteľom AND portom. Dierovanie stále funguje, ale vyžaduje, aby obe strany posielali na presný port.
  • Symetrický NAT. Najviac obmedzujúce — externý port sa líši pre každý cieľ, takže mapovanie, ktoré STUN vidí, nepredpovedá mapovanie pre priamu peer prevádzku. Dierovanie zvyčajne zlyhá.

Symetrické NAT sú bežné v nasadení NAT na úrovni operátora a niektorých podnikových firewalloch. Partneri za symetrickými NAT sa často nedokážu pripojiť priamo; potrebujú relé.

TURN: keď dierovanie zlyhá Keď priame spojenie nie je možné, obaja partneri sa pripájajú k serveru TURN, ktorý medzi nimi prenáša prenos. Servery TURN vidia všetku mediálnu prevádzku – podstatne vyššie náklady na šírku pásma ako STUN.

Pre služby videohovorov (Zoom, Google Meet) je prevádzka serverov TURN hlavným prevádzkovým nákladom. Odhady naznačujú, že 15 – 30 % hovorov využíva relé TURN napriek snahám o maximalizáciu priamych spojení.

ICE: kombinácia všetkého

ICE (Interactive Connectivity Establishment) , RFC 8445, je rámec, ktorý využíva priame pripojenie STUN, TURN. Proces:

  1. Každý partner zhromažďuje všetky adresy kandidátov – miestne rozhrania, verejné mapovania objavené STUN, rezervácie relé TURN.
  2. Vrstvníci si vymieňajú kompletné zoznamy kandidátov prostredníctvom signalizácie.
  3. Každý partner sa pokúša pripojiť ku všetkým kombináciám vzdialených kandidátovXPLZ48 vzdialených kandidátovXPLZ4 spojenie. Priame sa uprednostňujú pred prenosom; nižšia latencia nad vyššou.
  4. Pripojenie možno prehodnotiť uprostred hovoru, ak sa zmenia podmienky.

WebRTC používa ICE na pripojenia prehliadača typu peer-to-peer. Pozrite si náš článok WebRTC. Väčšina moderných P2P protokolov používa ICE alebo niečo podobné.

dierovanie UDP vs dierovanie TCP

UDP dierovanie je jednoduché (a predvolené pre väčšinu prípadov použitia NAT-Traversal). dierovanie TCP je oveľa ťažšie, pretože TCP vyžaduje synchronizované handshake; obe strany musia iniciovať vzájomné spojenie súčasne a NAT musia umožniť výsledný stav. Niektoré NAT to podporujú; mnohí nie. Väčšina prenosu P2P, ktorý potrebuje spoľahlivý prenos, používa protokoly založené na UDP (QUIC, vlastné vrstvy overenia spoľahlivosti UDP) namiesto TCP.

NAT64 a IPv6

IPv6 nepotrebuje NAT – každé zariadenie má globálne smerovateľnú adresu. Teoreticky IPv6 eliminuje NAT traversal. Čiastočné nasadenie IPv6 v praxi znamená, že niektoré koncové body sú len IPv4 za NAT, iné sú IPv6 dostupné priamo a NAT64/DNS64 sa medzi nimi prekladá. Výsledkom sú zložitejšie rozhodnutia o smerovaní, ale vo všeobecnosti jednoduchšie priame pripojenia pre koncové body s podporou protokolu IPv6.

Čo to znamená pre používateľov

Vo všeobecnosti neuvažujete o prechode NAT – zvládajú to aplikácie. Viditeľné efekty:

  • Videohovory fungujú dobre v domácich sieťach (zvyčajne priame alebo takmer priame)
  • Hovory za firemnými firewallmi sa niekedy zhoršujú, pretože prevádzka prechádza cez TURN
  • Volania z mobilnej siete majú niekedy problémy, pretože NAT operátora sú často symetrické na niektorých sieťach PPL2GME je spoľahlivejšieZXPLZ17 než ostatní

Pre používateľov, ktorí prevádzkujú svoje vlastné služby: prechod na IPv6 a postupné znižovanie nasadzovania symetrických NAT spôsobili, že prechod cez NAT bol za posledné desaťročie menej bolestivý.

Často kladené otázky

Prečo sa moje videohovory niekedy spájajú cez server?
Konfigurácia vašej siete zabránila priamemu pripojeniu peer – zvyčajne symetrický NAT alebo obmedzujúci firewall. Hovor sa vráti späť do relé TURN. Latencia sa mierne zvyšuje; hovor stále funguje.
Čo je úplný kužeľ vs symetrický NAT?
Full-cone zachováva rovnaké externé mapovanie pre všetky ciele z daného interného portu. Symmetric používa rôzne externé porty pre rôzne ciele. Symetrický je viac obmedzujúci a prerušuje väčšinu P2P prechodu.
Môže byť prechod NAT bezpečnostným rizikom?
Dierovanie otvára špecifické externé porty pre konkrétnych partnerov. Ak sa to urobí správne, je to bezpečné – mapovanie je iniciované vašou návštevnosťou a povoľuje iba konkrétneho partnera. Nesprávna konfigurácia alebo univerzálne dierovanie (UPnP sa pokazilo) môžu otvoriť neúmyselný prístup.
Prečo to IPv6 nepotrebuje?
IPv6 má toľko adries, že každé zariadenie dostane jednu globálne smerovateľnú. NAT sa stáva zbytočným; prechádzanie sa stáva bezpredmetným. Výzvou je, že zmiešané nasadenie IPv4/IPv6 zachováva potrebu prechodu NAT v časti IPv4.
Aký je rozdiel medzi STUN a TURN?
STUN vám len povie vaše verejné mapovanie; potom vyskúšajte priame pripojenie. TURN v skutočnosti prenáša prevádzku, keď priame spojenie zlyhá. STUN je lacný (malá výmena protokolov); TURN je drahý (prenáša celú šírku pásma médií).
Vysvetlenie prechodu NAT: Ako funguje peer-to-peer cez brány firewall