Router Teldat Protocolo STUN Doc. DM769 Rev. 10.70 Marzo, 2007
ÍNDICE Capítulo 1 Introducción...1 1. Introducción... 2 1.1. NAT y su problemática en VOIP... 2 1.2. Tipos de NAT... 2 1.3. Hairpin:... 3 1.4. Una solución: STUN... 3 Capítulo 2 Configuración...5 1. Acceso al menú de configuración... 6 2. Comandos de configuración del menú STUN... 7 2.1. [NO] ADDRESS-SPACE... 7 2.2. [NO] SERVER... 7 2.3. [NO] SHUTDOWN... 7 2.4. [NO] EXIT... 8 Capítulo 3 Monitorización...9 1. Acceso al menú de monitorización... 10 1.1. LIST... 10 a) LIST REQUESTS... 10 b) LIST SERVERS... 11 1.2. EXIT... 11 Capítulo 4 Ejemplos...12 1. Ejemplo protocolo STUN con SIP... 13 2. Ejemplo protocolo STUN con H323... 16 - ii -
Capítulo 1 Introducción
1. Introducción 1.1. NAT y su problemática en VOIP Los Network Address Translators (NATs), aunque aportan grandes beneficios, también plantean grandes inconvenientes. El más problemático de dichos inconvenientes es el hecho de que provocan que muchas aplicaciones IP dejen de funcionar. Ejemplos de dichas aplicaciones incluyen la mayoría de los protocolos peer-to-peer, como por ejemplo las aplicaciones multimedia entre las que se encuentra la VOIP. El motivo por el que la VOIP deja de funcionar a través de un NAT radica en que en los paquetes de VOIP se hace referencia explícita a IPs y puertos donde el equipo espera recibir los paquetes tanto de voz como de señalización, como posteriormente estas direcciones y puertos son modificados por el NAT pero el NAT no modifica el contenido de los mensajes de VOIP donde se les hace referencia la conversación no llega a establecerse. 1.2. Tipos de NAT Existen cuatro tipos de NAT, clasificados según su comportamiento: Full Cone: Un NAT tipo full cone es aquel donde todas las peticiones desde la misma IP y puerto interno son mapeados a la misma IP y puerto externo. Cualquier host puede enviar paquetes al host interno, simplemente enviando el paquete a la IP y puerto externos. Restricted Cone: Un NAT restricted cone es aquel donde todas las peticiones desde la misma IP y puerto interno son mapeados a la misma IP y puerto externo. Al contrario que un full-cone un host externo puede enviar un paquete al host interno solo si el host interno ya ha mandado previamente un paquete a la IP de dicho host externo. Port Restricted Cone: Un NAT tipo port restricted cone es igual que el restricted cone, pero la restricción incluye los números de puerto, esto es, un host externo puede enviar un paquete a un host interno solo si el host interno a enviado previamente un paquete a la IP y puerto de dicho host externo. Symmetric: Un NAT symmetric es aquel donde todas las peticiones desde la misma IP y puerto internos dirigidas a una IP y puerto especificos son mapeados a la misma IP y puerto externos. Si el mismo host envia un paquete con la misma IP y puerto origen pero a otro destino distinto se utiliza otra asociación distinta. Solo el host externo que recibe el paquete UDP puede enviar paquetes de vuelta al host interno. Ni el protocolo SIP ni el H323 funcionan a través de un NAT simétrico aunque soporte el protocolo STUN. ROUTER TELDAT Protocolo STUN Introducción I - 2
1.3. Hairpin: Si un host interno envia un paquete a la IP y puerto públicos de una asociación ya estableciada y el NAT deshace correctamente esta asociación y reenvía el paquete a la IP y puertos privados de dicha asociación se dice que el NAT soporta Hairpin. El Hairpin es necesario para que dos clientes STUN que están detrás del mismo NAT puedan comunicarse entre si. 1.4. Una solución: STUN A continuación se muestra la configuración típica, un cliente STUN conectado a una red privada a través de un NAT llamado NAT 1. La red pública donde reside un servidor STUN se conecta a Internet a través del NAT 2. /-----\ // STUN \\ Server \\ // \-----/ +--------------+ Public Internet... NAT 2... +--------------+ +--------------+ Private NET 2... NAT 1... +--------------+ /-----\ // STUN \\ Client \\ // Private NET 1 \-----/ Figura 1: Configuración STUN STUN es un protocolo cliente-servidor, el cliente envia una peticion al servidor y el servidor devuelve una respuesta. Dichas peticiones se utilizan para determinar las asociaciones IP-Puerto privado/ip- Puerto público establecidas por los NATs. El cliente envía una petición de asociación al servidor sobre UDP, el servidor examina la IP y el puerto origen y los copia en la respuesta que envía al cliente. Hay varios parámetros en la petición que permiten al cliente pedir que la respuesta se envía a otra dirección o que el servidor envía la respuesta desde otra IP o puerto diferentes. El truco está en utilizar STUN para descubrir la presencia de NAT, y para aprender las asociaciones que dicho NAT establece. El cliente STUN suele estar embebido en una aplicación que necesita obtener una dirección y un puerto públicos para recibir datos, este es el caso tanto del protocolo SIP como del protocolo H323. ROUTER TELDAT Protocolo STUN Introducción I - 3
La petición de STUN se utiliza para descubrir la presencia de NAT, y para descubrir la IP y el puerto público que se corresponden en dicho NAT con la IP y el puerto privado. Las peticiones son enviadas utilizando UDP, cuando una petición llega al servidor este copia la IP y puerto origen en la respuesta STUN, para todos los tipos de NAT posibles esta respuesta llega al cliente. Cuando el cliente STUN recibe la respuesta compara la IP y el puerto en el paquete con la IP y el puerto que utilizó para enviar la petición. Si no coinciden el cliente STUN está detrás de uno o varios NATs. En el caso de un NAT tipo full-cone la IP y el puerto en la respuesta STUN son públicos, y pueden ser utilizados por el cliente para recibir paquetes provenientes de la red pública. Por supuesto el cliente puede no estar detrás de un NAT tipo full-cone, para determinar esto el cliente envía otra petición de STUN. Esta segunda petición es enviada a una IP del servidor distinta pero desde la misma IP y puerto que la petición original. Si la IP y el puerto de la respuesta son distintos que los de la primera respuesta, el cliente sabe que está detrás de un NAT simétrico. Para determinar si está detrás de un NAT tipo full-cone el cliente envía una petición con un flag que le indica al servidor STUN que envía la respuesta desde una IP y un puerto distintos de por los que le llego la petición. Si el cliente recibe la respuesta sabe que está detrás de un NAT tipo full-cone. STUN también permite al cliente decir al servidor que envíe la respuesta a la misma IP por lo que recibio la petición pero a un puerto distinto, esto puede ser usado para detectar si el cliente está detrás de un NAT tipo Port Restricted Cone o detrás de un NAT Restricted Cone. ROUTER TELDAT Protocolo STUN Introducción I - 4
Capítulo 2 Configuración
1. Acceso al menú de configuración Los comandos de configuración del protocolo STUN han de ser introducidos en el menú de configuración asociado al STUN (STUN Client Config>). Para acceder a dicho menú se emplea el comando feature stun client en el menú de configuración general (Config>). Config>feature stun client STUN Client Config$ Si se desea que los comandos tomen efecto inmediatamente sin necesidad de reiniciar el router se debe acceder a la configuración a través del menú de configuración general dinámica (Config$). Config$feature stun client STUN Client Config$ ROUTER TELDAT Protocolo STUN Configuración II - 6
2. Comandos de configuración del menú STUN 2.1. [NO] ADDRESS-SPACE Mediante este comando se configura un espacio de direcciones y se asocia dicho espacio con uno o más servidores STUN. Se permiten configurar varios espacios de direcciones para un hipotetico escenario en el cual el equipo pudiese tener conectividad IP por dos NATs con espacios de direcciones distintos, aunque lo más habitual será que únicamente exista un NAT con un espacio de direcciones. Un espacio de direcciones puede tener asociados varios servidores STUN, en este caso se utiliza únicamente el primero de los configurados que este activo, actuando el resto como respaldo por si cae este. Sintaxis: STUN Client Config$[no] address-space <space-id> description Description of this item server Add a server to this address space description server Descripción de este espacio de direcciones, únicamente con efectos informativos Agrega un servidor STUN previamente definido a este espacio de direcciones. 2.2. [NO] SERVER Define un servidor STUN. Posteriormente los servidores STUN son asociados a un espacio de direcciones. Sintaxis: STUN Client Config$[no] server <server-id> description Description of this item ip Ip address of this server keep-alive Seconds between bindings refresh local-ip Local ip to use port Port of this server description Descripción de este servidor, únicamente con efectos informativos ip Dirección IP del servidor keep-alive Tiempo entre refresco de un bind para este servidor. local-ip Dirección ip local a utilizar en los paquetes STUN dirigidos a este servidor port Puerto UDP del servidor, por defecto 3478 2.3. [NO] SHUTDOWN Habilita o deshabilita el protocolo STUN. Por defecto se encuentra deshabilitado. ROUTER TELDAT Protocolo STUN Configuración II - 7
Sintaxis: STUN Client Config$[no] shutdown 2.4. [NO] EXIT Permite volver al menú de configuración general. Sintaxis: STUN Client Config$ ROUTER TELDAT Protocolo STUN Configuración II - 8
Capítulo 3 Monitorización
1. Acceso al menú de monitorización Los comandos de monitorización del protocolo STUN han de ser introducidos en el menú de monitorización asociado al STUN (STUN Client Mon+). Para acceder a dicho menú se emplea el comando FEATURE STUN CLIENT en el menú de monitorización general (+). +feature stun client STUN Client Monitor STUN Client Mon+ Una vez que se ha accedido al menú de monitorización del protocolo STUN, se pueden introducir los comandos que se describen a continuación. 1.1. LIST a) LIST REQUESTS Muestra información sobre todas las peticiones STUN en curso. Para cada petición se muestra su estado, su servidor asociado, y su espacio de direcciones. Por cada servidor configurado se generan automáticamente tres peticiones con espacio de direcciones 0 que se encargan de monitorizar el estado del servidor. Sintaxis: STUN Client Mon+LIST REQUESTS Ejemplo: STUN Client Mon+ LIST REQUESTS Request id 31fd040032fd040033fd040034fd0400, state BINDED, server 2, address space 1 External address 172.26.1.1:32770 Socket Id 3, Retransmits number 0 Request id 35fd040036fd040037fd040038fd0400, state BINDED, server 2, address space 1 External address 172.26.1.1:32771 Socket Id 2, Retransmits number 0 Request id 39fd04003afd04003bfd04003cfd0400, state BINDING, server 2, address space 0 External address 0.0.0.0:0 Socket Id 2, Retransmits number 6 Retransmits 6, next retransmit 1600 Request id 95fa040096fa040097fa040098fa0400, state BINDED, server 2, address space 0 External address 172.26.1.1:32768 Socket Id 2, Retransmits number 0 Request id 99fa04009afa04009bfa04009cfa0400, state BINDED, server 2, address space 0 External address 172.26.1.1:32768 Socket Id 2, Retransmits number 0 Request id 89fe04008afe04008bfe04008cfe0400, state ERROR, server 1, address space 0 External address 0.0.0.0:0 Socket Id 1, Retransmits number 0 Request id 19f604001af604001bf604001cf60400, state ERROR, server 1, address space 0 External address 0.0.0.0:0 Socket Id 1, Retransmits number 0 Request id 1df604001ef604001ff6040020f60400, state ERROR, server 1, address space 0 External address 0.0.0.0:0 Socket Id 1, Retransmits number 0 STUN Client Mon+ ROUTER TELDAT Protocolo STUN Monitorización III - 10
b) LIST SERVERS Permite observar el estado de los servidores configurados, si hay conectividad o no y el tipo de NAT por el que pasa el equipo para acceder a ellos. Sintaxis: STUN Client Mon+LIST SERVERS Ejemplo: STUN Client Mon+LIST SERVERS Server 172.25.1.32:3478 Nat Type No UDP connectivity, Hairpin: No Server 172.25.1.2:3478 Nat Type Full cone, Hairpin: No stun-client STUN Client Mon+ 1.2. EXIT Permite volver al menú de monitorización general. Sintaxis: STUN Client Mon+ ROUTER TELDAT Protocolo STUN Monitorización III - 11
Capítulo 4 Ejemplos
hecho por M.A. Berrojo Telda t Atlas Teldat C hecho por M.A. Berrojo hecho por M.A. Berrojo Telda t Atlas hecho por M.A. Berrojo Teldat Atlas 1. Ejemplo protocolo STUN con SIP Una oficina dotada con dos gateways de voz está conectada a Internet a través de un router que realiza NAT tipo full-cone. Para que la oficina pueda hacer y recibir llamadas a una sede central se utiliza el protocolo STUN en los dos gateways de voz. El servidor STUN se encuentra situado en la sede central de la compañía, así como el router que actua a su vez como registrar. Fax :2002 Tlphn :2001 172.26.1.2 IP 172.26.1.1 Fax :1002 Fax :3002 Tlphn :1001 Tlphn :3001 SERVIDOR 172.25.1.2 ROUTER-PUBLICO 172.25.1.10 ROUTER-NAT 192.168.1.2 STUN CLIENT 1 192.168.1.1 STUN CLIENT 2 192.168.1.3 172.25.1.x 192.168.1.x Como el router de la oficina no soporta hairpin las llamadas entre los clientes 1 y 2 se deben realizar sin utilizar el protocolo stun, para lo cual se deshabilita dicho protocolo en el dial-peer correspondiente. Si el NAT soportase hairpin no haría falta deshabilitar el STUN para las llamadas entre los dos gateways de voz. Configuraciónes: A continuación se presenta la configuración del router STUN CLIENT 1 : Showing System Configuration... ATLAS Router 2 153 Version 10.6.6-Alfa log-command-errors no configuration set hostname stun-client1 set data-link x25 serial0/0 set data-link x25 serial0/1 set data-link x25 serial0/2 telephony -- Telephony configuration -- dial-peer 1 voice-port destination-pattern 1001 target voice-port voip1/0 1 dial-peer 5 sip destination-pattern 300. destination-pattern 800. target ipv4 192.168.1.3 dial-peer 4 sip ROUTER TELDAT Protocolo STUN Ejemplos IV - 13
destination-pattern 3... target ipv4 192.168.1.3 dial-peer 2 sip destination-pattern 2... fax mode t38-detect fax t38 redundancy 2 target ipv4 172.25.1.12 dial-peer 6 voice-port destination-pattern 1002 target voice-port voip1/0 2 network voip1/0 -- VoIP interface Configuration -- line 1 no suspend-mode feature stun client no shutdown server 1 ip 172.25.1.32 server 2 ip 172.25.1.2 address-space 1 server 1 address-space 1 server 2 event -- ELS Config -- enable trace subsystem VOIP ALL enable trace subsystem TLPHY ALL enable trace subsystem H323 ALL enable trace subsystem STUN ALL protocol ip -- Internet protocol user configuration -- internal-ip-address 192.168.1.1 address ethernet0/0 192.168.1.1 255.255.255.0 route 0.0.0.0 0.0.0.0 192.168.1.2 protocol sip application address 192.168.1.1 application gateway application server proxy 172.25.1.12 default realm bcn.teldat.es stun 1 dump-command-errors end --- end --- ROUTER TELDAT Protocolo STUN Ejemplos IV - 14
A continuación se presenta la configuración del router STUN CLIENT 2 : Showing System Configuration... ATLAS Router 2 153 Version 10.6.6-Alfa log-command-errors no configuration set hostname stun-client2 set data-link x25 serial0/0 set data-link x25 serial0/1 set data-link x25 serial0/2 telephony -- Telephony configuration -- dial-peer 1 voice-port destination-pattern 3001 target voice-port voip1/0 1 dial-peer 2 sip destination-pattern... target sip-proxy dial-peer 3 sip destination-pattern 1... no stun target ipv4 192.168.1.1 dial-peer 4 voice-port destination-pattern 3002 target voice-port voip1/0 2 feature stun client no shutdown server 1 ip 172.25.1.2 server 1 local-ip 192.168.1.3 address-space 1 server 1 protocol ip -- Internet protocol user configuration -- internal-ip-address 192.168.1.3 address ethernet3/0 192.168.1.3 255.255.255.0 route 0.0.0.0 0.0.0.0 192.168.1.2 protocol sip application gateway proxy 192.168.1.1 default realm bcn.teldat.es stun 1 dump-command-errors end --- end --- ROUTER TELDAT Protocolo STUN Ejemplos IV - 15
hecho por M.A. Berrojo Telda t hecho por M.A. Berrojo Telda t Atlas Atlas Teldat C hecho por M.A. Berrojo Teldat C hecho por M.A. Berrojo hecho por M.A. Berrojo Telda t Atlas 2. Ejemplo protocolo STUN con H323 Una compañía desea que dos de sus sucursales puedan realizar llamadas mediante el protocolo H323. La conexión a Internet de ambas sucursales se realiza a través de dos routers con NAT por lo que se debe habilitar el protocolo STUN en los gateways de voz de ambas oficinas. En la sede central se dispone de un servidor STUN, un gateway de voz y un gatekeeper donde se registran ambas sucursales y el gateway de voz de la central. Como el protocolo STUN únicamente permite la apertura de puertos UDP el puerto TCP 1720 (señalización H323) debe configurarse como un puerto visible en los routers que realizan el NAT de ambas sucursales. Además las llamadas deben realizarse mediante el procedimiento fast-start que evita la necesidad de negociar los puertos TCP H245. Fax :2002 Tlphn :2001 ROUTER-PUBLICO 172.25.1.10 172.26.2.2 172.26.1.2 172.25.1.x IP Fax :3002 172.26.2.1 172.26.1.1 Fax :1002 Tlphn :1001 STUN CLIENT 2 192.167.1.1 Tlphn :3001 ROUTER-NAT2 192.167.1.2 ROUTER-NAT1 192.168.1.2 STUN CLIENT 1 192.168.1.1 192.167.1.x 192.168.1.x ROUTER TELDAT Protocolo STUN Ejemplos IV - 16
Configuraciónes: A continuación se presentan las configuraciones del router STUN-CLIENT1 y ROUTER-NAT1 así como del router de central. No se presentan las configuraciones de la segunda oficina ya que son idénticas a las de la primera oficina pero cambiando las direcciones IP. STUN-CLIENT 1 : Showing System Configuration... ATLAS Router 2 153 Version 10.6.6-Alfa log-command-errors no configuration set hostname stun-client1 set data-link x25 serial0/0 set data-link x25 serial0/1 set data-link x25 serial0/2 telephony -- Telephony configuration -- dial-peer 1 voice-port destination-pattern 1001 target voice-port voip1/0 1 dial-peer 2 voice-port destination-pattern 1002 target voice-port voip1/0 2 dial-peer 3 h323 destination-pattern... incoming called number... target gatekeeper feature stun client no shutdown server 1 ip 172.25.1.2 address-space 1 server 1 event -- ELS Config -- enable trace subsystem VOIP ALL enable trace subsystem TLPHY ALL enable trace subsystem H323 ALL enable trace subsystem STUN ALL protocol ip -- Internet protocol user configuration -- internal-ip-address 192.168.1.1 address ethernet0/0 192.168.1.1 255.255.255.0 route 0.0.0.0 0.0.0.0 192.168.1.2 protocol h323 application gateway ROUTER TELDAT Protocolo STUN Ejemplos IV - 17
gatekeeper address 172.25.1.2 gatekeeper zone RVGK stun 1 dump-command-errors end --- end --- ROUTER-NAT1 : Showing System Configuration... C4i SNA IPSec VoIP CR Router 1 125 Version 10.6.5-SIP-Beta TM log-command-errors no configuration set hostname router-nat1 add device ppp 1 set data-link sync serial0/0 network serial0/0 -- Interface Synchronous Serial Line. Configuration -- speed 256000 network ppp1 -- Generic PPP User Configuration -- base-interface -- Base Interface Configuration -- base-interface serial0/0 link event -- ELS Config -- enable trace subsystem NAPT ALL protocol ip -- Internet protocol user configuration -- address ethernet0/0 192.168.1.2 255.255.255.0 address ppp1 172.26.1.1 255.255.255.0 route 0.0.0.0 0.0.0.0 172.26.1.2 rule 1 default rule 1 local-ip 172.26.1.1 rule 1 napt translation nat pat -- NAPT configuration -- visible-port 1720 rule 1 default visible-port 1720 rule 1 port 1720 visible-port 1720 rule 1 ip 192.168.1.1 dump-command-errors end --- end --- ROUTER TELDAT Protocolo STUN Ejemplos IV - 18
ROUTER-PUBLIC : Showing System Configuration... ATLAS250 Router 6 96 Version 10.6.6-Alfa log-command-errors no configuration set hostname router-public add device ppp 1 add device ppp 2 set data-link sync serial0/0 set data-link sync serial0/1 telephony -- Telephony configuration -- dial-peer 2 voice-port destination-pattern 2001 target voice-port voip2/0 1 dial-peer 3 h323 destination-pattern... target gatekeeper dial-peer 1 voice-port destination-pattern 2002 target voice-port voip2/0 2 network serial0/1 -- Interface Synchronous Serial Line. Configuration -- speed 256000 network ppp2 -- Generic PPP User Configuration -- base-interface -- Base Interface Configuration -- base-interface serial0/1 link protocol ip -- Internet protocol user configuration -- internal-ip-address 172.25.1.12 address ethernet0/0 172.25.1.12 255.255.255.0 address ethernet0/0 172.24.100.132 255.255.255.248 address ppp1 172.26.2.2 255.255.255.0 address ppp2 172.26.1.2 255.255.255.0 protocol h323 application gateway gatekeeper address 172.25.1.2 gatekeeper zone RVGK dump-command-errors end --- end --- ROUTER TELDAT Protocolo STUN Ejemplos IV - 19