Por que o nat é obrigatório quando o proxy é suficiente? [fechadas]

7

Minha máquina está conectada em uma lan local. para se conectar à internet, o tráfego passa pelo servidor proxy. Meu entendimento do servidor proxy é que ele envia a solicitação em nome do remetente da solicitação original. Então, quando o servidor responde, ele envia a resposta para o proxy pensando que é o cliente. O proxy então encaminha a resposta para minha máquina.
Veja o caso da tradução do endereço de rede . Sua solicitação passa pelo roteador nat. O roteador nat, então, fornece um endereço IP público e armazena esse mapeamento em sua tabela. A resposta (do servidor) é enviada para esse endereço público atribuído. Que o roteador nat resolve para seu endereço IP local da tabela e encaminha a resposta para sua máquina.
Minha pergunta é por que nat é necessário quando o próprio proxy é capaz de mediar o tráfego e fornecer a você acesso à internet?

    
por Ashwin 30.04.2012 / 10:18

2 respostas

3

MadHatter escreveu uma excelente explicação para leigos sobre as diferenças entre proxies e NAT.

Para mais detalhes técnicos, sugiro que você leia o modelo OSI e o modelo TCP / IP. Nat opera em três versões posteriores do modelo OSI (a camada de rede, IP neste caso) e os proxies geralmente operam na camada 7 (a camada Application, HTTP ou o que você estiver usando).

NAT e proxies também estão tentando resolver problemas ligeiramente diferentes. O NAT está escondendo vários IPs privados por trás de um número menor de IPs públicos para aliviar a falta de endereços IP, enquanto os proxies estão criando um "ponto de estrangulamento" de rede por razões de segurança, auditoria ou desempenho

    
por 30.04.2012 / 12:42
13

Parece-me que você entendeu muito bem os fundamentos, e a resposta curta é que, se você estiver usando um proxy com endereço público, não precisará de NAT - para os protocolos que são mediados pelo proxy.

No entanto, existem mais protocolos no céu e na terra do que são sonhados em sua filosofia ; nem todos eles são proxiable, e os proxies não existem mesmo para todos os que existem, portanto, o NAT é um recurso útil para eles.

Editar : um proxy é um dispositivo de computação que funciona em um nível de aplicativo. Um proxy HTTP recebe solicitações HTTP para um site remoto e, como você apontou, ele sai para o próprio site e faz a solicitação e passa a resposta de volta para o cliente solicitante. Mas tem que entender o HTTP em um nível detalhado para fazer isso.

Da mesma forma, você pode escrever um proxy FTP, mas ele teria que entender os detalhes dos comandos MKD, DELE, LIST e suchlike protocol, para fazer o proxy corretamente dos pedidos do cliente. Qualquer proxy que queira trabalhar de maneira transparente geralmente tem que entender intimamente os componentes internos do protocolo para poder fazer proxy desse protocolo.

O SOCKS é até certo ponto uma exceção a essa regra, mas isso ocorre porque o protocolo SOCKS coloca em prática uma interface mais geral para o proxy, exigindo que cada cliente seja SOCKSified e, portanto, capaz de tornar o pedidos corretos do proxy SOCKS para configurar o tipo de proxy que cada um requer, o que não é exatamente transparente.

    
por 30.04.2012 / 10:22