STUN
STUN (sigla en inglés de Session Traversal Utilities for NAT) es un protocolo de red del tipo cliente/servidor que permite a clientes NAT encontrar su dirección IP pública, el tipo de NAT en el que se encuentra y el puerto de Internet asociado con el puerto local a través de NAT. Esta información es usada para configurar una comunicación UDP entre dos hosts que se encuentren tras enrutadores NAT. Este protocolo está definido en RFC 5389. La especificación original, que quedó obsoleta en octubre de 2008, estaba definida en RFC 3489.
Funcionamiento básico
STUN es usado principalmente por teléfonos o software VoIP. Éste incorpora un cliente STUN que envía una petición a un servidor STUN. El servidor STUN informa entonces al cliente de la IP pública de este último y qué puerto ha sido abierto por NAT para permitir el tráfico entrante a la red del cliente.
La respuesta permite además al cliente STUN determinar el tipo de NAT en uso, ya que diferentes tipos de NAT manejan los paquetes UDP entrantes de manera diferente. STUN soporta tres de los cuatro tipos principales de NAT existentes: Full Cone, Restricted Cone y Port Restricted Cone. No soporta, sin embargo, Symmetric NAT, también conocido como NAT bidireccional.
Una vez el cliente ha descubierto su dirección pública, puede comunicar ésta a sus pares. Si la NAT es del tipo Full Cone, cualquier extremo puede iniciar la comunicación; en otro caso, ambos extremos han de iniciar la comunicación simultáneamente.
STUN es útil como complementos de protocolos como SIP. SIP utiliza paquetes UDP para la señalización de tráfico de sonido, vídeo y texto sobre Internet, pero no permite establecer la comunicación cuando los extremos se encuentran detrás de enrutados NAT. Por ello suele usarse STUN en estas aplicaciones, para poder establecer la comunicación.
La conexión con el servidor STUN se lleva a cabo normalmente a través del puerto 3478 mediante UDP. El servidor STUN puede entonces facilitar al cliente una IP y un puerto alternativos de comunicación.
Algoritmo
En el siguiente gráfico , adaptado de RFC 3489, se muestra el algoritmo que sigue el protocolo STUN para determinar la presencia de pasarelas NAT y firewalls. Las terminaciones en rojo indican que la comunicación UDP no es posible, y en amarillo o verde que sí lo es.
Véase también
Enlaces externos
- RFC 5389, Session Traversal Utilities for NAT (STUN)
- RFC 3489, STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)
- Latest revision (bis) to the RFC - draft-ietf-behave-rfc3489bis
Implementaciones
- STUN Client and Server library
- JSTUN - A Java STUN implementation
- Java STUN library "stun4j" (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).