O que é Proxy? e Mascaramento de IP?


[Home] [Dissertação] [Biba] [Linux] [Conjugue] [br.ispell] [axw3] [uplink]

Um Proxy é alguém (um computador) que se faz passar por um outro (computador). O modo mais simples de se entender isso é no contexto de circuito virtual.

Protocolos de transporte implementam a noção de circuito virtual. Um circuito virtual entre dois computadores é como se fosse um cabo ligando os dois, que permita o envio de bits nos dois sentidos. A criação do circuito virtual naturalmente depende da existência de conectividade entre as duas máquinas, através de linhas telefônicas, links de rádio, ou cabeamento de rede local.

No caso do TCP/IP, circuitos virtuais são circuitos TCP, também chamados canais TCP. Quando você telneteia uma máquina, está criando um canal TCP que durará até o fim da sessão remota. O envio de um mail e a leitura de uma página web também criam canais TCP.

Um canal TCP tem sempre exatamente duas extremidades, uma ativa, que tomou a iniciativa (chamada cliente) e a outra passiva, que aguardava a solicitação do cliente (o servidor).

Há situações onde o cliente não pode ou não deseja identificar-se como tal. Isso ocorre quando ele está numa rede protegida por um firewall, ou quando ele não possui um endereço IP "oficial" da Internet. Em situações muito específicas, razões de desempenho podem justificar essa não identificação.

Pois bem, num caso como esse, o cliente solicita a uma outra máquina que se faça passar por cliente. Essa outra máquina fará portanto o papel de intermediário. Ela abrirá o canal TCP com o servidor, mas redirecionará todo o tráfego proveniente do servidor para o cliente oculto, e todo tráfego proveniente do cliente oculto será redirecionado para o servidor.

O recurso de poder usar um proxy em geral necessita estar previsto no cliente. Por exemplo, os browsers web costumam ter na sua configuração o servidor proxy como um ítem (no Netscape veja o menu Options/Network Preferences/Proxies). Quando se possui um gateway com o recurso de proxy transparente, a previsão de configuração de proxies pode estar ausente do cliente. Nesse caso, a existência do proxy sequer é percebida pelo cliente, e em geral é compulsória.

Apesar de serem noções bastante diferentes, é difícil entender porque usar um Proxy é diferente de mascarar IP, pois a funcionalidade de ambos é semelhante. Para se compreender a distinção, é necessário ter uma boa noção de como é a implementação do TCP/IP numa máquina, e os vários papéis que tipicamente são desempenhados pelo "layer" TCP/IP e pelas aplicações.

No contexto de circuitos virtuais, no caso do proxy existem efetivamente dois canais TCP, um entre cliente e proxy, e outro entre proxy e servidor. No caso do mascaramento de IP, só há um canal TCP, e o gateway mascarador simplesmente troca nos frames os os endereços e as portas do remetente ou do destinatário, dependendo do caso, a fim de que o servidor pense que o cliente é o gateway.

Isso significa, por exemplo, que no caso do mascaramento, o gateway comporta-se apenas como um roteador de pacotes, enquanto no caso do proxy ele remonta (no caso de TCP) o stream que o cliente envia antes de retransmiti-lo ao servidor, e vice-versa, tendo portanto um overhead maior (confirme dito acima, entretanto, esse overhead pode ser compensado por benefícios de desempenho que ocorrem em algumas situações).