STUN (« Simple Traversal of UDP through NATs » ou « traversée simple de UDP à travers les NAT ») est un protocole client-serveur de l'IETF (RFC 3489[1]) permettant à un client UDP situé derrière un routeur NAT (ou de multiples NAT) de découvrir son adresse IP publique ainsi que le type de routeur NAT derrière lequel il est. Ces informations sont utilisées pour échanger correctement des données UDP avec l'extérieur d'un réseau NAT.
La RFC 3489 de STUN date de 2003, les sociétés CISCO et Microsoft y ont participé.
STUN ne résout pas tous les problèmes liés aux routeurs NAT. Il est cependant très intéressant dans le domaine de la voix sur IP et notamment en utilisation avec le protocole SIP.
En effet, SIP est un protocole de signalisation, qui permet d'établir, contrôler et terminer des sessions multimédia. SIP ne transporte pas les données échangées durant la session, comme la voix par exemple. Lors de l'établissement d'une session, les clients s'échangent des messages précisant l'adresse IP et le port à utiliser pour transmettre les données. Cependant, un client derrière un routeur NAT transmettra son adresse IP privée. Il ne pourra donc jamais recevoir les données.
L'utilisation d'un serveur STUN, situé du côté public, permet au client de découvrir son adresse IP publique et de transmettre ainsi des informations correctes.
L'inconvénient de STUN est qu'il ne fonctionne pas avec les NAT symétriques, mais il fonctionne avec les trois autres types de NAT (« Full Cone », « Restricted Cone » et « Port Restricted Cone »).
Un serveur STUN écoute en principe le port 3478 et le 5349.