Descoberta automática de Proxy – WPAD (Web Proxy Auto-Discovery)
Um pequeno problema que aparece quando configuramos um proxy de encaminhamento, como sugerido no artigo "Proxy Squid no Ubuntu com autenticação NTLM no Windows 2008 e regras baseadas em Grupos do AD" é a configuração manual do proxy em cada computador e/ou browser cliente.
Para automatizar este processo foi criado o WPAD (Web Proxy Auto-Discovery Protocol). O WPAD se utiliza de um conceito bem simples e a maioria dos browsers já vem pré-configurada para utilizá-lo.
Seu funcionamento se resume em, no momento em que o browser é inicializado, buscar por um script padrão wpad.dat que contém as configurações do proxy de sua rede. A forma de obter este script se dá de duas maneiras: através de configurações no DHCP e através de DNS.
A princípio somente o Internet Explorer implementa a descoberta de proxy a partir do DHCP, os demais browsers se utilizam do DNS.
Uma vez que o computador obtém configurações de rede a partir de um servidor de DHCP, o DHCP pode informar o caminho de um servidor web que contenha o arquivo de configuração do proxy. O browser por sua vez realiza o download deste arquivo e o utiliza para configurar o proxy automaticamente.
Se a configuração a partir de DHCP não estiver disponível, ou o browser não suportar este modo, o DNS é consultado pelo endereço wpad seguido do dominio padrão configurado no computador cliente. Se o DNS possuir uma entrada do tipo A para o nome de domínio wpad, então o browser tenta acessar a URL http://wpad/wpad.dat. Se conseguir, o arquivo é baixado e as configurações presentes no mesmo são utilizadas.
Neste tutorial irei mostrar como configurar seus servidores de DHCP e DNS para responder pelas opções de WPAD. Também irei falar um pouco sobre a criação do arquivo wpad.dat.
Este artigo faz parte da série Proxy Squid no Ubuntu com autenticação NTLM no Windows 2008 e regras baseadas em Grupos do AD.
Pré-Requisitos
- Serviços DNS e DHCP instalados e configurados em sua rede. Este tutorial trata dos passos para ajustar o DHCP e o DNS de um servidor Windows 2008, porém é simples fazer as devidas adptações para outros sistemas operacionais.
- Servidor Web pré-configurado e em funcionamento para armazenar o arquivo wpad.dat. Pode ser Apache, IIS ou qualquer outro de sua preferência. Este tutorial vai descrever os passos para permitir o uso do wpad.dat em um servidor IIS 7 rodando sob Windows 2008. Não é necessário um servidor web dedicado para esta atividade, Você pode usar qualquer servidor web em funcionamento na sua rede.
- Proxy de encaminhamento instalado e configurado em sua rede. Se quiser saber como instalar e configurar um proxy squid com autenticação no Active Directory leia o tutorial: Squid 3 (Ubuntu 10.04 LTS) autenticando no Active Directory (Windows 2008).
- Credenciais com privilégios suficientes para administrar os serviços DHCP, DNS e Web de sua rede.
Tutorial
1. Criação do arquivo wpad.dat
O arquivo wpad.dat é um java script que contém no mínimo a função: FindProxyForURL(url, host).
Toda vez que uma nova URL for solicitada pelo usuário, esta função será automaticamente executada pelo browser, passando como parâmetros a URL e o domínio solicitados. Por exemplo, se a URL solicitada for http://www.google.com.br/s=teste, o campo url será preenchido com http://www.google.com.br/s=teste e o campo domínio com www.google.com.br.
Esta execução é local no próprio browser, sendo o arquivo wpad.dat obtido uma única vez na inicialização do browser.
A função FindProxyForURL possui dois retornos possíveis: DIRECT ou PROXY. Se o retorno for DIRECT, o browser não utilizará proxy para aquela requisição, sendo o acesso feito diretamente pela rede. Se a string PROXY for retornada a função deve retornar também o endereço e a porta do proxy a ser utilizada para tratar a requisição.
Exemplo de script wpad.dat:
function FindProxyForURL(url, host){
var host_ip;
host_ip= dnsResolve(host);
if (isInNet(host_ip, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
if (isInNet(host_ip, "192.168.0.0", "255.255.255.0"))
return "DIRECT";
if (isInNet(myIpAddress(), "192.168.0.0", "255.255.255.0"))
return "PROXY 192.168.0.2:3128";
else
return "DIRECT";
}
- dnsResolve(host): Converte o nome de domíno host em endereço IP
- isInNet(ip, address, mask): Verifica se o ip encontra-se na sub-sede formada pelo endereço de rede address com a máscara mask.
- shExpMatch(url, string): Verifica se a string está contida na url.
- myIpAddress(): Retorna o endereço IP da máquina local.
Você pode ainda retornar endereços de proxy distintos, de acordo com suas necessidades. Pode ter por exemplo dois proxys em sua rede e utilizar este script para fazer um balanceamento de carga baseado no IP de origem do acesso.
Coloque o arquivo wpad.dat na raiz de algum servidor web de sua rede, de forma que os clientes consigam acessá-lo através da URL: http://ip-do-servidor/wpad.dat.
2. Configuração do IIS
Se você utiliza IIS, coloque o arquivo wpad.dat na raiz de seu servidor, por padrão é a pasta C:\inetpub\wwwroot. Se você apontar um browser para a URL http://ip-do-servidor/wpad.dat provavelmente verá uma mensagem de erro dizendo que o arquivo não foi encontrado no servidor. Isto ocorre pois a extensão .dat não é aceita como um tipo MIME padrão do IIS. Precisamos configurar um novo tipo MIME .dat para que o IIS entregue o arquivo para os clientes.
Para fazer isso, acesse o Gerenciador de Servidores (Iniciar --> Ferramentas Administrativas --> Gerenciador de Servidores) e expanda Funções --> Servidor Web (IIS) --> Gerenciador do Serviços de Informações da Internet (IIS). Em Conexões clique no nome de seu servidor Web e na janela da direita (Página Inicial do Servidor) clique duas vezes em Tipos de MIME. No canto direito (janela ações) clique em Adicionar...
Na janela Adicionar Tipo de MIME preencha:
- Extensão de nome de arquivo: .dat
- Tipo MIME: application/x-javascript-config
3. Configuração do DNS
Para que o WPAD funcione em sua rede é necessário criar uma entrada do tipo A (Host) ou CNAME (Alias) em seu servidor de DNS.
Crie uma entrada do tipo A na zona de pesquisa direta de seu domínio com nome WPAD e com endereço IP do servidor Web que hospeda o arquivo wpad.dat, de forma que o browser acesse a URL http://wpad/wpad.dat e obtenha o arquivo wpad.dat. Você pode usar uma entrada CNAME e apontar para o FQDN do servidor que hospeda o wpad.dat.
Teste acessando a URL http://wpad/wpad.dat de um browser qualquer.
4. Configuração do DHCP
No servidor de DHCP é necessário configurar uma entrada com a opção 252 e valor http://wpad/wpad.dat. Porém, para poder adicionar uma entrada 252 é necessário configurar uma opção pré-definida com este valor.
Para fazer isso clique com o botão direito do mouse em IPv4, clique em Configurar opções pré-definidas e em seguida no botão Adicionar.
Configure a nova opção com os seguintes valores:
- Nome: WPAD
- Tipo de dados: Cadeia de Caracteres
- Código: 252
- Descrição: Web Proxy Auto-Discovery Protocol
5. Configuração do Browser
Provavelmente seu browser já está configurado para obter as configurações automáticas, mas para ter certeza, vá até a janela de configuração de proxy. Para cada browser é um pouco diferente o caminho, mas a configuração é a mesma.
No Chrome vá até Ferramentas --> Opções --> Configurações Avançadas --> Alterar Configurações de Proxy... --> Conexões --> Configurações da LAN.
Marque a opção Detectar automaticamente as configurações e deixe todas as demais opões em branco, conforme a figura abaixo
No Firefox acesse o menu principal do Firefox --> Opções --> Rede --> Configurar conexão... Marque a opção Autodetectar as configurações de proxy para esta rede.
Observações e Dicas
Para computadores membros de um domínio Active Directory você pode configurar uma GPO (Group Police Object) para configurar o proxy de forma automática para o Internet Explorer. Basta ativar a opção Configurações do Usuário --> Diretivas --> Configurações do Windows --> Manutenção do Internet Explorer -->Conexão/Configuração Automática do Navegador --> Detectar configurações automaticamente.
Se seu servidor de DNS é Windows 2008, você poderá ter problemas com a resolução do nome wpad. Por padrão o serviço de DNS do Windows 2008 bloqueia as resolução de nomes wpad e isatapi.
Para remover a entrada wpad da lista global de bloqueio faço o seguinte:
- Clique em Iniciar, digite regedit.exe e pressione ENTER.
- Na árvore de console, abra Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters.
- No painel de conteúdo, clique duas vezes no valor GlobalQueryBlockList.
- Na caixa de diálogo Editar Cadeia de Caracteres Múltipla, remova o nome WPAD da lista e clique em OK.
- Inicie um prompt de comando como administrador.
- Na janela de prompt de comando, execute os seguintes comandos:
net stop dns net start dns
dnscmd /config /enableglobalqueryblocklist 0
-
Referências
- Auto Configuring Proxy Settings
- Findproxyforurl.com - A Proxy Auto-Configuration Resource
- Remover o ISATAP da lista global de consultas não autorizadas do DNS
- Habilitar ou desabilitar a lista global de consultas não autorizadas




Amigo, parabens pelo tuto, muito bem explicado!
Só uma dúvida, acima na config. do IIS vc fala para colocar o Tipo de MIME "application/x-javascript-config" , já no tutorial no site: http://findproxyforurl.com/wpad_tutorial.html eles falam para colocar o tipo de MIME "application/x-ns-proxy-autoconfig" muda algo de um pro outro?
No meu caso estou apanhando com o IE, pois ele não detecta automaticamente as configs, no firefox no mesmo micro funciona normal. (já fiz todos passos aqui descritos e nada).
Abs