STUN – Simple Traversal of UDP Through NATs Márcio Leal de Melo Dahia
Roteiro Introdução - NAT Tipos de NAT Problemas STUN STUN no mercado Principios básicos Tipos de Mensagens Cenário STUN no mercado Conclusões Bibliografia
Introdução - NAT NAT (Network Adress Translator) Contornar limitação da quantidade de endereços IP Endereços IP “não roteáveis” usados na rede privada Intervalo 1: Classe A - 10.0.0.0 a 10.255.255.255 Intervalo 2: Classe B - 172.16.0.0 a 172.31.255.255 Intervalo 3: Classe C - 192.168.0.0 a 192.168.255.255 IPs “roteáveis”, compartilhados por várias máquinas de acordo com a necessidade NAT é o dispositivo capaz de fazer a tradução bidirecional entre endereços privados e públicos
Funcionamento de um NAT
Tipos de NAT(1/3) Full Cone Requisições de um determinado endereço interno são mapeados para o mesmo endereço externos Acesso de fora para dentro via endereço externo
Tipos de NAT (2/3) Restricted Cone Port Restricted Cone Semelhante ao Full Cone, porém Acesso externo apenas para máquinas para respostas a requisições feitas previamente Port Restricted Cone Semelhante ao Restricted Cone, porém Acesso restrito a porta de requisição
Tipos de NAT (3/3) Symmetric O endereço e porta a serem recebidos dependem do endereço externo a ser acessado Como o Port Restricted, o acesso externo é permitido apenas para resposta
Problemas (1/5) Necessidade crescente de acesso bidirecional nas bordas da rede Aplicações como: Voz sobre IP – receber ligação Instant Messengers – ser contatado por amigos Compartilhamento de arquivos – permitir upload Etc. etc. etc.
Problemas (2/5) Port-forwarding Grande parte soluções necessitam modificações na middlebox... Port-forwarding
Problemas (3/5) Universal Plug-and-Play (UPnP) Cisco, Microsoft, Nokia Hardware upnp-habilitado pode ser configurado pela aplicação
Problemas (4/5) Aplication Layer Gateway (ALG) Camada de software no NAT que permite a “passagem” de protocolos previamente definidos
Problemas (5/5) ...Ou são muito pesadas (Uso de Relays) Servidor intermediando a comunicação entre os pontos
STUN (1/2) RFC 3489 – Março de 2003 Permite que entidades atrás de NAT Descubram a presença de NAT Descubram o tipo de NAT Descubram seu endereço público Quantidade arbitrária de NATs Não atravessa Symmetric NATs
STUN (2/2) Principio básico Servidor conectado diretamente à rede 2 IPs e 2 portas Um dispositivo na rede pública conhece o endereço externo do dispositivo atrás do NAT Características do protocolo UDP Magro e simples Servidor não precisa manter sessões com o cliente Ideal para altas demandas de pouco conteúdo
STUN – Configuração de Análise
STUN – Tipos de mensagem Protocolo tipo cliente-servidor Shared Secret (Request, Response e Error) Requisita login/senha para as próximas mensagens TCP (TLS) Expira (entre 10 e 30 min.) Binding (Request, Response e Error) Protocolo propriamente Dito (UDP) Diversos parâmetros
STUN – Binding Request RESPONSE-ADDRESS CHANGE-REQUEST Indica para que endereço a resposta deve ser enviada CHANGE-REQUEST Indica que o servidor deve enviar a resposta com IP OU porta diferentes
STUN – Binding Response MAPPED-ADDRESS SOURCE-ADDRESS CHANGED-ADDRESS Indica qual o endereço público do cliente SOURCE-ADDRESS Indica IP do servidor CHANGED-ADDRESS Indica IP e porta para onde a resposta foi enviada REFLECTED-FROM IP e porta do cliente que fez o request
STUN – Binding Ambos Error USERNAME/PASSWORD MESSAGE-INTEGRITY Definidos pelo Shared Secret MESSAGE-INTEGRITY HMAC (Keyed-Hashing for Message Authentication ) Error ERROR-CODE UNKNOWN-ATTRIBUTES
STUN - Cenário Suponha uma aplicação multimídia que necessite saber se Está na Internet diretamente Tem um Firewall que bloqueia UDP Tem um Firewall que permite UDP de saída Qual o tipo de NAT
Firewall de UDP simétrico STUN - Cenário Binding request simples (sem mudanças de IP) Firewall de UDP simétrico Teste 1 Não Resp? Sim Mesmo IP? Sim Resp? Teste 2 Não Não Sim UDP bloqueado Teste 2 IP público Não Sim NAT Full Cone Resp? Teste 1 Binding request. Mudança de IP e porta (CHANGE-ADDRESS) Binding request simples usando o endereço e porta secundários do servidor Mesmo IP? Não NAT Symmetric Sim Resp? Sim NAT Restricted Teste 3 Não Binding request. Apenas mudança de porta (CHANGE-ADDRESS) NAT Port Restricted
STUN no mercado Implementação Open Source disponível http://sourceforge.net/projects/stun/
STUN no mercado VoIP (OpenPhone) http://sourceforge.net/projects/openphone/
STUN no mercado XTunnels Solução OpenSource de conectividade Usa STUN, mas não exclusivamente http://xtunnels.org:3455/1/Home
Conclusão Deve ser visto como um Co-protocolo Não funciona com Symmetric NAT Máquina intermediária (Relay) Não faz milagres Servidor é um ponto de falha na rede Segurança, Tolerância a falha
Bibliografia IETF 2003. RFC 3489. STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs). http://www.ietf.org/rfc/rfc3489.txt IETF 1996. RFC1918. Address Allocation for Private Internets. http://www.ietf.org/rfc/rfc1918.txt Jeff Tyson. How Network Address Translation Works. http://computer.howstuffworks.com/nat.htm Newport Networks. White paper: Solving the Firewall and NAT Traversal Issues for Multimedia over IP Services. http://www.newport-networks.com/whitepapers/nat-traversal.html UPnP Forum. http://www.upnp.org Implentaçao STUN. http://sourceforge.net/projects/stun/ OpenVoIP. http://sourceforge.net/projects/openphone Xtunnels. http://xtunnels.org:3455/1/Home