STUN
STUN je sada pomocných internetových standardů včetně síťového protokolu, které slouží k umožnění komunikace skrz NAT, typicky používaný u interaktivních síťových služeb (VOIP, instant messaging apod.). STUN umožňuje zjištění typu NAT, veřejné IP adresy a portu. Protokol byl původně definován dokumentem RFC 3489, kde zkratka znamenala Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs). V novějším RFC 5389 byla zachována stejná zkratka, ale s jiným významem: plný oficiální název nyní zní Session Traversal Utilities for NAT.
Základní princip funkce
[editovat | editovat zdroj]STUN klient odešle požadavek na STUN server, který klientovi vrátí odpověď s IP adresou NAT routeru a s číslem portu, který NAT otevřel pro příchozí spojení. Z odpovědi zjistí STUN klient také typ použitého NAT – různé typy NAT nakládají s příchozími UDP pakety různými způsoby.
Rozdílné typy NAT podle STUN
[editovat | editovat zdroj]Některé aplikace pracující s NATem potřebují charakterizovat NAT dle typu. STUN protokol charakterizuje NAT jako Full cone NAT, Restricted cone NAT, Port restricted cone NAT a Symetrický NAT.
Full Cone NAT
[editovat | editovat zdroj]Známý také jako NAT jedna ku jedné. Všechny požadavky ze stejné vnitřní IP adresy a portu jsou mapovány na stejnou externí IP adresu a port. Externí počítač pak pošle paket lokálnímu počítači, který je za NATem, zasláním paketu na mapovanou externí adresu. NAT tento paket dále přepošle příslušnému počítači za NATem.
Restricted Cone NAT
[editovat | editovat zdroj]Všechny požadavky ze stejné lokální IP adresy a portu jsou mapovány na stejnou externí IP adresu a port. Na rozdíl od NAT jedna ku jedné může externí zařízení zaslat paket lokálnímu pouze pokud mu lokální počítač zaslal předtím paket.
Port Restricted NAT
[editovat | editovat zdroj]Je podobný Restricted cone NAT, ale omezení zahrnuje čísla portů. Externí zařízení může poslat paket na konkrétní port lokálnímu jen pokud lokální počítač předtím zaslal z tohoto portu paket vnějšímu zařízení.
Symetrický NAT
[editovat | editovat zdroj]Všechny požadavky ze stejné lokální IP adresy a portu na specifickou IP adresu a port jsou mapovány na unikátní externí zdrojovou IP adresu a port. Jestliže to samé lokální zařízení pošle paket se stejnou zdrojovou adresou a portem na jiné místo určení, je použito odlišné mapování. Pouze externí zařízení, které obdrží paket může poslat UDP paket zpět lokálnímu zařízení. V případě symetrického NAT vidí STUN server odlišné mapování, než to odpovídající cíli, ke kterému se mají skrze klienta zasílat pakety.
Terminologie zavedená STUN protokolem se ukázala jako nedostatečná k popisu NAT, mnoho implementací kombinuje výše popsané typy. Mnoho implementací NAT zachovává port, tedy ve většině situací zůstávají stejná lokální a externí čísla portů. Pokud se ovšem dvě lokální zařízení pokouší o komunikaci se stejným vnějším zařízením na stejném portu, je vnější port druhého lokálního zařízení přidělen náhodně. Pak tedy záleží na úhlu pohledu a NAT je typu restricted cone a zároveň symetrický.
Externí odkazy
[editovat | editovat zdroj]- RFC 5389 – Session Traversal Utilities for NAT (STUN)
- NAT traversal White Paper – srovnání STUN s jinými metodami NAT traversal, jako například TURN, ICE, ALGs a Session Border Controllers. Zdroj: Newport Networks
- STUNT – „STUN and TCP too“ přidává ke STUN některé funkce TCP
- Yahoo! – Director of Engineering vysvětluje princip STUN a TURN (video)
- stunserver.org otevřený STUN server, volně k dispozici