STUN – Simple Traversal of UDP Through NATs Márcio Leal de Melo Dahia Roteiro Introdução - NAT Tipos de NAT Problemas STUN 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 interna 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”, em menor quantidade, compartilhados por várias máquinas de acordo com a necessidade NAT é o dispositivo capaz de fazer a tradução bidirecional entre endereços internos e externos 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 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/2) 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/2) Grande parte soluções necessitam modificações na middlebox Universal Plug-and-Play (UPnP) Cisco, Microsoft, Nokia Hardware upnp-habilitado pode ser configurado pela aplicação Aplication Layer Gateway (ALG) Camada de software na middlebox que permite a “passagem” de alguns protocolos previamente definidos STUN 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 Principio básico Servidor conectado diretamente à rede 2 IPs e 2 portas Tratamento dispensado a pacotes UDP Grande parte dos NATs aceita pacotes UDP de entrada ???? Um dispositivo na rede pública conhece o endereço externo do dispositivo atrás do NAT STUN - Configuração STUN – Tipos de mensagem Protocolo tipo cliente-servidor Shared Secret Request (Response) Requisita login/senha para as próximas mensagens TCP (TLS) Expira (entre 10 e 30 min.) Binding Request (response) Protocolo propriamente Dito (UDP) Diversos parâmetros STUN – Binding Request (Response) RESPONSE-ADDRESS CHANGE-REQUEST Indica IP e porta para onde a resposta foi enviada (response) REFLECTED-FROM Indica IP do servidor (response) CHANGED-ADDRESS Indica qual o endereço público do cliente (response) SOURCE-ADDRESS Indica que o servidor deve enviar a resposta com IP OU porta diferentes (request) MAPPED-ADDRESS Indica para que endereço a resposta deve ser enviada (request) IP e porta do cliente que fez o request (response) USERNAME/PASSWORD MESSAGE-INTEGRITY 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 Binding request simples (sem mudanças de IP) STUN - Cenário Binding request requisitando apenas mudança de porta (CHANGE-ADDRESS) Binding request requisitando mudança de IP e porta (CHANGE-ADDRESS) Observações 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