Depois de algum tempo sem postar, vou falar hoje sobre um assunto que tomou praticamente o meu dia hoje, a configuração automática de Proxy. Ao falar deste assunto temos alguns conceitos envolvidos, como o de servidor Proxy, servidor DNS, servidor DHCP, porém estes assuntos não serão tratados neste artigo por fugir do escopo, porém se alguém tiver alguma dúvida na instalação/configuração destes servidores, por favor pergunte!
Quais são as vantagens ao se usar uma configuração automática de Proxy?
- Não há a necessidade de passar de máquina em máquina e configurar o proxy no navegador.
- Você pode planejar com tranquilidade uma mudança de endereço do servidor.
- Dispensa regras de redirecionamento no Firewall/Router.
- Você pode usar um proxy autenticado de forma transparente.
- Quando o usuário sair da rede ele não precisa alterar nada em seu navegador.
Existem dois conceitos que devem ser entendidos neste cenário:
Arquivo PAC (proxy auto-config)
Este arquivo define como o browser pode escolher automaticamente o servidor proxy a ser usado num acesso à uma URL. Ele contém uma função Java Script que retorna uma string com uma ou mais especificações de método de acesso. Estas especificações fazem tanto o browser usar um servidor Proxy específico para um acesso, quanto acessar diretamente a requisição (sem o uso de nenhum proxy). Este arquivo deve ficar armazenado num servidor WEB. A sintaxe deste artigo será abordada mais adiante.
WPAD (Web Proxy Auto Discovery)
Existem algumas formas de se fazer a configuração do servidor proxy no navegador. Dentre elas:
- Configuração Manual: é especificado um servidor proxy , bem como sua porta para o acesso à todas as URLs. A maioria dos navegadores ainda permite a configuração de uma lista de domínios os quais irão bypassar o proxy.
- PAC: neste caso será necessário informar manualmente a URL de acesso ao arquivo PAC.
- E por fim, o WPAD: o WPAD é um protocolo utilizado para que o browser descubra automaticamente a localização do arquivo PAC. Isto pode ser feito via DNS e/ou DHCP.
Então espero que tenha ficado claro, o WPAD é o método utilizado pelos clientes para localizarem de forma automática, via DNS e/ou DHCP, onde está localizado o arquivo PAC, que por sua vez é o arquivo onde estão contidas as definições de utilização de Proxy, bypass de domínios, acessos diretos, etc.
Aplicando o WPAD:
Via DNS
O seu servidor DNS deve ter um resource record do tipo A wpad.seu.dominio apontando para o IP do servidor WEB que está disponibilizando o arquivo PAC. O arquivo PAC deve obrigatoriamente chamar-se wpad.dat. O sufixo DNS nas estações da sua rede deve corresponder ao domínio utilizado no servidor DNS, isto pode ser difundido via DHCP usando a opção domain-name. Exmplo: eu tenho um domínio interno chamado intranet.bigualinux.corp. Devem ser seguidos os seguintes passos a fim de aplicar o WPAD neste cenário:
- Faça com que suas estações usem o sufixo DNS intranet.bigualinux.corp
- Crie uma entrada A chamada wpad na zona intranet.bigualinux.corp apontado para o servidor WEB no qual deverá estar o arquivo wpad.dat
- O arquivo wpad.dat deve estar na raiz da URL . http://wpad.intranet.bigualinux.corp/wpad.dat
Via DHCP
O servidor DHCP deve ser configurado para disponibilizar a URL onde está localizado o arquivo wpad.dat. Caso o seu DHCP server seja Linux, adicione o seguinte bloco ao seu dhcpd.conf:
option wpad code 252 = text;
option wpad “http://wpad.intranet.bigualinux.corp/wpad.dat\n”;
NOTAS
- O método via DHCP tem precedência ao uso de DNS.
- O Chrome e o Firefox suportam apenas o uso de DNS.
- Sempre que usar DNS não esqueça que o nome deve ser wpad.seu.dominio, se usar DHCP você escolhe.
- Sempre que usar DNS não esqueça que o nome do arquivo deve ser wpad.dat, se usar DHCP você escolhe.
- Embora eu não tenha tido problemas com isso, o tipo MIME do arquivo wpad.dat deve ser “application/x-ns-proxy-autoconfig”.
- O arquivo wpad.dat deve estar no root directory do servidor WEB.
- Existem alguns problemas ao utilizar Virtual Host, logo tenha certeza de que o arquivo wpad.dat está no Virtual Host Default, ou então não utilize Virtual Host.
- Existe uma questão ao criar uma entrada wpad no DNS do Windows Server. Veja o link com a resolução do problema nas referências.
Sintaxe do Arquivo PAC:
O arquivo PAC é um arquivo de texto que define no mínimo uma função Java Script, FindProxyForURL(url, host). Um simples exemplo de Arquivo PAC:
function FindProxyForURL(url, host) { return “PROXY proxy.intranet.bigualinux.corp:3128; DIRECT”;
Esta função instrui o browser à buscar todas as páginas através de proxy na porta 3128 do servidor proxy.intranet.bigualinux.corp. Se este servidor Proxy não responder, o browser buscará as páginas diretamente, sem usar Proxy. Outro exemplo, agora com mais opções:
function FindProxyForURL(url, host) {
if(isPlainHostName(host))
return “DIRECT”;
else
return “PROXY proxy.intranet.bigualinux.corp:3128″;
}
Neste exemplo, caso a URL a ser acessada contenha o mesmo sufixo DNS da máquina o acesso será direto , sem proxy. E qualquer outra URL será redirecionada ao proxy proxy.intranet.bigualinux.corp na porta 3128. Um outro exemplo mostrando mais algumas funções:
function FindProxyForURL(url, host) {
if (shExpMatch(url,”*.caixa.gov.br/*”)) {return “DIRECT”;}
if (shExpMatch(url, “*.caixa.gov.br:*/*”)) {return “DIRECT”;}
if (isInNet(host, “192.168.0.0″, “255.255.255.0″)) {
return “PROXY proxyalt.intranet.bigualinux.corp:8080″;
}
return “PROXY proxy.intranet.bigualinux.corp:3128; DIRECT”;
}
Neste caso , primeiro foi usada expressão regular , de modo que o acesso ao domínio caixa.gov.br deve ser direto, e não utilizando Proxy. Após isto é verificado se o host de destino pertence à rede 192.168.0.0/24, caso seja o acesso será redirecionado para o Proxy proxyalt.intranet.bigualinux.corp na porta 8080. Todas as outras requisições são encaminhadas ao Proxy proxy.intranet.bigualinux.corp na porta 3128, e caso este falhe o acesso será feito de forma direta.
Configurando no Cliente:
Internet Explorer:
- Navegue no menu Ferramentas – Opções da Internet.
- Na aba Conexões acesse Configurações da LAN.
- Selecione APENAS a opção “Detectar automaticamente as configurações”.
Firefox:
- Navegue no menu Ferramentas – Opções.
- Navegue na Aba Avançado – Rede.
- Clique no botão Configurações e selecione a opção “Autodetectar as configurações de proxy para esta rede”.
Conclusão
Espero que possa estar ajudando alguém que esteja trilhando o mesmo caminho que trilhei para me munir de informações sobre este assunto, que é relativamente novo para mim e então é possível que eu tenha me expressado de maneira errada , ou mesmo escrito algo inconsistente. Se alguém tiver o conhecimento e verificar alguma informação errada por favor me avise. Desculpas também caso não tenha sido conciso o suficiente, por favor me avisem caso tenha ficado. Aceito sugestões, e caso tenha alguma dúvida por favor comente! Eu estarei respondendo na medida do tempo disponível e até onde estiver ao meu alcance.
Referências:
http://www.vivaolinux.com.br/artigo/Configuracao-automatica-%28mesmo%29-de-proxy-com-WPAD?pagina=1
http://technet.microsoft.com/en-us/library/cc794902%28WS.10%29.aspx
http://configuration-guide.com/dns-error-event-id-6268-global-query-block-list-wpad-isatap/
http://en.wikipedia.org/wiki/Proxy_auto-config#Further_reading
http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol
function FindProxyForURL(url, host) { return "PROXY proxy.example.com:8080; DIRECT"; }

