UDP hole punching

Z Wikipedie, otevřené encyklopedie
(přesměrováno z UDP děrování)

UDP hole punching je v informatice technika, která umožňuje propojit navzájem dva počítače, když jsou oba dva umístěny za dynamickým NAT (za tzv. maškarádou). Technika obvykle používá třetí stranu přístupnou pomocí veřejné IP adresy, která umožňuje domluvu na síťových portech tak, aby byla umožněna přímá komunikace mezi zmíněnými dvěma konci (skrze jeden nebo více NAT). Po ustavení přímé komunikace již třetí strana není potřeba. Stávající komunikace je typicky udržována prázdnými UDP datagramy, které znemožní vypršení záznamů o dynamických překladech adres na routerech provádějících NAT, a které nemají významný vliv na zátěž datového připojení.

Přímá komunikace mezi dvěma počítači skrze dynamický NAT (tzv. maškaráda) je výhodná typicky pro instant messaging (zejména pro doplňující přenos souborů nebo použití videa), VoIP a videokonference.

Přehled[editovat | editovat zdroj]

UDP hole punching je metoda pro vytvoření obousměrné UDP spojení mezi počítači v privátních sítích pomocí překladače síťových adres.Technika není použitelná ve všech případech, nebo se všemi typy NAT, protože provozní charakteristiky NAT nejsou standardizovány.

Počítače používající NAT k připojení do internetu obvykle používají STUN (Session Traversal Utilities for NAT) nebo ICE (Interactive Connectivity Establishment) k převedení na veřejnou IP adresu. Vzhledem k tomu, UDP spojení obvykle vyprší po krátké době v rozsahu desítek sekund až po několik minut a UDP port je uzavřen, UDP hole využívá přenos periodických keep-alive paketů, kterými se obnovují life-time čítače ve stroj UDP NAT.

UDP hole nefungují se symetrickými zařízeními NAT (také známými jako obousměrný NAT), které se většinou nacházejí ve velkých podnikových sítích. Mapování v symetrickém NAT je připojení k serveru STUN omezeno na příjem dat , a proto NAT mapování nevidí informace o cestě ke vzdálenému bodu.

Princip komunikace[editovat | editovat zdroj]

Nechť A a B jsou dva hostitelé, každý ve své vlastní privátní síti; NA a NB jsou dvě NAT zařízení s globálně dosažitelnými IP adresami EIPA a EIPB; S je veřejný server se známou globálně dosažitelné IP adresu.

  1. A B začnou UDP přenos s S; NAT zařízení NA a NB vytvoří UDP přeložené adresy a přiřadit čísla dočasných vnějších portů EPA a EPB
  2. S zkoumá UDP pakety k získání zdrojových portů používaných NA a NB (vnější porty NAT EPA a EPB)
  3. S projde EIPA: EPA na B a EIPB: EPB na A
  4. A odešle paket EIPB: EPB
  5. NA zkoumá A paket a vytváří následující n-tice v jeho převodní tabulce: {Source-IP-A, EPA, EIPB, EPB}
  6. B odešle paket EIPA: EPA
  7. NB zkoumá paket B a vytváří následující n-tice v jeho převodní tabulce: {Source-IP-B, EPB, EIPA, EPA}
  8. V závislosti na stavu NA převodní tabulky NA, když první paket B přichází (tedy zda n-tice {Source-IP-A, EPA, EIPB, EPB} byl vytvořen v době příjetí prvního paketu B), B první paket je zahozen (není vložen do převodní tabulky), nebo prošel (záznam v překladové tabulce byl přidán).
  9. V závislosti na stavu převodní tabulky NB, když první paket A přichází (tedy zda n-tice {Source-IP-B, EPB, EIPA, EPA} byl vytvořen v době příjetí prvního paketuu A), A první paket je zahozen (není vložen do převodní tabulky), nebo prošel (záznam v překladové tabulce byl přidán).
  10. V nejhorším případě, druhý paket od A dorazí do B; nebo druhý paket z B dorazí do A. NAT hole spojení bylo vytvořeno a oba hostitelé mohou komunikovat.

Bezpečnostní konsekvence[editovat | editovat zdroj]

O počítačích, které používají privátní IP adresy, a které přistupují ke zdrojům v Internetu pomocí routeru s NAT, se obvykle tvrdí, že jsou „chráněny“ proti přístupu z Internetu (tj. že nelze navázat spojení z Internetu směrem k počítači, který je schován za NAT, resp. za maškarádou). Technika UDP hole punching vyvrací tuto mylnou představu a správci LAN by to měli mít na paměti.