Autor Tópico: Configurar proxy auto configuration (PAC) - Resolvido  (Lida 7460 vezes)

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Configurar proxy auto configuration (PAC) - Resolvido
« Online: 10 de Abril de 2015, 12:33 »
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?
« Última modificação: 01 de Maio de 2015, 07:28 por velox256 »
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.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Configurar proxy auto configuration (PAC)
« Resposta #1 Online: 10 de Abril de 2015, 13:01 »
Seu JavaScript me parece errado. Tente assim, colocando chaves "{ }" nos comandos if e else:

Código: [Selecionar]
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

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Re: Configurar proxy auto configuration (PAC)
« Resposta #2 Online: 28 de Abril de 2015, 13:28 »
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...



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

Código: [Selecionar]
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.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Configurar proxy auto configuration (PAC)
« Resposta #3 Online: 28 de Abril de 2015, 14:34 »
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

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Re: Configurar proxy auto configuration (PAC)
« Resposta #4 Online: 28 de Abril de 2015, 15:22 »
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 é.


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.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Configurar proxy auto configuration (PAC)
« Resposta #5 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".
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

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Re: Configurar proxy auto configuration (PAC)
« Resposta #6 Online: 30 de Abril de 2015, 18:22 »
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"...


Hmmm. Observa p.f. se os erros estão acontecendo sempre e/ou apenas com sites "https".
« Última modificação: 04 de Maio de 2015, 16:32 por velox256 »
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.