Como o NAT funciona para protocolos não-padrão ou incomuns (ou raw up)?

2

Para informações de porta de usuários TCP e UDP NAT. Para outros protocolos, como o ICMP, ele pode usar truques específicos do protocolo. O que acontece se um protocolo IP for usado, que não é atendido ou reconhecido?

Esse pacote pode até deixar a interface de destino? Se sim, o que acontece? O IP de origem acaba de ser alterado? O que acontece no caminho de volta? É possível que um pacote de retorno pode ir para o ip errado? Talvez até mesmo todos os ips estejam disponíveis?

    
por Andrew Parker 03.08.2016 / 12:11

2 respostas

5

For TCP and UDP NAT users port info. For other protocols like ICMP it can use protocol specific tricks.

Bem, o mesmo TCP e UDP são também "truques específicos de protocolo" - eles realmente não são diferentes de "IDs de solicitação" de ICMP Echo, ou "SPIs" de IPsec. (NAT em si é um 'truque'.)

Can such a packet even leave the target interface? If so, what happens? Does the source IP just get changed?

Normalmente sim. A maioria dos NATs passará por tais pacotes mesmo que eles não reconheçam o protocolo interno, já que ele ainda tem uma chance maior de funcionar do que "soltar tudo".

What happens on the way back?

Depende de o NAT realmente rastrear o pacote de saída. (Isso varia.)

Mesmo que o NAT não entenda como extrair portas ou IDs do protocolo interno, ele ainda pode rastrear o tipo de protocolo , o que pode ser suficiente para algumas situações. (Cada pacote IP tem um campo de tipo de protocolo, então o que você chama de "IP bruto" é meramente um caso de "tipo de protocolo IP desconhecido").

Por exemplo, uma conexão TCP (protocolo IP 6) e um ping ICMP (protocolo IP 1, tipo ICMP 8) seriam rastreados como:

  • host 192.168.1.2 (as 42.0.2.1) → 62.205.132.12 , proto 6 , port 21445 → 80
  • host 192.168.1.2 (as 42.0.2.1) → 62.205.132.12 , proto 1 , type 8 code 0 id 1227

Enquanto isso, um protocolo não reconhecido, como um túnel 6in4 , seria rastreado como:

  • host 192.168.1.2 (as 42.0.2.1) → 62.205.132.12 , proto 41 ,

Portanto, todos pacotes do protocolo de entrada-41 seriam encaminhados de volta para 192.168.1.2 . Isso significa que um computador ainda pode falar o protocolo, mas provavelmente dois computadores não conseguiram. (Muito parecido com o UDP, alguns NATs também verificam o endereço IP de origem, mas muitos só se preocupam com protocolo & porta.)

Enquanto eu usei o 6in4 no exemplo acima, o mesmo também aconteceria com todos protocolos que o NAT não entende, mesmo que eles façam portas (eg UDP-Lite ou SCTP).

  • Além disso: se o seu roteador executa o Linux, você pode executar conntrack -L ou cat /proc/net/nf_conntrack para ver todos os estados sendo rastreados atualmente. Alguns roteadores até mostram isso na interface da Web deles.

Finalmente, se o NAT não mantém nenhum estado, então o pacote é assumido como destinado ao próprio roteador (o mesmo que com qualquer outro pacote de entrada não rastreado), e normalmente caiu no chão.

Is it possible that a return packet can go to the wrong ip?

No caso mais simples, não. Ou o NAT pode associar o pacote de retorno a algum estado conhecido, ou não, mas ele não irá inventar aleatoriamente o lixo. (Geralmente.)

No entanto, se dois computadores atrás da rede local estiverem tentando falar o mesmo protocolo para o mesmo host remoto, seus estados podem entrar em conflito. Qual deles ganha pode variar - ou o estado mais antigo é usado até expirar (então as respostas para ambos os computadores continuam indo para o primeiro), ou eles continuam substituindo um ao outro em alguns momentos (isto é, flip-flops entre ambos). É uma situação em que o NAT dinâmico definitivamente não foi projetado para ...

Perhaps even all ips available?

Não. É possível em teoria - por ex. algumas pessoas fazem isso com configurações de encaminhamento de porta estática para o Wake-on-LAN - mas fazê-lo por padrão não seria muito útil. Se qualquer coisa, isso tornaria sua LAN mais vulnerável a pacotes falsificados.

(Embora, na verdade, é assim que funciona a comutação Ethernet - pacotes para MACs desconhecidos são inundados por todas as portas físicas.)

Como observação, isso não é específico para os NATs IPv4. O rastreamento de estado é parte integrante de um firewall com estado , usado tanto pelo IPv4 quanto pelo IPv6. Mesmo sem NAT / PAT, o rastreamento de estado também permite que o firewall aceite automaticamente todos os pacotes conhecidos e rejeite os desconhecidos.

Então, quando as pessoas afirmam que "NAT adiciona segurança", elas estão realmente falando sobre a configuração do firewall que geralmente vem com ele (e pode ser usada igualmente bem sem o NAT).

    
por 03.08.2016 / 12:43
2

NAT é um tema interessante.

Existem três tipos de NAT:

  • Estático
  • Dinâmico
  • PAT

O PAT é o que a maioria dos roteadores de consumidores usa, então vamos para esse.

Vamos supor que eu tenha esse layout em casa:

Router   192.168.0.1
PC 1     192.168.0.2
PC 2     192.168.0.3
External IP 1.1.1.1 (Lets assume I have that one)

Ambos os meus computadores querem se conectar ao www.superuser.com que tem o ip 151.101.65.69.

Eu carrego meu navegador no PC1 e digito no www.superuser.com e acontece o seguinte:

  • Meu computador solicita ao meu servidor DNS para resolver www.superuser.com para um IP
  • O servidor DNS volta com 151.101.65.69
  • Meu computador abre um número de porta de origem aleatório, digamos 40000 neste caso.
  • Meu computador Envia um pacote para 151.101.65.69 da fonte 192.168.0.2 e coloca o número de sequência 1 nele.
  • O roteador intercepta esse pacote e altera a fonte de 192.168.0.2 para o nosso 1.1.1.1 e toma nota de que ele veio de 192.168.0.2:40000.
  • Super usuário pega o pacote e envia uma resposta para 1.1.1.1
  • O roteador recebe a resposta, olha para o número de sequência e diz "Aha, isso é para 192.168.0.2, é melhor enviá-lo para ele na porta 40000, ele está esperando por isso.

Ao mesmo tempo, o PC 2 pode ir para o mesmo processo, mas provavelmente escolherá uma porta separada. O roteador mantém anotações desses números de porta e embaralha o tráfego conforme necessário para o destino correto.

O roteador manterá uma tabela assim:

Source              Destination
192.168.0.2:40000   151.101.65.69:80
192.168.0.3:56944   151.101.65:69:80

Agora você pergunta: "Mas, Lister, o que acontece se o número da porta aleatória que você escolheu já estiver em uso? Você quebrou o sistema Lister!" Isso é completamente bom, o roteador incrementará o número de porta na lista dele para o próximo disponível, mas se lembrará de devolver a informação na porta correta para o PC.

    
por 03.08.2016 / 12:42

Tags