AUTO CONFIGURAÇÃO DE PROXY - PAC
O chamado PAC - Proxy Auto Configuration - ou mesmo WPAD (Web Proxy Autodiscovery Protocol) é um protocolo de auto configuração de proxy para navegadores de internet. Esse recurso funciona tanto em DNS quanto em DHCP. O arquivo deverá ser colocado em uma máquina com DNS instalado e configurado e dentro do servidor WEB com o nome de WPAD.DAT. Vamos então ao nosso cenário:
Proxy 1: 192.168.10.1 => Esse servidor possui um serviço de DHCP para a rede, Squid e gateway de internet, com vários tipos de bloqueios travados como não poder entrar no Facebook, Youtube ou 4shared; rede externa 200.222.221.1;
Proxy 2: 192.168.10.254 => Esse servidor será configurado também como um gateway de internet com Squid, porém com bloqueios que podem ser configurados. Rede externa 201.202.203.4.
O cenário acima mostra então uma rede regida por um servidor de DHCP, gateway de Internet e Squid onde há políticas rígidas de bloqueio e que não podem ser configuradas a não ser chorando muito para o administrador da rede. Muitas vezes esses bloqueios são para as pessoas passarem a trabalhar em vez de ficar de sacanagem, mas também há a necessidade de se liberar certos recursos para alguns usuários e não para outros. Com a rede acima estando em domínio, os usuários não podem fazer as mudanças nas interfaces de rede para poderem usar um segundo link de internet; através do WPAD, podemos configurar as Opções de Internet do Windows ou mesmo a opção de rede do Firefox.
O cenário acima mostra a adição de mais um link de internet, porém o link abaixo não possui bloqueios e os mesmos podem ser configurados conforme o necessário. O que queremos fazer é com que links proibidos no gateway1 de internet sejam desviados para o gateway2; links "normais" continuem passando pelo gateway1 e demais links (como links de rede interna) sejam acessados diretamente, sem passar pelo proxy de um ou de outro. Para fazermos isso, o servidor do gateway2 deverá ser instalado como gateway de internet com o Squid, o php5, o Apache2 e o serviço de dns (Bind).
A estrutura básica de um arquivo wpad é a seguinte:
function FindProxyForURL(url, host)
{
return "PROXY 192.168.1.3:3128";
}
Essa função javascript diz ao navegador para acessar o proxy através do endereço 192.168.1.3 pela porta 3128, que é a usada pelo Squid. Agora veja esse segundo exemplo:
function FindProxyForURL(url, host)
{
return "PROXY 192.168.1.3:3128; PROXY 192.168.1.10";
}
function FindProxyForURL(url, host)
{
return "PROXY 192.168.1.3:3128; PROXY 192.168.1.10";
else
return "DIRECT";
}
Essa função javascript diz ao navegador para acessar o proxy através do endereço 192.168.1.3 pela porta 3128; se o proxy não responder, tentará o segundo, que é o 192.168.1.10 pela porta 3128; se não houver resposta, então o navegador irá acessar a rede sem proxy, de forma direta. Para fazermos então o que queremos, o wpad deverá ser mais ou menos assim:
function FindProxyForURL(url, host)
{
if (dnsDomainIs(host, ".youtube.com"))
return "PROXY ip_do_link1:porta_tal";
else
return "PROXY ip_do_proxy_do_link2:porta_tal";
}
Essa função diz ao navegador que quando o endereço for www.youtube.com ele irá pelo gateway1 e qualquer outro domínio vai para o link2. Olhe esse exemplo agora:
function FindProxyForURL(url, host)
{
if (dnsDomainIs(host, ".youtube.com") || dnsDomainIs(host, ".facebook.com"))
return "PROXY ip_do_link1:porta_tal";
else
return "PROXY ip_do_proxy_do_link2:porta_tal";
}
É a mesma situação do exemplo anterior, agora com dois domínios. O navegador é instruído a quando os domínios forem www.youtube.com ou www.facebook.com eles serão acessados pelo gateway1 e qualquer outro link irá pelo link2. Note que, quando o navegador encontra no script a opção necessária, todo o resto é descartado. Por exemplo, no nosso script acima, se a pessoa acessar o facebook (que está na lista de desvios para o link que permite o site), o resto do script é deixado pra lá, pois o navegador conseguiu acessar o Facebook pelo link 1 conforme foi instruído. Se o site não estiver naquela linha de desvio, a função é descartada e o navegador vai usar o link 2.
Para criarmos o arquivo wpad, abra o Terminal e digite:
sudo nano /var/www/html/wpad.dat
onde /var/www/html/ é o caminho root do webserver Apache2. Cole o seguinte dentro do arquivo e depois salve-o (CRTL+O e depois CTRL+X). Você pode também usar o mcedit:
function FindProxyForURL(url, host)
{
if (dnsDomainIs(host, ".youtube.com") || dnsDomainIs(host, ".facebook.com"))
return "PROXY 192.168.10.10:3128"; //Essa linha em azul é apenas um comentário. Queremos então que os domínios bloqueados acessem o gateway 192.168.10.10:3128;
else
return "PROXY 192.168.10.1:8080"; //Essa linha em azul é apenas um comentário. Qualquer outro domínio será acessado pelo gateway 192.168.10.1:8080;
}
Basta salvar o arquivo e reiniciar o apache. Outro exemplo de script, onde queremos que endereços locais (como home pages internas) sejam acessadas diretamente, sem proxy:
function FindProxyForURL(url, host)
{
if (dnsDomainIs(host, ".youtube.com") || dnsDomainIs(host, ".facebook.com"))
return "PROXY 192.168.10.10:3128"; //Essa linha em azul é apenas um comentário. Queremos então que os domínios bloqueados acessem o gateway 192.168.10.10:3128;
if (isPlainHostName (host))
returne "DIRECT";
else
return "PROXY 192.168.10.1:8080"; //Essa linha em azul é apenas um comentário. Qualquer outro domínio será acessado pelo gateway 192.168.10.1:8080;
}
Para colocar o sistema para funcionar, basta ir nas configurações de internet da(s) máquina(s) cliente(s) ou navegador e colocar lá o caminho do arquivo que, no nosso caso, seria http://192.168.10.254/wpad.dat.
E assim por diante. Pode-se fazer muitos tipos de configuração no arquivo. Eventualmente talvez sejam necessárias algumas modificações no IpTables do servidor para que os desvios não entrem em loop e acabem dando bloqueios no Squid



Nenhum comentário:
Postar um comentário