#! /bin/sh
wget -qO ./hosts.txt "http://winhelp2002.mvps.org/hosts.txt"
sed -i -- 's/0.0.0.0/127.0.0.1/g' ./hosts.txt
tr -d '\r' <hosts.txt >hosts.OK
mv -f ./hosts.OK /etc/hosts
rm ./hosts.txt
el sed es para que cambie la secuencia 0.0.0.0 por la típica 127.0.0.1iptables -t nat -A PREROUTING -i br-lan -p udp --dport 53 -j DNAT --to 192.168.0.253
iptables -t nat -A PREROUTING -i br-lan -p tcp --dport 53 -j DNAT --to 192.168.0.253
nslookup dominio.com
Gracias a ese comando, sabremos quién nos está resolviendo las peticiones de nombres de hosts/dns. Es muy útil para diagnosticar....
hi
¿no es mejor configurar el archivo HOST de Windows y liberar de trabajo al router?
pregunto desde la mas total ignorancia. Es por curiosidad.
saludos
Te puedo decir que lo acabo de instalar en una academia de repaso en la que soy "el Administrador" (no muy grande, eso sí). Si veo que da problemas lo investigaré y lo comentaré.
Por cierto, es todo un honor tener chincheta, gracias ;DEl tema y la explicación lo merecen. Si por mi fuera lo pondría como de obligada lectura.
Hay una empresa a la que voy en la que a veces los log del día marcan mas visitas a Facebook y Poker on-line que a la aplicación del trabajo.
poder hacer esto me iría de muerte para frenarlos.
Hay una empresa a la que voy en la que a veces los log del día marcan mas visitas a Facebook y Poker on-line que a la aplicación del trabajo.
poder hacer esto me iría de muerte para frenarlos.
Buen tutorial.
En mi casa tengo solo echa la parte del archivo hosts para bloquear los molestos anuncios cuando utilizo aplicaciones en mi TV android o el teléfono. Lo que cambia en mi caso es que creo un archivo hosts aparte más completo.
Uso el script siguiente:
#Descargar las listas de hosts indeseables
wget -qO- http://winhelp2002.mvps.org/hosts.txt|grep "^0.0.0.0" > /mnt/hdd/block.build.list
wget -qO- http://www.malwaredomainlist.com/hostslist/hosts.txt|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
wget -qO- http://adaway.org/hosts.txt|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
wget -qO- "http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext"|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
wget -qO- http://www.hostsfile.org/Downloads/hosts.txt|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
wget -qO- http://someonewhocares.org/hosts/hosts|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
wget -qO- http://sysctl.org/cameleon/hosts|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
wget -qO- http://hosts-file.net/ad_servers.txt|grep "^127.0.0.1" >> /mnt/hdd/block.build.list
#Ordenamos el contenido y eliminamos duplicados
sort /mnt/hdd/block.build.list|uniq -u >/mnt/hdd/block.sorted
#Eliminamos el retorno de carro que introduce windows y nos quedamos con el archivo hosts definitivo
sed -e 's/\r//g' /mnt/hdd/block.sorted > /mnt/hdd/block.hosts
#Borramos los archivos intermedios creados
rm -f /mnt/hdd/block.sorted
rm -f /mnt/hdd/block.build.list
#Reiniciamos el demonio dnsmasq
/etc/init.d/dnsmasq restart
Este archivo ocupa unos 3.5 MB, así que yo lo guardo en el disco USB; luego hay que modificar el fichero /etc/config/dhcp y añadir la linea "list addnhosts '/mnt/hdd/block.hosts" cambiando cada uno la ruta del archivo block.hosts por la suya. Para que esa opción tenga efecto hay que eliminar el paquete dnsmasq e instalar dnsmasq-full.
Enviado desde mi LG-D802 mediante Tapatalk
Para que esa opción tenga efecto hay que eliminar el paquete dnsmasq e instalar dnsmasq-full.¿Esa es la opción de Additional Hosts files en luci? (Bajo menú network/dhcp and dns/Resolv and Hosts Files). A mí me va sin modificar nada de paquetes...
Me parece que el archivo /etc/hosts en un router es ignorada por la red. Me explico.
Cuando hacemos una petición, la hacemos al DNS. El router enruta la IP del DNS y entrega la respuesta al equipo que la ha solicitado. En ningún momento verifica el /etc/hosts
Habría que indicar explícitamente que se pueda usar este archivo: https://wiki.openwrt.org/es/doc/howto/dhcp.dnsmasq (https://wiki.openwrt.org/es/doc/howto/dhcp.dnsmasq)
PD: Curiosamente, hace poco estuve trasteando con un sistema que me proporcionase un único archivo hosts a partir de muchos otros. Conseguí montar en Github esta idea, teniendo un hosts como suma de otros archivos de Internet. La gracia es que se actualiza diariamente y está pensado para añadir fácilmente más fuentes: https://github.com/vk496/hosts (https://github.com/vk496/hosts)
A lo mejor a alguien le sirve para bloquear la publicidad en Android ;)
Salu2
sed 's/\t/ /g' archivocontabs > archivosintabs
Lo he probado y va.sed -i -- 's/0.0.0.0/127.0.0.1/g' archivo0000
iptables -t nat -A prerouting_lan_rule -p udp --dport 53 -j DNAT --to 192.168.0.253
iptables -t nat -A prerouting_lan_rule -p tcp --dport 53 -j DNAT --to 192.168.0.253
#!/bin/sh
# ACTUALIZACION DEL ARCHIVO HOSTS FILTRO DE BASURA DE INTERNET
rm /etc/hosts
#Descargar las listas de hosts indeseables
wget -qO- http://winhelp2002.mvps.org/hosts.txt|grep "^0.0.0.0" > /root/block.build.list
# Reemplazamos 0.0.0.0 por 127...
sed -i 's/0.0.0.0/127.0.0.1/g' /root/block.build.list
wget -qO- http://www.malwaredomainlist.com/hostslist/hosts.txt|grep "^127.0.0.1" >> /root/block.build.list
wget -qO- http://adaway.org/hosts.txt|grep "^127.0.0.1" >> /root/block.build.list
wget -qO- "http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext"|grep "^127.0.0.1" >> /root/block.build.list
wget -qO- http://www.hostsfile.org/Downloads/hosts.txt|grep "^127.0.0.1" >> /root/block.build.list
wget -qO- http://someonewhocares.org/hosts/hosts|grep "^127.0.0.1" >> /root/block.build.list
wget -qO- http://sysctl.org/cameleon/hosts|grep "^127.0.0.1" >> /root/block.build.list
wget -qO- http://hosts-file.net/ad_servers.txt|grep "^127.0.0.1" >> /root/block.build.list
# Reemplazamos tabs por espacios (1x1)
sed -i 's/\t/ /g' /root/block.build.list
# Eliminamos espacios intermedios sobrantes, convirtiendolos a 1 solo
sed -i "s/[[:space:]]\+/ /g" /root/block.build.list
#Ordenamos el contenido y eliminamos duplicados
sort /root/block.build.list|uniq -u >/root/block.sorted
#Eliminamos el retorno de carro que introduce windows y nos quedamos con el archivo hosts definitivo
sed -e 's/\r//g' /root/block.sorted > /root/block.hosts
#Borramos los archivos intermedios creados
rm -f /root/block.sorted
rm -f /root/block.build.list
mv /root/block.hosts /etc/hosts
#Reiniciamos el demonio dnsmasq
/etc/init.d/dnsmasq restart
#!/bin/bash
DIR=/tmp
DIRFINAL=/mnt/hdd
# ACTUALIZACION DEL ARCHIVO HOSTS FILTRO DE BASURA DE INTERNET
#Borramos el anterior fichero hosts para hacer espacio
rm -f $DIR/block.hosts
#Descargar las listas de hosts indeseables
wget -qO- http://winhelp2002.mvps.org/hosts.txt|grep "^0.0.0.0" > $DIR/block.build.list
# Reemplazamos 0.0.0.0 por 127...
sed -i -e 's/0.0.0.0/127.0.0.1/g' $DIR/block.build.list
wget -qO- http://www.malwaredomainlist.com/hostslist/hosts.txt|grep "^127.0.0.1" >> $DIR/block.build.list
wget -qO- http://adaway.org/hosts.txt|grep "^127.0.0.1" >> $DIR/block.build.list
wget -qO- "http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext"|grep "^127.0.0.1" >> $DIR/block.build.list
wget -qO- http://www.hostsfile.org/Downloads/hosts.txt|grep "^127.0.0.1" >> $DIR/block.build.list
wget -qO- http://someonewhocares.org/hosts/hosts|grep "^127.0.0.1" >> $DIR/block.build.list
wget -qO- http://sysctl.org/cameleon/hosts|grep "^127.0.0.1" >> $DIR/block.build.list
wget -qO- http://hosts-file.net/ad_servers.txt|grep "^127.0.0.1" >> $DIR/block.build.list
# Cambiamos todas las secuencias de espacios, incluyendo tabuladores, por un solo espacio
sed -i -e 's/[\t[:space:]]\+/ /g' $DIR/block.build.list
# Borramos los comentarios que llevan algunas lineas al final
sed -i -e 's/[[:space:]\*]#.\+//g' $DIR/block.build.list
# Fuera los espacios al final de cada linea para poder compararlas correctamente
sed -i -e 's/[[:space:]]\+$//g' $DIR/block.build.list
# Fuera el retorno de carro que introduce windows
sed -i -e 's/\r//g' $DIR/block.build.list
# Se ordenan las lineas y se deja solo una de aquellas repetidas
sort $DIR/block.build.list|uniq >$DIRFINAL/block.hosts
# Se borra el fichero intermedio
rm -f $DIR/block.build.list
# Reiniciamos el demonio dnsmasq
/etc/init.d/dnsmasq restart
exit 0
/etc/init.d/dnsmasq restart
Toda la parte de los hosts, instalando adblock en el router se facilita bastante la tarea y hace lo mismo.
Hola, ahora no sé qué me está pasando, que el hosts no me resuelve, como comentaba vk496
Me está pasando tras resetear el router y volver a configurarlo. Pero sé a ciencia cierta que antes el hosts sí que me resolvía ips. ¿Qué se m está pasando por alto? ???
Ok, creo que ya sé lo que está pasando.
Windows no redirige la petición al servidor DNS si el nombre a consultar no es un FQDN (por ejemplo pepe.com).
Para ello creo que hay que especificarle de alguna manera que use el router como servidor de nombres netbios (wins, si no recuerdo mal). Con el servidor DHCP hay un opción extra que lo indica, creo que es la 44. En configuración manual supongo que se podrá indicar de alguna manera...
nslookup filtro.com
Hola, gente. Voy a comentar un problemilla que he tenido estos días respecto a la resolución de nombres desde archivo HOSTS que me ha vuelto loco, hasta que he dado con la causa.
En mi router openwrt (el mío principal), tengo en el hosts, que resuelva 192.168.0.253 <--- filtro.com, para acceder más fácilmente sin tener que usar la ip.
Pues bien, últimamente lo que hacía era llevarme a internet, al dominio filtro.com de internet. Es decir, no me lo resolvía a la IP de mi red local.
Al usar el comandoCódigo: [Seleccionar]nslookup filtro.com
He descubierto que otros routers que tengo repartidos por casa, también con openwrt y con IPv6 habilitado, me estaban resolviendo la petición, antes que el router que yo quería que lo hiciera. Es decir, se estaban colando. Lo he resuelto desactivando IPv6 en todos ellos y ahora ya me resuelve bien el router que yo quiero en cuestión.
Lo comparto como referencia para mí mismo en un futuro, o por si a alguien también le pasa.
IPv6 lo he desactivado en network, interfaces, edit... y todo lo que he visto con IPv6 lo he cambiado a disabled.
192.168.0.253 livebox caracol elefante router
Ok, ya lo tengo más o menos claro, gracias Tki2000.
He separado por una parte el archivo hosts en /etc y me he creado un par de archivos "localhosts" personales en /root con resoluciones propias.
Otra curiosidad a comentar es que en el mismo archivo hosts, se puede incluir, en una sola linea, varios nombres de host para una misma IP, por ejemplo:Código: [Seleccionar]192.168.0.253 livebox caracol elefante router
De esta manera, resolverá cualquier petición a dichos nombres con la misma IP, sin necesidad de tenerlos separados uno en cada linea.
Y ya lo he puesto con lo del dominio .lan ese que comentabas y me funciona bien. Pero tengo una duda:
En el apartado Network, DHCP y DNS, General settings, hay dos opciones para rellenar que dicen:
Local server = /lan/
Local domain = lan
La opción de Local domain la entiendo, que es la que añade el sufijo de dominio .lan a los nombres de host para que queden tal que así:
livebox.lan
caracol.lan
elefante.lan
router.lan
....
Pero lo de Local server no termino de ver su utilidad. Según entiendo, es para que no tire a Internet las peticiones terminadas en .lan... pero... ¿eso no lo está haciendo ya por defecto la opción Local domain?
Todo esto de tener organizados los hosts por dhcp estático (IP fija automática) y con su correspondiente nombre.... es una auténtica maravilla. Sobre todo para sitios con muchos ordenadores.
iptables -t nat -A prerouting_lan_rule -p udp --dport 53 -j DNAT --to 192.168.0.253
iptables -t nat -A prerouting_lan_rule -p tcp --dport 53 -j DNAT --to 192.168.0.253
Me acabo de dar cuenta de que las reglas de firewall que (deberían) capturan y redirigen el tráfico de resolución DNS no me están funcionando.
Ni las que tenía yo puestas, ni las que recomendó Tki2000:Código: [Seleccionar]iptables -t nat -A prerouting_lan_rule -p udp --dport 53 -j DNAT --to 192.168.0.253
iptables -t nat -A prerouting_lan_rule -p tcp --dport 53 -j DNAT --to 192.168.0.253
???
iptables -t nat -A PREROUTING -i br-lan -s !192.168.1.21 -p udp --dport 53 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -i br-lan -s !192.168.1.21 -p tcp --dport 53 -j DNAT --to 192.168.1.1
* Running script '/etc/firewall.user'
iptables v1.4.21: host/network `!192.168.1.21' not found
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `br-lan'
Try `iptables -h' or 'iptables --help' for more information.
! Failed with exit code 2
The exclamation point (!) must now be placed before the -s parameter: sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
iptables -t nat -A PREROUTING -i br-lan ! -s 192.168.1.21 -p udp --dport 53 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -i br-lan ! -s 192.168.1.21 -p tcp --dport 53 -j DNAT --to 192.168.1.1
#!/bin/ash
echo none > /sys/class/leds/arv7519rw22:red:internet/trigger
echo heartbeat > /sys/class/leds/arv7519rw22:blue:alarm/trigger
echo 1 > /sys/class/leds/arv7519rw22:blue:alarm/brightness
if [ ! -f /root/FILTRO_ON ] && [ ! -f /root/FILTRO_OFF ]; then touch /root/FILTRO_OFF
fi
if [ -f /root/FILTRO_ON ]; then
uci delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server='84.200.69.80'
uci add_list dhcp.@dnsmasq[0].server='84.200.70.40'
cp /etc/hosts /etc/hosts.BAK
echo 127.0.0.1 localhost > /etc/hosts
mv /root/FILTRO_ON /root/FILTRO_OFF
echo 1 > /sys/class/leds/arv7519rw22:red:internet/brightness
else
uci delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server='208.67.222.222'
uci add_list dhcp.@dnsmasq[0].server='208.67.220.220'
cp /etc/hosts.BAK /etc/hosts
mv /root/FILTRO_OFF /root/FILTRO_ON
echo 0 > /sys/class/leds/arv7519rw22:red:internet/brightness
fi
uci commit dhcp
/etc/init.d/dnsmasq restart
echo 0 > /sys/class/leds/arv7519rw22:blue:alarm/brightness
exit 0
mkdir -p /etc/hotplug.d/button
nano /etc/hotplug.d/button/buttons
#!/bin/sh
logger the button was $BUTTON and the action was $ACTION
Con esto y usando logread después de pulsar el botón deseado, averigüé que el botón se llamaba rfkill, así que modifiqué el script buttons:#!/bin/ash
logger the button was $BUTTON and the action was $ACTION
if [ "$ACTION" = "pressed" ]; then
if [ "$BUTTON" = "rfkill" ]; then /root/filtro.sh
fi
fi