por que o STUN não funciona com NAT simétrico?

7

Eu li esta linha da wikipedia .

"O STUN funciona com três tipos de NAT: NAT de cone completo, NAT de cone restrito e NAT de porta restrita . Nos casos de NATs de cone restrito ou de porta restrita, o cliente deve enviar um pacote para o terminal antes que o NAT seja enviado. permitir pacotes do ponto final até o cliente. O STUN não funciona com NAT simétrico "

Alguém pode explicar o porquê?

Kristen
fonte

Respostas:

6

Como STUN (servidor externo), não é possível saber qual porta será fornecida ao cliente pelo dispositivo NAT. No NAT simétrico, o cliente obtém uma porta exclusiva (ip: porta em situação de pool) em cada conexão

pyatka
fonte
13

Digamos que temos um servidor STUN no endereço stun_addre um servidor no endereço srv_addr. O uso do STUN geralmente é mais ou menos assim:

  1. O cliente se conecta ao servidor STUN no stun_addrdispositivo NAT. O dispositivo NAT converte o endereço de origem emnatted_addr_1
  2. O servidor STUN informa ao cliente o endereço do qual recebeu a conexão, que é natted_addr_1
  3. O cliente entra em contato com o servidor srv_addratravés do dispositivo NAT e instrui o sistema externo a usar natted_addr_1se desejar alcançar o cliente
  4. O sistema externo envia algo ao cliente usando natted_addr_1

Isso funcionará apenas se o dispositivo NAT usar natted_addr_1para a comunicação com o servidor STUN e o outro sistema externo. Mais especificamente, funciona apenas se o dispositivo NAT entregar os pacotes que chegam na etapa 4 ao cliente.

Um dispositivo NAT simétrico usará uma tradução diferente nas etapas 1 e 3 porque o endereço de destino do tráfego é diferente. Na etapa 3, o endereço de origem nos pacotes para o servidor é traduzido para outro endereço natted_addr_2.

O dispositivo NAT conhece apenas essas combinações de endereços de origem e destino e só permitirá que eles retornem:

  • De stun_addraténatted_addr_1
  • De srv_addraténatted_addr_2

Infelizmente, o servidor foi instruído a usar, natted_addr_1mas os pacotes srv_addrdestinados a natted_addr_1serão rejeitados pelo dispositivo NAT devido à restrição de Endereço NAT: Porta no local.

Para ser mais correto, 'endereço' deve ser substituído por 'endereço / porta' nesta resposta, porque os dispositivos NAT funcionarão com a combinação de endereço IP e números de porta.

Gerben
fonte
Ótima explicação. Isso me ajudou a entender por que o STUN não funciona para NATs simétricos. O que ainda estou lutando é que, no mundo do WebRTC, os candidatos gerados via STUN em um cone de endereço ou porta restringem o NAT? Parece estar em todos esses casos, a perfuração do furo UDP falhará. Meu entendimento está correto?
Ternary
Isso soa como uma nova pergunta para mim. Como a terminologia em diferentes tipos de NAT pode ser confusa, você pode fazer uma nova pergunta no site com um pouco mais de contexto, se desejar.
Gerben 16/10