Como as pesquisas de DNS funcionam ao usar um proxy HTTP (ou não) no IE

14

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 minha compreensão dessa seqüência de eventos estava correta no caso geral:

  1. site de solicitações de usuários
  2. Uma solicitação de 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)
  3. Quando o IP de destino é recebido do DNS e pouco antes do envio da solicitação HTTP, a solicitação é verificada na lista de exceções
  4. Se o servidor de destino não estiver na lista de exceções, a solicitação será encaminhada ao servidor proxy.
  5. Se o servidor de destino estiver na lista de exceções, a solicitação será encaminhada de acordo com a tabela de roteamento da máquina cliente.

Qualquer comentário seria muito apreciado.

    
por orange_aurelius 12.08.2010 / 17:13

4 respostas

16

Não exatamente: depende de como o cliente está configurado. Vamos usar o IE como o exemplo básico.

Se você configurar o IE com um proxy explícito : não há outras opções marcadas, proxy configurado para algo: 8080.

  1. O usuário digita um endereço

  2. O IE verifica o endereço para uma correspondência de cadeia com a lista de exceções do proxy do IE (por exemplo, "Ignorar proxy para esses endereços:")

    a. Se corresponder a uma entrada na Ignorar lista , o cliente usa o seu próprio DNS para resolver o nome e em seguida, o cliente conecta-se diretamente ao endereço IP de destino na porta 80 (assumida) e, em seguida, envia uma solicitação como:

    GET /something.htm HTTP/1.1 e Host: fulldomainame.example.com

    e que é o fim dele para uma entrada correspondente.

    c. Se nenhuma entrada da lista de ignorar for igual a , continue:

  3. O IE se conecta ao proxy configurado e envia uma solicitação do formulário:

    GET http://fulldomainname.example.com/something.htm HTTP/1.1

    (BTW: esse uso do FQDN como URL é uma maneira de dizer que um cliente pensa que está falando com um proxy em vez de um servidor web real)

  4. O proxy resolve o nome do host usando seu próprio DNS, conecta-se ao site de destino, etc, etc

Ao usar o WPAD / PAC:

No caso de usar um script WPAD ou Autoconfiguration (como fornecido pelo ISA / TMG quando a autoconfiguração estiver habilitada), é diferente:

  1. O usuário digita um endereço

  2. O cliente faz o download do arquivo atual wpad.dat / autoproxy.js / .pac de seu local configurado

  3. O cliente procura o ponto de entrada " FindProxyForUrl " no arquivo js e o executa

  4. O script Autoproxy processa o hostname e o URL . Este é um arquivo javascript de função limitada, mas muitas coisas ainda são possíveis:

    a. isso pode incluir resolução de nomes (IsInNet, DnsResolve)

    b. isso pode incluir string matching (ShExpMatch)

    c. isso pode incluir contando até um milhão (i ++)

    d. isso pode incluir mensagens pop-up de alerta narky se o administrador for um idiota (ou apenas engraçado (ou depuração))

  5. A função FindProxyForUrl retorna pelo menos uma string : uma lista ordenada dos melhores proxies a serem usados (ponto-e-vírgula separado)

    a. ou "DIRECT" , caso em que o cliente precisa resolver o nome em si e se conectar diretamente, conforme o caso do Bypass acima

    b. ou "PROXY proxyname: 8080" ou similar, caso em que o cliente se conecta a essa porta nesse proxy, informa para OBTER o URL completo e o proxy executa a resolução de nomes .

    • Como um exemplo : se a função de script retornou "PROXY yourProxy: 8080; DIRECT" que informa ao cliente para se conectar ao yourproxy no Porta TCP 8080 para solicitar este URL, e se essa conexão não puder ser estabelecida, tente ir direto. Note que a falha na configuração da sessão TCP não é exatamente rápida, portanto, essa não é uma experiência agradável de failover para um usuário, mas nada supera. Talvez.

Ocasionalmente há falhas, sutilezas e comportamentos inexplicáveis, mas na maioria das vezes quando as coisas não estão quebradas de maneiras estranhas e interessantes, o que foi dito acima é como eu já vi isso funcionar por muitos anos. Navegadores mais novos estão otimizando o comportamento, paralelizando coisas e tentando coisas interessantes o tempo todo, então confira os documentos mais recentes para o seu navegador para entender os detalhes.

WinSock Proxy / Client ISA / Cliente TMG :

Se você estiver interessado no Winsock Proxy Client (do TMG / ISA Server), essa é uma história diferente, com mais flexibilidade e partes móveis. Muito para entrar aqui, mas há documentos em torno dos quais descrevem como isso funciona. Resumindo: ele se conecta ao Windows Sockets e pode interceptar o tráfego baseado em TCP / UDP e as solicitações de resolução de nomes por aplicativo e por usuário. Muito poderoso, mas também obsoleto agora, e não foi atualizado em vários anos.

Os clientes podem ser realmente grudentos:

Uma nota final : uma vez que um cliente HTTP decidiu falar com um proxy para um determinado site / url, não há como o proxy informar que não .

Não há código de status ou cabeçalho HTTP para "Eu não envio isso, você deve ir diretamente para ele" ...

Uma vez que o cliente decide que uma determinada URL é servida por proxy, segue-se proxy-death-grip .

A única maneira de evitar isso é obtendo a lógica de seleção logo antes do cliente fazer sua conexão, na lista PAC ou Bypass.

    
por 21.01.2012 / 08:59
0

Não sei se a sua parte do DNS está correta. Eu vi uma máquina sem servidores DNS válidos buscar páginas no IE bem usando um proxy.

    
por 12.08.2010 / 17:34
0

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)

  1. solicitações de envio de usuários para proxy
  2. Squid envia solicitação de DNS ao servidor DNS
  3. O squid recebe resposta de DNS. Se nxdomain ou outro erro, envie a página de erro para o IE. Se name resolve, busque a página e forneça ao IE.

O IE 6.0 não resolve o nome DNS.

    
por 26.09.2010 / 06:52
0

Eu não acho que seja - se você digitar o IP e o domínio na lista de exceções, ou o domínio, e o IP estiver na lista de exceções, provavelmente ele continuará usando o proxy.

É possível que um proxy.pac / wpad.dat permita que você force sua saída deste comportamento.

    
por 08.08.2011 / 12:52