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
STUN klient odešle požadavek na STUN server, který klientovi vrátí odpověď s IP adresou NATrouteru 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
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
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. STUN server tento paket dále přepošle příslušnému počítači za NATem.
Restricted Cone NAT
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
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
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ý.