Configurar proxy auto configuration (PAC) - Resolvido

Iniciado por velox256, 10 de Abril de 2015, 12:33

tópico anterior - próximo tópico

velox256

Prezados,

tenho dois links de internet. O Link1 está ligado a um servidor Ubuntu na função de gateway de internet com o Squid3, sem DHCP. Está funcionando "bunitinhu". O segundo link de internet está ligado a um segundo servidor com DHCP e gateway de internet, ligado a um switch que distribui a rede para as máquinas ligadas nela. Esse segundo link possui um proxy que barra um monte de coisa. O servidor do link 1 está ligado também nesse switch e está com IP fixo. As outras máquinas ligadas nesse switch estão algumas com IP fixo e outras em dhcp mesmo.

A ideia é criar um arquivo pac (ou wpad.dat) que, qdo as máquinas do link 2 quisessem acessar um link bloqueado nesse proxy, seriam redirecionadas para o link 1, que não tem bloqueio "formal". Tudo foi configurado corretamente, ranges de IP e tal no Squid do Link 1. Fiz um arquivo PAC com o seguinte conteúdo básico:

Citar
function FindProxyForURL(url, host){

if (dnsDomainIs(host, ".youtube.com"))
       return "PROXY ip_do_link1:3128";

else
       return "PROXY ip_do_proxy_do_link2:8080";
}


O comportamento deveria ser o seguinte, qdo o usuário digitasse www.youtube.com, ele seria redirecionado para o gateway do link1; qq outro link ficaria no proxy do link2. O problema é que está funcionando "pela metade", qq endereço roda pelo proxy do link2, mas indo no Youtube a conexão é redirecionada mas o squid3 do link 1 barra a conexão, com a msg de:

Citar
O seguinte erro foi encontrado ao tentar recuperar a URL: http://www.youtube.com/

Acesso negado.

A configuração do controle de acesso impede que sua requisição seja permitida neste momento. Por favor, contate seu provedor de serviço se você acha que isso está incorreto.

Seu administrador do cache é webmaster.

Gerado Fri, 10 Apr 2015 17:33:33 GMT por servidor (squid/3.3.8)


O squid3 do link1 não tem nenhuma regra de sites nem nada. Já mexi em "n" configurações no Squid3 e o comportamento não muda. Alguma dica?
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

zekkerj

Seu JavaScript me parece errado. Tente assim, colocando chaves "{ }" nos comandos if e else:

function FindProxyForURL(url, host)
{
    if (dnsDomainIs(host, ".youtube.com")) {
        return "PROXY ip_do_link1:3128";
    }
    else {
        return "PROXY ip_do_proxy_do_link2:8080";
    }
}


Outra coisa... não era pra direcionar os acessos ao Youtube pro link2? Pq do jeito que está, vc está fazendo exatamente o contrário...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

velox256

Então, Zekkerj,

A situação seria que, qdo o usuário digitasse "www.youtube.com", ele usaria o link1, qq outra url iria para o link2. Fiz o que vc disse e permanece o block do Squid. O script funciona, qq outra url vai para o link2, tanto é que nem aparece o log do Squid; mas o www.youtube.com aparece TCP_MISS 403...



Citação de: zekkerj online 10 de Abril de 2015, 13:01
Seu JavaScript me parece errado. Tente assim, colocando chaves "{ }" nos comandos if e else:

function FindProxyForURL(url, host)
{
    if (dnsDomainIs(host, ".youtube.com")) {
        return "PROXY ip_do_link1:3128";
    }
    else {
        return "PROXY ip_do_proxy_do_link2:8080";
    }
}


Outra coisa... não era pra direcionar os acessos ao Youtube pro link2? Pq do jeito que está, vc está fazendo exatamente o contrário...
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

zekkerj

Tem como postar a configuração do squid do link1?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

velox256

Se colocar o servidor proxy do link1 nas configurações de rede das máquinas clientes e sem usar o arquivo dat a internet funciona sem problemas, com os blocks configurados no arquivo /etc/squid3/proibidos/sites_proibidos rodando na boa. O basicão do Squid, além de ser transparente, é esse abaixo (além das ACL SSL normais do arquivo):

Citar
acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443      # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210      # wais
acl Safe_ports port 1025-65535   # unregistered ports
acl Safe_ports port 280      # http-mgmt
acl Safe_ports port 488      # gss-http
acl Safe_ports port 591      # filemaker
acl Safe_ports port 777      # multiling http
acl CONNECT method CONNECT

acl maquinas src 192.168.10.0/24
acl proibir url_regex "/etc/squid3/proibidos/sites_proibidos"
http_access deny maquinas proibir
acl redelocal src 192.168.10.0/24
http_access allow redelocal
http_port 3128 transparent

Lembrando que esse gateway de internet do link1 não é DHCP e o do link2 é.


Citação de: zekkerj online 28 de Abril de 2015, 14:34
Tem como postar a configuração do squid do link1?
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

zekkerj

Hmmm. Observa p.f. se os erros estão acontecendo sempre e/ou apenas com sites "https".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

velox256

#6
Já vi o problema. Eu uso um script de redirecionamento de porta, como o abaixo (o servidor para o link1 é um gateway de internet com Apache - e o wpad.dat - e Squid mas sem o serviço de DHCP):

Citar
#!/bin/bash

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Como gateway de internet funciona sem problemas (mandando internet para as máquinas da rede), mas com o wpad gerenciando dois gateways de internet dava erro, pq o redirecionador mandava os dados da porta 80 para a 3128 e ficava em loop, aparecendo aquela janela de block do Squid. Então mudei o script do iptables para:

Citar
#!/bin/bash

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -p all -j SNAT --to ip_rede_externa_do_servidor_link1

e está tudo funcionando. O script que vc corrigiu ficou (agora redirecionando dois endereços):

Citar
function FindProxyForURL(url, host)
{
   if (dnsDomainIs(host, "youtube.com") || dnsDomainIs(host, "facebook.com")) {
       return "PROXY ip_do_link1:3128";
   }
   else {
       return "PROXY ip_do_proxy_do_link2:8080";
   }
}

Valeu pela ajuda no script e tudo mais, hehehe...  ;D

Ah sim, tirei também a opção "transparent" do Squid, ficou com "http_port 3128"...


Citação de: zekkerj online 28 de Abril de 2015, 15:50
Hmmm. Observa p.f. se os erros estão acontecendo sempre e/ou apenas com sites "https".
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.