Dnsmasq + wpad

Iniciado por EuripedesXD, 04 de Janeiro de 2014, 17:01

tópico anterior - próximo tópico

EuripedesXD

Boa Tarde!

Estou tendo dificuldades de fazer o wpad funcionar através do servidor dns dnsmasq (tentei bind anteriormente, mas fui orientado a usar dnsmasq).
Se eu coloco "http://wpad/wpad.dat" não funciona, mas se coloco o domino abre o arquivo "http://wpad.local.com/wpad.dat".
Ate troquei o nome do servidor para wpad achando que resolveria.
Se coloco no script do navegador "http://192.168.200.254/wpad.dat" funciona beleza.

links que estive me orientando:
http://blog.luizagostinho.com/2009/07/08/wpad-auto-proxy-com-dnsmasq-no-centos/
http://mail.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/dnsmasq-e-wpad.dat
http://www.cooperati.com.br/2011/05/10/integracao-de-dns-com-o-dhcp/

Não configurei ainda o dhcp, pois a prioridade para mim e funcionar pelo dns primeiro.

Segue a listas de arquivos do meu servidor. (esto usando uma maquina virtual ate conseguir o resultado para implementar no servidor mesmo).

/etc/hosts

127.0.0.1       localhost
192.168.200.254 wpad.local.com
#192.168.200.254 wpad #já tentei deixar só esta linha, só a de cima, e as duas.
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


/etc/squid3/squid.conf

# Porta no qual o proxy sera conectado
http_port 3128 transparent

#Nome do Servidor
visible_hostname wpad

# Politica de acesso de ip's na rede
acl all src 0.0.0.0/0.0.0.0
acl redelocal src 192.168.200.0/24#-192.168.200.253
acl localhost src 127.0.0.1/255.255.255.255

# Permissao total a diretores
acl diretores src 192.168.200.11 192.168.200.12 192.168.200.22
http_access allow diretores

# Nao sei o que e
acl manager proto cache_object
acl purge method PURGE
acl CONNECT method CONNECT

# Politica de acesso de portas
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 2631

# Quantidade de memoria para ser usada no cache da memoria
cache_mem 150 mb

# Tamanho maximo do arquivo para ficar no cache de memoria
maximum_object_size_in_memory 1 MB

# Tamanho maximo e minimo do arquivo a ficar no cache do HD
maximum_object_size 512 MB
minimum_object_size 1 KB

# Quando atingir a percentagem maxima, desta os
# arquivos antigos ate percentagem minima
cache_swap_high 90  
cache_swap_low 60

# Localizacao da pasta de cache do HD
# Tamanho total a utilizar, qtd de pasta e subpasta
cache_dir ufs /var/spool/squid3/ 10000 16 256

# Localizao do arquivo de log de acesso do proxy
cache_access_log /var/log/squid3/access.log

# Libera url's listadas no arquivo
acl sitesliberados url_regex -i "/etc/squid3/sites/liberados"
http_access allow redelocal sitesliberados

# Bloqueio de sites pornos
acl porno url_regex -i "/etc/squid3/sites/porno"
http_access deny redelocal porno

# Bloqueio de redes socias
acl redessociais url_regex -i "/etc/squid3/sites/redessociais"
http_access deny redelocal redessociais

# Bloqueia url's listadas no arquivo
acl sitesbloqueados url_regex -i "/etc/squid3/sites/bloqueados"
http_access deny redelocal sitesbloqueados

# Palavras bloqueadas na url
acl palavrasproibidas dstdom_regex "/etc/squid3/sites/palavrasproibidas"
http_access deny palavrasproibidas


#permitindo e negando acesso atraves das acl's
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow redelocal
http_access allow localhost
http_access deny all


já tentei tirar a linha que deixa o proxy transparente só que aí não funciona mesmo.

/etc/init.d/firewall

#!/bin/sh
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp

############################
# Definicoes das Variaveis #
############################
internet="eth0"
rede="eth1"
UP_PORTS="1024:65535"
D_PORTS=":1024"

#Servidores NTP
NTP1="200.20.186.75"
NTP2="200.20.186.94"

route add default gw 177.43.94.241 $internet

export internet rede UP_PORTS D_PORTS NTP1 NTP2

#####################################
##### Definicao de Policiamento #####
####################################
# Tabela filter
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
   
##### Protecao contra IP Spoofing #####
    for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
     echo 1 >$i
    done
   
##### Ativacao do redirecionamento de pacotes (requerido para NAT) #####
    echo "1" >/proc/sys/net/ipv4/ip_forward

###############################################################

# Redirecionando Porta 80 para SQUID
iptables -t nat -A PREROUTING -p tcp -i $rede --dport 80 -j REDIRECT --to-port 3128


# Masquerade
iptables -t nat -A POSTROUTING -o $internet -j MASQUERADE


/etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/etc/init.d/firewall

service squid3 restart

exit 0


/var/www/wpad.dat
function FindProxyForURL(url, host)
{
return "PROXY 192.168.200.254:3128";
}


/etc/apache2/httpd.conf
AddType application/x-ns-proxy-autoconfig .dat

/etc/dnsmasq.conf
domain-needed
bogus-priv
interface=eth1
listen-address=127.0.0.1
server=8.8.8.8
domain=local.com


Bom ... acho que falta uma coisinha de nada que estou deixando passar.
Espero que alguém possa me ajudar.

Abraço!

EuripedesXD

Na estação de teste coloquei a seguinte configuração de rede

IP: 192.168.200.55
mascara: 255.255.255.0
gateway: 192.168.200.254
dns preferencial: 192.168.200.254

Se eu tento o comando abaixo:
ping wpad
Recebo a seguinte mensagem: A solicitação ping não pôde encontrar o host wpad. Verifique o nome e tente novamente.


Mas se tento:
ping wpad.local.com
Funciona perfeitamente.
Já alterei varias vezes o arquivo hosts no linux para ver se dava certo, como descrevi acima.

zekkerj

Lembrou de reiniciar o dnsmasq ao alterar o arquivo hosts?
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

EuripedesXD

Citação de: zekkerj online 06 de Janeiro de 2014, 08:06
Lembrou de reiniciar o dnsmasq ao alterar o arquivo hosts?

Eu descrevi o arquivo hosts acima. No caso eu só acrescentei a linha abaixo:
192.168.200.254 wpad.local.com

Tentei colocar sem dominio, tentei deixar com e sem dominio também.

Reiniciei o serviço e o próprio sistema várias vezes.

Não sei no que estou errando.

EuripedesXD

#4
No arquivo dnsmasq.conf eu acrescentei as seguintes linhas.
expand-hosts
local=/local.com/

Pois não necessárias para que o dnsmasq.conf acrescente automaticamente o domínio.
E como mostra o link: http://www.cooperati.com.br/2011/05/10/integracao-de-dns-com-o-dhcp/, quando eu digita-se ping wpad, deveria buscar automaticamente wpad.local.com.

Acredito então que aí seja o problema. Eu estava achando que seria no arquivo hosts.
Mas eu fiz um teste, acrescentei a seguinte linha nele:
127.0.0.1 pt-br.facebook.com
Com isso o facebook não entra mais.

Meu motivo de usar wpad é porque o squid não escuta sites https, com isso mesmo os usuários sem permissão tem acesso ao facebook e youtube navegando pela pagina deles em https.

Se eu colocar o arquivo de configuração no navegado isso não acontece,
mas tem várias máquinas na rede para isso isso manualmente.
E nem todas as máquinas estão no dominio para configurar o proxy por uma politica.

Resultado do ping e nslookup


Obrigado

zekkerj

CitarMeu motivo de usar wpad é porque o squid não escuta sites https, com isso mesmo os usuários sem permissão tem acesso ao facebook e youtube navegando pela pagina deles em https.

Vc quer dizer, squid transparente, não? squid configurado (ou descoberto) funciona perfeitamente com 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

EuripedesXD

Citação de: zekkerj online 08 de Janeiro de 2014, 22:04
CitarMeu motivo de usar wpad é porque o squid não escuta sites https, com isso mesmo os usuários sem permissão tem acesso ao facebook e youtube navegando pela pagina deles em https.

Vc quer dizer, squid transparente, não? squid configurado (ou descoberto) funciona perfeitamente com https.

Isso mesmo.
Como eu disse não estão todas as máquinas no servidor de dominio, senão era apenas criar uma gpo para configurar o proxy automaticamente.
Por isso o proxy é transparente, para não precisar fazer a configuração em cada máquina.
Porém por ser transparente não filtra os https, mas se configuração pelo dns (todas as máquinas estão configuradas para usar o dns local) força o uso o wpad seria a solução.
Ate mesmo porque se eu configurar manualmente, alguém pode tirar a configuração.