%20no%20IE.png)
Recentemente participei de uma discussão sobre o que acontece quando um cliente solicita uma página de um servidor proxy. Eu só queria ter certeza de que meu entendimento dessa sequência de eventos estava correto no caso geral:
- Site de solicitações do usuário
- Uma solicitação DNS é enviada pelo cliente ao servidor DNS configurado para resolver o endereço IP de destino (isso é feito primeiro para acomodar solicitações HTTP configuradas para ignorar o proxy)
- Assim que o IP de destino for recebido do DNS e pouco antes de a solicitação HTTP ser enviada, a solicitação será verificada na lista de exceções
- Se o servidor de destino não estiver na lista de exceções, a solicitação será encaminhada ao servidor proxy.
- Se o servidor destino estiver na lista de exceções, a solicitação será encaminhada de acordo com a tabela de roteamento da máquina cliente.
Qualquer feedback seria muito apreciado.
Responder1
Não exatamente: depende de como o cliente está configurado. Vamos usar o IE como exemplo básico.
Se você configurar o IE com umexplícitoprocuração:por exemplo, nenhuma outra opção marcada, proxy definido como algo: 8080.
O usuário digita um endereço
O IE verifica o endereço para umcorrespondência de string com a lista de exceções de proxy do IE(ou seja, "Ignorar proxy para estes endereços:")
a.Se corresponder a uma entrada noDesviarlista, oclienteusaseu próprio DNSpara resolver o nome e, em seguida, oo cliente se conecta diretamente ao endereço IP de destinona porta 80 (presumido) e envia uma solicitação como:
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
b.Se nenhuma entrada da lista de bypass corresponder, continuar:
O IE se conecta ao seu proxy configuradoe envia uma solicitação no formato:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
Bônus factóide: esse uso doFQDN no URLé uma maneira de saber se um clienteachaestá falando com um proxy em vez de um servidor web real
O proxy resolve esse nome de hostusandopróprioDNS e, em seguida, conecta-se ao site de destino (age como o cliente na etapa 2 acima), etc., etc.
Ao usar WPAD/PAC:
No caso de usar um script Web Proxy Auto Discovery (WPAD) ou Proxy Auto Configuration (PAC ou Autoconfig), como aqueles fornecidos pelo ISA/TMG quando a autoconfiguração está habilitada, é diferente:
O usuário digita um endereço
ClienteTransferênciaso actualwpad.dat/autoproxy.js/.pacarquivo de seu local configurado
Cliente procura a função "EncontrarProxyForUrl" no arquivo js e o executa
O script Autoproxy processa onome de anfitriãoeURL. Este é um arquivo javascript de função limitada, mas muitas coisas ainda são possíveis:
a. isso pode incluirresolução de nome(IsInNet, DNSResolve)
b. isso pode incluircorrespondência de string(ShExpMatch)
c. isso pode incluircontando até um milhão(eu++)
d. isso pode incluirmensagens pop-up de alerta irritantesse o administrador for um idiota
- (ou apenas engraçado)
- ((ou depuração))
OEncontrarProxyForUrlfunção retorna pelo menos uma string: uma lista ordenada dos melhores proxies para usar (separados por ponto e vírgula)
a. qualquer"DIRETO", nesse caso o cliente precisará resolver o próprio nome e conectar-se diretamente, conforme o caso Bypass acima
b. ou"PROXY nome do proxy:8080"ou similar, caso em que o cliente se conecta àquela porta naquele proxy, diz para eleOBTENHA o URL completo, e aproxy realiza resolução de nomes.
- Como umexemplo: se a função de script retornou"PROXY seuProxy:8080;DIRETO"que diz ao cliente para se conectarseu proxyna porta TCP8080para solicitar este URL e sequea conexão não pode ser estabelecida, tente ir direto. Observaçãoessa falha na configuração da sessão TCP não é exatamente rápida, portanto, provavelmente não será uma experiência de failover agradável para um usuário, mas não é nada melhor. Talvez.
Ocasionalmente, há falhas, sutilezas e comportamentos inexplicáveis, mas na maioria das vezes, quando as coisas não são quebradas de maneiras estranhas e interessantes, o que foi dito acima é como tenho visto funcionar ao longo de muitos anos. Os navegadores mais recentes estão otimizando o comportamento, paralelizando coisas e tentando coisas interessantes o tempo todo, então verifique os documentos mais recentes do seu navegador para entender os detalhes.
Proxy WinSock / Cliente de Firewall ISA / Cliente TMG:
Se você estiver interessado no Winsock Proxy Client (do TMG/ISA Server), a história é diferente, com mais flexibilidade e peças móveis. Há muito o que abordar aqui, mas existem documentos que descrevem como funciona. Resumindo: ele se conecta ao Windows Sockets e pode interceptar tráfego baseado em TCP/UDP e solicitações de resolução de nomes por aplicativo e por usuário. Muito poderoso, mas também obsoleto agora e não é atualizado há vários anos.
Os clientes podem ser muito pegajosos:
Umnota final: depois que um cliente HTTP decidir se comunicar com um proxy para um determinado site/url,não há como o proxy dizer para não fazer isso.
Não há código de status HTTP ou cabeçalho para "Eu não sirvo isso, você deve ir diretamente para ele"...
Depois que o cliente decidir que um URL específico é servido por proxy,proxy-aperto mortalsegue.
A única maneira de evitá-lo é obter a lógica de seleção logo antes do cliente fazer sua conexão, na lista PAC ou Bypass.
Uma nota final sobre zonas e arquivos PAC
O IE trata sites que sãoDIRETOconectados - mesmo que tenham pontos na URL - para fazer parte da zona da intranet local (por padrão - configurável nas propriedades da zona) e, portanto, farão coisas como permitir a autenticação integrada do Windows para esses sites (ou seja, autenticação Kerberos e/ou NTLM , de forma transparente). Portanto, controlar se algo está na zona da intranet local define o quão confiável é em termos de autenticação automática. Novamente, pelo menos, por padrão.
Responder2
Não tenho certeza se sua parte do DNS está correta. Eu vi uma máquina sem servidores DNS válidos buscar páginas no IE usando um proxy.
Responder3
Eu tento no ubuntu 10.04, wine, IE 6.0 e squid 2.7 (o sistema tem um dns e o squid tem outro servidor dns)
- O usuário envia solicitações ao proxy
- Squid envia solicitação DNS para servidor DNS
- O Squid recebe resposta DNS. Se nxdomain ou outro erro, envie a página de erro para o IE. Se o nome for resolvido, busque a página e entregue-a ao IE.
O IE 6.0 não resolve o nome DNS.
Responder4
Eu não acho que seja - se você digitar o IP e o domínio estiver na lista de exceções, ou o domínio, e o IP estiver na lista de exceções, provavelmente ainda passará pelo proxy.
É possível que um proxy.pac/wpad.dat permita que você force a saída desse comportamento.