Wpad no pfsense
-
boa noite pessoal
estou configurando um wpad.dat, mas estou com duvida na configuração esta configuração que tenho esta funcionando
function FindProxyForURL(url, host) { var host_ip; host_ip= dnsResolve(host); if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; if (isInNet(myIpAddress(), "192.168.15.0", "255.255.255.0")) return "PROXY 192.168.15.1:3128"; else return "DIRECT"; }
aqui já possui uma opção para ignorar as rede localhost, mas como posso para fazer se tenho alguns site que quero não passe pelo proxy e como configurar mais uma rede, pois este arquivo vou usar em duas rede
a rede 192.168.15.0 usa o proxy 192.168.15.1:3128 já a rede 192.168.2.0 usa o proxy 192.168.2.1:3128
a perguntas para os amigos é como posso estar configurando isso neste scripts.
-
function FindProxyForURL(url,host){ // resolve o ip do host var host_ip=dnsResolve(host); // If the requested website is hosted within the internal network, send direct. if (isPlainHostName(host) || isInNet(host_ip, "10.0.0.0", "255.0.0.0") || isInNet(host_ip, "172.16.0.0", "255.240.0.0") || isInNet(host_ip, "192.168.0.0", "255.255.0.0") || isInNet(host_ip, "127.0.0.0", "255.255.255.0")) return "DIRECT"; // Dominio sem proxy //if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT"; // IP sem proxy //if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT"; // Regra deafult com proxy return "PROXY 192.168.1.1:3128"; }
Esse que uso pra uma rede, só fazer as adaptações.
Observe que se quiser usar uma regra de bypass precisa descomentar a linha removendo os "//"; -
boa noite Tomas Waldow
se o wpad for para uma outra rede sendo que o proxy é diferente sabes como posso fazer?
é que tenho duas rede e cada é independente mais irá usar o pfsense como base.
-
Isaias tenho este funcionando para várias redes:
function FindProxyForURL(url, host){ var host_ip; host_ip= dnsResolve(host); if (isInNet(myIpAddress(), "192.168.7.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.7.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.7.1:3128"; else if (isInNet(myIpAddress(), "192.168.12.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.12.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.12.1:3128"; else if (isInNet(myIpAddress(), "192.168.13.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.13.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.13.1:3128"; else if (isInNet(myIpAddress(), "192.168.14.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.14.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.14.1:3128"; else if (isInNet(myIpAddress(), "192.168.15.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.15.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.15.1:3128"; else if (isInNet(myIpAddress(), "192.168.16.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.16.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.16.1:3128"; else if (isInNet(myIpAddress(), "172.16.0.0", "255.255.0.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "172.16.0.0", "255.255.0.0")) return "DIRECT"; else return "PROXY 172.16.0.1:3128"; else return "DIRECT"; }
-
Reinaldo bacana seu script
você o tomas recomendo usar como, tenho sites e ips não não vão usar o proxy, é melhor usar no script ou fazer uma outro processo no pfsense se houver
como posso usar aptar uma parte do Tomas
// Dominio sem proxy //if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT"; // IP sem proxy //if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT";
podes dar uma dica
-
function FindProxyForURL(url,host){ // If the requested website is hosted within the internal network, send direct. if (isPlainHostName(host) || isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") || isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) return "DIRECT"; // Dominio sem proxy //if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT"; // IP sem proxy //if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT"; // Regra deafult com proxy em ordem de fail-ver return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128"; }
Pode usar esse, muda conforme precisa.
Na ultima linha coloca as redes que vai usar, no caso ele tante o primeiro e se não encontra vai no segundo.E os ips que não vão usar cria uma linha fazendo o bypass para cada IP.
-
vou testar tomas
obrigado fera
-
Reinaldo bacana seu script
você o tomas recomendo usar como, tenho sites e ips não não vão usar o proxy, é melhor usar no script ou fazer uma outro processo no pfsense se houver
como posso usar aptar uma parte do Tomas
// Dominio sem proxy //if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT"; // IP sem proxy //if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT";
podes dar uma dica
Tem várias formas pra fazer isso é uma questão de lógica.
Fiz uma alteração na primeira rede com o exemplo do Tomas junto.
function FindProxyForURL(url, host){ var host_ip; host_ip= dnsResolve(host); if (isInNet(myIpAddress(), "192.168.7.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.7.0", "255.255.255.0")) return "DIRECT"; else if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT"; else if myIpAddress() = "0.0.0.0.0" return "DIRECT"; else return "PROXY 192.168.7.1:3128"; else if (isInNet(myIpAddress(), "192.168.12.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.12.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.12.1:3128"; else if (isInNet(myIpAddress(), "192.168.13.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.13.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.13.1:3128"; else if (isInNet(myIpAddress(), "192.168.14.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.14.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.14.1:3128"; else if (isInNet(myIpAddress(), "192.168.15.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.15.0", "255.255.255.0")) return "DIRECT"; else return "PROXY 192.168.15.1:3128"; else if (isInNet(myIpAddress(), "192.168.16.0", "255.255.255.0")) if (isInNet(host_ip, "127.0.0.1", "255.255.255.255")) return "DIRECT"; else if (isInNet(host_ip, "192.168.16.0", "255.255.255.0")) return "DIRECT"; }
Eu separei o proxy por rede, mas poderia ser mesmo pra todas as redes. Seria o exemplo do Tomas com uma observação o proxy teria que ser a primeira linha, pois na ultima sem nenhum condição ele vai retornar o proxy para os ips e redes que passou para direct nas condições acima
o correto seria:function FindProxyForURL(url,host){ // Regra deafult com proxy em ordem de fail-ver return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128"; // If the requested website is hosted within the internal network, send direct. if (isPlainHostName(host) || isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") || isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) return "DIRECT";
// Dominio sem proxy
//if (shExpMatch(host, "site.a.b.c") || shExpMatch(host, "site.x.y.z")) return "DIRECT";// IP sem proxy
//if (myIpAddress(), "0.0.0.0.0", "255.255.255.0") return "DIRECT";}
-
Bacana Reinaldo
vou fazer os teste feras.
-
Não está errado não, a regra default tem que ser a última, não pode ser a primeira.
Senão não faz sentido a outras linhas, pois elas verificam o destino se é local, etc.A regra lá é em fail over, vai tentar um e caso não encontre tenta o segundo, sem precisar como "if" para ver que rede está.
Pode ver no site: http://findproxyforurl.com/example-pac-file/
-
Não está errado não, a regra default tem que ser a última, não pode ser a primeira.
Senão não faz sentido a outras linhas, pois elas verificam o destino se é local, etc.A regra lá é em fail over, vai tentar um e caso não encontre tenta o segundo, sem precisar como "if" para ver que rede está.
Pode ver no site: http://findproxyforurl.com/example-pac-file/
Tomas, analisando a lógica do java script ele retorna o valor da functcion no return e não no final da function como outra linguagens.
Se foce como o pascal por exemplo o return teria sempre o ultimo valor, por isso fiz esta confusão. Pelo que analisei no primeiro return que ele encontra ja termina a function com o retorno. Desta forma no meu script não precisa de tantos else if, pois eu usei isso pra isolar cada condição.
Vou rescrever o meu script e posto aqui
-
Então, eu não gosto desses "if", acho que acaba complicando.
Da forma que passei fica mais simples. -
// Regra deafult com proxy em ordem de fail-ver
return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";aqui você está chamando a função return e não definindo um valor pra ela, por isso seu script parava sempre no primeiro teste.
-
Marcello, este exemplo peguei do site: http://findproxyforurl.com/example-pac-file/
La consta como abaixo:
// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";Pra mim está funcionando.
-
No final, não no começo.
-
Certo, entendi.
-
colocar esta condição sempre no final do script certo
// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080"; -
Sim, mas só se for usar mais de uma rede.
Para uma rede só não precisa colocar os dois IPs.Para ma rede pode ser: return "PROXY 192.168.1.1:3128";
-
// Regra deafult com proxy em ordem de fail-ver
return "PROXY 1.2.3.4:3128; PROXY 5.6.7.8:3128";aqui você está chamando a função return e não definindo um valor pra ela, por isso seu script parava sempre no primeiro teste.
Sim Marcelo, agora entendi, em outras linguagens o valor é definido e o return só acontece no final da function, por isso fiz confusão. Agora entendi que o return esta saindo da funciona então não precisa de tantos else if.
-
Tomas para colocar mais de um ip fora do proxy
if (myIpAddress(), "192.168.2.2", "255.255.255.0", "192.168.2.3", "255.255.255.0") return "DIRECT";
é desta forma?