A tecnologia WPAD, pouco conhecida pela maioria das pessoas, permite que diversos navegadores (IE, Firefox, Konqueror, etc.) consigam obter de forma 100% automática a configuração de proxy da sua rede. Melhor do que proxy transparente, mais automático do que os arquivos .PAC sozinhos! Veja como configurá-lo aqui.
O arquivo que configura o navegador é o "proxy.pac", já conhecido de alguns. Quando o WPAD é configurado via DHCP, o nome deste arquivo não é importante, pois pode ser qualquer um; já quando o protocolo é configurado via DNS, o nome deste arquivo deve ser "wpad.dat". Por uma questão de padronização, vamos usar este último nome.
Com um editor de textos qualquer (vi, emacs, mcedit, etc.), crie um arquivo com a seguinte sintaxe:
Desta forma, caso a URL pertença ao mesmo domínio DNS do cliente, o acesso se dará sem proxy (DIRECT); todo o resto passa por ele. No caso, o proxy está no IP 10.0.0.1, porta 3128.
Em seguida salve-o com o nome "wpad.dat" e salve-o na pasta raiz de seu servidor web.
Este arquivo permite configurações mais complexas. Veja algumas delas:
isInNet(host, "ip_range", "netmask") = verifica se o host destino pertence a uma faixa de IPs específica;
dnsDomainIs(host, "dns_domain") = verifica se o nome DNS do host destino é igual ao especificado.
Agora um exemplo de arquivo "wpad.dat" que usa estas funções:
Com esta configuração, destinos que pertençam ao mesmo domínio DNS do cliente OU que pertençam à faixa de IP 10.0.0.0/24 OU cujo destino seja "update.microsoft.com" serão acessados SEM proxy; o resto passa por ele.
O arquivo é um Javascript; logo, se você entende desta linguagem, é possível criar coisas bem exóticas.
[6] Comentário enviado por demattos em 29/05/2007 - 20:40h
boa noite,
muito bom o artigo, o interesante por que é possivel fazer todas as configuracoes automaticamente isto e show, nao preciso ir de maquina em maquina.....
[9] Comentário enviado por tenpontes em 06/06/2007 - 22:38h
Como havia dito antes, no meu trabalho funcionou legal, mas 90% das máquinas são Ubuntu 7.04. Nas máquinas que ainda são windows (infeslimente) o IE não conseguiu obter as configurações automáticas.
Foi configurado tanto via DHCP quanto DNS. No firefox funfa legal.
Alguém tem alguma sugestão do que possa ser?
Abraço...
[10] Comentário enviado por vladijr em 25/07/2007 - 20:01h
configurei meu servidor da maneira a pegar a configuração do navegador pelo servidor dhcp mas quando marco a opção ele não pega a configuração só consigo usar o próxy se marcar a opção usar um script de configuração automatica e digitar o caminho do script, só q o restante do dhcp funciona normal o q pode estar acontecendo, além disso como posso fazer para que os usuarios não naveguem se desmarcarem as opções de proxy no navegador????
[11] Comentário enviado por Felipe Domingos em 14/08/2007 - 16:48h
Ótimo artigo, ajuda a agilizar e muito configurações dos clientes.
só uma correção:
na parte de criação do arquivo:
-------------------------------------------------------------
function FindProxyForURL(url, host) {
if(isPlainHostName(host) || isInNet(host, "10.0.0.0", "255.0.0.0") || dnsDomainIs(host, "update.microsoft.com")
return "DIRECT";
else
return "PROXY 10.0.0.1:3128";
}
-------------------------------------------------------------
faltou fechar o ")" depois do ..."update.microsoft.com") ) # tem q ser 2, o ultimo sendo para fechar o ( depois do if
[13] Comentário enviado por rgoesjr em 29/08/2007 - 19:02h
Caro Daniel,
Estou tendo dificuldade em colocar a opção wpad dentro do dhcpd.conf (Debian), da o seguinte erro
Aug 28 14:36:35 localhost dhcpd: /etc/dhcpd.conf line 110: no option named wpad
Aug 28 14:36:35 localhost dhcpd: option wpad code
Aug 28 14:36:35 localhost dhcpd: /etc/dhcpd.conf line 111: no option named wpad
Aug 28 14:36:35 localhost dhcpd: ^Ioption
wpad "http://proxy.grupoxxx.com.br:3030/wpad.dat\n"
Aug 28 14:36:35 localhost dhcpd: /etc/dhcpd.conf line 112: authority makes no sense here.
[14] Comentário enviado por rfreitasa em 11/09/2007 - 09:01h
tb estou tendo problemas...
ele nao reconhece o option wpad code ...
Estou usando o ubuntu server,
Se alguem conseguiu rolar no debian e ubuntu da um alo ai!
abc,
[16] Comentário enviado por jgama em 05/02/2008 - 02:14h
Este é o grande problema de varios tutoriais que o pessoal cria mas o suporte fica haver navios,
tudo bem que gratuito, mas deviria pelo menos dizer que não sabe o que poder ser.
Aqui estou usando o Centos 5.0 e não tenho problema nem cm DHCP e nem com Bind.
[17] Comentário enviado por Ragnarök em 18/03/2008 - 20:04h
Atualizando o artigo: vou responder um por um.
- É recomendado configurar TANTO por DHCP quanto por DNS, quando os dois recursos existem na rede. Até onde conheço, só o IE consegue usar WPAD via DHCP, o resto é só por DNS.
- tenpontes: está certo. Se a configuração for via DHCP, você precisa especificar o host por IP. Valeu.
- vladijr: difícil. É bom revisar as configurações e os logs. Quanto aos usuários não navegarem sem proxy, isto é feito via IPTables, mas isto não é o escopo deste artigo.
- fox_mulder: está certo, errinho de digitação maldito =( Valeu.
- rick001_7, rgoesjr e rfreitasa: o DHCP padrão do Debian é o 2.x; você precisa instalar o DHCP 3.x, com o pacote dhcp3-server.
- rgoesjr e jgama: eu já havia alertado no fim do artigo que estava sem tempo para responder dúvidas técnicas... basta ver que estou respondendo só hoje. Mas em todo o caso, estou disponível para suporte (bem) pago =)
[19] Comentário enviado por l3c4 em 03/04/2008 - 14:48h
estou usando debian 4, e estou tentando fazer a configuracao para rodar junto com estacoes windows.
ja tentei reintalar umas 10 vezes, estou usando o dhcp3.
ele me da um erro no DHCP que nao existe a opcao wpad.
oque pode ser isso como arrumar???
[22] Comentário enviado por rodrigo.gos em 11/06/2008 - 18:13h
Pessoal, boa noite!
Tenho o seguinte ambiente:
- PDC: Win2003;
- Proxy: SQUID com FREEBSD;
Estou com o seguinte "problema"... Configurei o FREE, de modo que sincronizasse com o bando de dados do AD, até aí tudo certo.
Quando o usuário loga no dominio, ele já busca as regras por grupo e as impõe sem precisar que da autenticação no BROWSER.
As configurações do BROWSER eram feitas por GPO.
Então resolvi mudar e implementar o WPAD, definindo o proxy por DHCP, tb obtive sucesso, mas a partir daí faz-se necessário a autenticação do usuário no BROWSER.
Alguém pode me ajudar e me explicar o que pode ter acontecido? Preciso especificar alguma referência no WPAD?
[23] Comentário enviado por titanderso em 27/08/2008 - 22:52h
Excelente dica, eu usei aqui e funcionou beleza.
Me dá uma dica amigo, eu possuo três links de internet, 02 com proxy autenticado e outro direto. Como eu faço para que determinado ip funcione com o proxy1, o outro no proxy2 e se os dois primeiros servidores proxy estiverem fora do ar, os ip conectar-se diretamente ao proxy3.
Outra coisa eu consigo já colocar usuário e senha no proxy1, para que os outros acessem direto (é que um alguns diretores não gostam de digitar o usuário e a senha eo link é externo)
Não sei se exite esta possibilidade, mas se existir vai ser uma mão na roda.
[33] Comentário enviado por fs.schmidt em 05/04/2011 - 23:05h
Parabéns, excelente artigo ! Efetuei uma configuração hoje colocando o wpad no dhcp e dns, funcionou perfeitamente para os navegadores firefox e IE em clientes windows XP, porém as estações com windows 7 não pegaram a configuração, alguém já passou por isso?
[34] Comentário enviado por denysiacanga em 28/04/2011 - 15:34h
Caro colega, fs.schmidt
Nas estações com windows 7 é gerando uma espécie de cache de configuração do I.E. onde ele guarda as configurações antigas de proxy, portanto é necessário limpar esse "cache" do IE, clicando em ferramentas, opções da internet, avançadas, redefinir...
Espero que tenha refrescado, pois tive o mesmo problema e consegui resolver desta forma. Abraços.
[35] Comentário enviado por Cr1stt0f3r em 17/06/2011 - 11:30h
Amigo, fiz teu passo-a-passo eu deu certo, mas agora o problema esta no squid...
Só que se eu definir a proxy, ele navega normal, e sem definição da erro:
ERROR
The requested URL could not be retrieved
Invalid Request error was encountered while trying to process the request:
Some possible problems are:
Método desconhecido ou faltando (GET, POST)
Faltou a URL
Faltou o identificador HTTP (HTTP/1.0)
A requisição pode ser muito grande
Content-Length missing for POST or PUT requests.
Hostname com caracter inválido; não são permitidos underscores.
Your cache administrator is webmaster.
Generated Mon, 13 Jun 2011 09:57:07 GMT by InternetServer (squid/2.7.STABLE7)
O detalhe é que ja tentei limpar o cache do navegador, da maquina, do squid, e nada...
Espero que possam me ajudar, abraço.
[38] Comentário enviado por tiekookeit em 23/09/2011 - 23:40h
não acredito que seja questão de gosto. este é o modo mais pratico de se distribuir proxy automaticamente, imagine script de logon em uma rede mista linux, windows, mac android etc... não tem outra alternativa que cheire bem. Agora em pequenas redes windows tem outras alternativas, ou redes apenas windows
[39] Comentário enviado por marcosilva79 em 24/09/2011 - 21:24h
Ola pessoal ,
vitorioluis, vc poderia enriquecer ainda mais este artigo nos propondo a sua solução, acho que a grande maioria de nós temos um cenário onde usamos linux nos servidores e windows nos clientes ,ecah mas esta é a verdade : ( Nos demonstre ae a sua solução.
[41] Comentário enviado por viniciuspedra em 28/12/2011 - 09:23h
prezados, fiz os testes porém sempre o primeiro acesso é dificultado pela demora do navegador do cliente detectar as informações. Isso pode trazer um certo descontentamento
[49] Comentário enviado por tiekookeit em 16/02/2012 - 10:32h
no windows a consulta do wpad precisa ser liberado no dns, o que acontece eh que o firefox tenta resolver wpad pelo dns, e o dns recusa a requisicao e entao ele tenta pelo dhcp, no caso do ie ele tenta o wpad o dns recusa-se a informar quem é o wpad e ele desiste. Libere no registro do windows requisições ao wpad no dns
[50] Comentário enviado por metanol_pa em 16/02/2012 - 10:44h
Então eu já liberei no regedit nos 3 servidores de nomes.
Agora me ocorreu outro problema, em outro site no IE ele detectou automaticamente mas configurei o WPAD com o endereço de proxy de cada rede, e a rede x esta pegando o proxy da rede y. Vou mandar o arquivo pra ver se alguem consegue ver o erro:
function FindProxyForURL(url, host) {
if(isPlainHostName(host))
return "DIRECT";
if
(isInNet(MyIPAdress(), "192.168.0.0", "255.255.255.0"))
{return "PROXY 192.168.0.235:8080";
}
if
(isInNet(MyIPAdress(), "192.168.1.0", "255.255.255.0"))
{return "PROXY 192.168.1.235:8080";
}
if
(isInNet(MyIPAdress(), "192.168.2.0", "255.255.255.0"))
{return "PROXY 192.168.2.103:8080";
}
[52] Comentário enviado por cainf em 31/05/2012 - 11:01h
Interessante seu artigo amigo muito bom, uma pergunta criei uma rede com SAMBA PDC as estações estão no dominio com cada usuario com seu netlogon.bat com esse seu recurso posso usar para que as estações entram no proxy ?? sem a necessidade de configurar uma a uma ???
[53] Comentário enviado por tomassoni em 08/06/2012 - 15:13h
Cara você teria que fazer um .reg que alterasse o registro do IE, FF etc...ai você coloca ele para executar no login via PDC. Tem como fazer isso só dar uma pesquisada que de cabeça não lembro.
[57] Comentário enviado por dnbernardo em 10/08/2015 - 20:01h
Realizei todas as configurações. Tudo funcionando.
Porém na minha rede utiliza-se o outlook e para este tipo de configuração com o WPAD, o NAT fica desativado e o Outlook não consegue ir até o destino para realizar o download dos e-mails. Não encontrei nenhuma ferramenta para configuração de proxy manual no outlook, como devo proceder ?