NAT e porta de resposta UDP

2

estende porta de origem NAT e UDP / NAT e respostas UDP

Digamos que Alice e Bob estão atrás de nats (dois nats que podem, de alguma forma, não comunicar um caso estranho de cone, por favor, me corrija isso).

Ambos abrem o soquete udp local em 0.0.0.0, descobre sua ip: porta usando o torrent dht ( link / bootstrapping).

Isso é suficiente para enviar pacotes udp nos dois sentidos? digamos abrir uma sessão utp.

Ou ainda é necessário tentar conectar-se de Alice a Bob e Bob a Alice para dar um soco no que poderia estar no caminho (fw / nats)?

    
por mh-cbon 06.08.2017 / 11:08

2 respostas

1

O método usado pela maioria dos programas P2P é o de Perfuração , onde um servidor central é usado para passar informações entre as duas partes quanto às portas utilizadas. Usando essa informação, as partes podem estabelecer uma conexão direta números de porta válidos para que o firewall ou roteador aceite e encaminha os pacotes recebidos para a porta aberta.

Acredito que sua pergunta se relacione mais com o UDP sobre NAT, sem interferência servidor comum, que é o problema geral de NAT traversal . O problema aqui é que o dispositivo NAT não possui um método automático de determinar o host interno para o qual os pacotes de entrada são destinados, desde a origem parte não sabe o número da porta em que a outra parte está escutando.

Vários algoritmos foram desenvolvidos para resolver esse problema de Perfuração UDP . Alguns algoritmos de perfuração UDP dependem de ambas as partes usando as mesmas portas. Outros algoritmos usam uma conexão TCP temporária para passar as informações necessário para estabelecer a conexão UDP.

Outro Perfuração UDP técnicas não requerem nenhuma informação de porta, mas usam algoritmos onde ambas as partes começarão a enviar umas para as outras, usando várias tentativas, e aceitando o fato de que pelo menos os primeiros pacotes serão perdidos. Após a primeira tentativa falhada, o dispositivo NAT um registro de ter enviado um pacote para a outra máquina, e assim deixará passar quaisquer pacotes provenientes deste endereço IP e número da porta. O algoritmo para isso é detalhado no artigo da Wikipédia acima.

Isso se baseia no fato de que, se um pacote é recebido de um endereço para o qual uma conexão foi tentada anteriormente, mesmo que seja em um porto diferente daquele através do qual a parte local tentou estabelecer a conexão, então ele irá mudar para a porta certa. Isso permite que o UDP pacote passa pelo NAT, já que o mapeamento do NAT já foi estabelecido pela parte local que está tentando enviar.

O problema com todos esses métodos é que as tecnologias de conversão de endereço NAT não são padronizados. Como resultado, os métodos usados para a passagem NAT são geralmente proprietários e mal documentados, e se eles funcionarão ou não varia entre roteadores de diferentes marcas e modelos.

O IETF tem um grupo de trabalho inteiro definindo o que os dispositivos NAT devem fazer para fazer a menor bagunça: COMPREENDER Existem vários métodos para obter dados através de dispositivos NAT, alguns listados na página BEHAVE. Há também STUN , UPnP , NAT-PMP e Teredo .

    
por 10.08.2017 / 10:47
4

Normalmente, o NAT dinâmico mapeia as conexões alterando a porta de origem das conexões de origem. Muitas vezes, o mapeamento também é restrito pelo endereço IP de destino e apenas os pacotes do mesmo destino são mapeados de volta. O NAT pode mapear a mesma porta de origem mais de uma vez para endereços de destino diferentes.

Com esse NAT, Alice ou Bob precisam configurar seu NAT (manualmente ou usando outros meios, como UPnP) para mapear uma porta NAT específica para seu cliente para que o outro lado possa iniciar a conexão usando o endereço especificado. porta. Depois que a conexão (ou o primeiro pacote é recebido com o UDP) é estabelecida, o restante dos pacotes flui normalmente.

    
por 09.08.2017 / 16:21