Seguridad Wireless - Wifi

Equipos y materiales => Puntos de acceso, routers, switchs y bridges => Openwrt & LEDE => Mensaje iniciado por: peperfus en 23-04-2017, 18:12 (Domingo)

Título: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 23-04-2017, 18:12 (Domingo)
Buenas, aquí va cómo lo he hecho:

Parte de OpenDNS
Esta parte es opcional (en realidad todo es opcional). Esto de OpenDNS está guay porque se puede configurar filtros desde su web, a nivel de categorías (pornografía, sitios ilegales, fraudulentos, etc etc...). Os recomiendo que lo probéis.
Yo lo tengo así montado:

1) Crear cuenta en OpenDNS y añadir la red de casa. Indicar que es una IP dinámica.
  El programa updater para el pc, sólo hay que bajárselo si no tenemos un servicio de dns dinámico tipo dyndns, noip o alguno por el estilo.
2) (Si vamos a usar el updater desde el pc ya hemos terminado la parte de opendns. Pasar a la parte del archivo hosts). Iniciar sesión en dnsomatic.com (mismo usuario y contraseña que opendns) e indicarle la red de opendns (la nuestra), que es la que vamos a actualizar.

Ahora, en Openwrt:
3) Este paso requiere tener un nombre de dominio asociado a nuestra ip dinámica, como se ha comentado en el paso 1. En caso de no tener dicho dominio, hay que utilizar el updater de opendns desde el pc y omitir este paso.
Instalar luci-app-ddns, luego recargamos, nos vamos al menú services, dynamic dns, creamos una nueva configuración (nombre + click en Add) e indicar esta config:
  Pestaña Advanced Settings:
En Timer settings yo le pongo check interval cada hora.

Y con esto ya tendríamos configurada la parte de fistros de OpenDNS.

Siguiente: configuración del archivo hosts:
Yo he cogido el de: http://winhelp2002.mvps.org/hosts.txt; pero hay un montón de sitios por ahí que ofrecen otros. Coged el que queráis.
Lo tengo configurado para que lo descargue y copie al del sistema en el arranque, de esta manera:

Primero creamos el script. Entramos por ssh y con nuestro editor favorito le ponemos este contenido:
nano bajarhosts.sh
Código: [Seleccionar]
#! /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.1
y el tr para que quite los saltos de línea de windows (que se suelen ver como ^M)
Por supuesto, todo esto es personalizable a gusto y necesidad de cada uno.
No olvidar hacerlo ejecutable con chmod +x ./bajarhosts.sh
En luci, nos vamos a: System, startup y abajo del todo, en Local Startup, antes del exit 0, le ponemos la línea de ejecución del script: /root/bajarhosts.sh

Ok, ya tenemos el archivo hosts listo.
Siguiente: Hacer que openwrt nos resuelva peticiones DNS:

Nos vamos a Network, DHCP and DNS y en General Settings, en DNS Forwardings le ponemos las DNS de OpenDNS:
208.67.222.222
208.67.220.220
Por supuesto, guardad los cambios.

Ok, ya tenemos todo listo. Ahora sólo falta configurar cada cliente para que use como DNS, el router con openwrt. Probadlo y funcionará.
Si no va o hace cosas raras:
Cerrad todo en el PC y limpiad la caché DNS (en windows, desde un cmd: ipconfig /flushdns) y reiniciar el router. Debería funcionar.

¡¡ BONUS STAGE !!  ;D
Configurar el fireguay de openwrt para capturar y resolver todas las peticiones DNS, aunque vayan a otro servidor:
Nos vamos a Network, Firewall y, en Custom Rules insertamos estas dos líneas:
Código: [Seleccionar]
iptables -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

Cambiando 192.168.0.253 por la ip de vuestro router openwrt que resolverá las dns.

Naturalmente, esto no funcionará si no tenéis configurado como gateway (puerta de enlace), el mismo router en los clientes.

Edito (añado): A no ser que sepáis sobre IPv6 (yo a penas lo conozco), recomiendo desactivarlo por completo, desde network, interfaces, edit y cambiar todas las opciones de ipv6 a disabled. Y también hacerlo en todos los routers de la red; ya que interfieren en resoluciones de nombres y nos pueden volver locos. Un comando muy útil para saber qué router nos está resolviendo una petición es:
Código: [Seleccionar]
nslookup dominio.comGracias a ese comando, sabremos quién nos está resolviendo las peticiones de nombres de hosts/dns. Es muy útil para diagnosticar....
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: drvalium en 23-04-2017, 18:32 (Domingo)
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
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: peperfus en 23-04-2017, 18:46 (Domingo)
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

Sin ser ningún crack en materia tampoco y desde mi opinión, al hacerlo en el router, nos vale para todos los ordenadores de la red, por lo que ahorramos trabajo de mantenimiento y configuración; además, de esta manera, liberamos de trabajo a los ordenadores. Tenemos la filtración centralizada, con las ventajas que ello supone. Aunque si te digo la verdad, no sé cómo afectará esto al rendimiento del router y supongo que dependerá de cada router (los hay más y menos potentes...). Y supongo que también dependerá del trabajo que esté haciendo ese router en sí (descargar torrents, etc etc etc...., o no estar haciendo prácticamente nada).
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: drvalium en 23-04-2017, 19:31 (Domingo)
Las ventajas que tiene a la hora del mantenimiento las tenia claras. ;)

Me interesaba sobretodo en el modo que afecta al rendimiento del router, como no se como gestiona ese tipo de información no se si consume mucha RAM constante o solo mira el archivo cuando se hacen peticiones, o si cada vez que se pide una web revisa toda la lista. O que si consume mucho procesador en vez de RAM o de todo un poco.

varios ordenadores a la vez, quizás dejen sin RAM o Procesador al router ¿podría ser?

La gente suele usar routers mas bien cutres, casi siempre los de las compañías con un open-wrt o uno nuevo que creo se llama LEDE, no me suena ver por aquí a mucha gente que se gaste pasta en routers.



Sobretodo, gracias por compartir la configuración.
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: peperfus en 23-04-2017, 19:57 (Domingo)
Pues no lo había pensado de esa manera.

Claro, estas cosas a pequeña escala, para uno o dos ordenadores van bien; pero en el momento de usar esto para más de x ordenadores...., ya será otro cantar, como bien apuntas.

En Windows sé que el archivo hosts no lo consulta si tiene la asociación en caché, que es mucho más rápida. Aquí, en open creo que va de la misma manera, porque de hecho tuve que reiniciar el router al hacer un cambio en el archivo y no saber cómo vaciarle la cache dns (estuve buscando pero no encontré ningún comando equivalente al ipconfig /flushdns de windows).

Sé que el archivo del tutorial (el que uso yo mismo) pesa casi 500 K. Supongo que con el tiempo la RAM se irá llenando con la caché de resoluciones.

Ahora que me acuerdo, había sobre esto una observación en la web de la que saqué dicho archivo. Voy a echarle un vistazo y si encuentro algo interesante lo pongo.
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: peperfus en 23-04-2017, 20:04 (Domingo)
Nada, dice sobre cambiar el ttl de la cache dns de windows...

De todas formas, cada cliente tiene también su propia caché, así que supongo que el trabajo "duro" para el router se aliviará con el tiempo al ir guardando cada cliente sus propias dns en caché.

No sé, soy algo novatillo en esto; no tengo más que unos estudios, sin práctica profesional; así que casi todo lo que hago son suposiciones y todo visto desde un ámbito casero.  ;D

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é.
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: Pteridium en 24-04-2017, 15:06 (Lunes)
Chincheta.

Edición: y añadido a Hilos relevantes de OpenWRT (https://foro.seguridadwireless.net/openwrt/(indice)-hilos-relevantes-de-openwrt/).
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: drvalium en 24-04-2017, 16:47 (Lunes)
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é.

buen sitio para probar, yo lo hago en empresas y ahí si se lía te degüellan ;D
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: peperfus en 24-04-2017, 18:50 (Lunes)
Bueno, de hecho la academia también es una empresa  ;D ;D ;D

E Internet también hace bastante falta. Se usa mucho.

Si falla también me están llamando la atención, así que también me interesa que funcione bien. Pero lo dicho: si veo que da problemas, lo quito y lo dejo como estaba.

Por cierto, es todo un honor tener chincheta, gracias  ;D
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: drvalium en 24-04-2017, 18:54 (Lunes)
Gracias a ti por el aporte ;)
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: Pteridium en 24-04-2017, 19:22 (Lunes)
Por cierto, es todo un honor tener chincheta, gracias  ;D
El tema y la explicación lo merecen. Si por mi fuera lo pondría como de obligada lectura.

Este es el tipo de guías y tutoriales que hacen grande el foro en el que se publican.
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: drvalium en 24-04-2017, 19:32 (Lunes)
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.
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: Tki2000 en 25-04-2017, 08:39 (Martes)
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.

Otra opción sería formar a los usuarios para que no lo hicieran (en este país eso es una utopía). Yo también he trabajado en "instituciones oficiales", y las respuestas típicas eran, "yo no he sido, habrá sido otro" (en su ordenador, con sus contraseñas y en su horario de trabajo, claro...).

Ya veo que Pteridium ya lo ha incorporado al  [Índice] Hilos relevantes de OpenWrt  (https://foro.seguridadwireless.net/openwrt/(indice)-hilos-relevantes-de-openwrt/)

No creo que esto sobrecargue mucho al router, pero si así fuera, incluso podemos pensar en poner un router con openwrt, dedicado exclusivamente a resolver DNS y nombres de hosts. Algo parecido he puesto en la configuración de una VPN, hace poco, con un servidor de nombres exclusivo, y supongo que eso podría ser una opción.
Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: jar229 en 25-04-2017, 12:21 (Martes)
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.

Yo no he sido ... es la frase más oída por un informático  >:D

Estupendo aporte peperfus   >:( >:(
Título: Re:
Publicado por: cimbor en 26-04-2017, 01:46 (Miércoles)
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

Título: Re: [mini guía] Como filtrar dominios basura por DNS +OpenDNS y archivo hosts.
Publicado por: Tki2000 en 26-04-2017, 09:33 (Miércoles)
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



cimbor, cuando utilizas ese archivo tan grande, ¿notas que el router vaya más lento en las peticiones a internet, o que se ralentice el proceso de acceso?
¿Qué router utilizas (procesador, flash, y ram)?
¿Qué versión de openwrt?

Ya que hemos hablado de eso, es para ir contrastando si la utilización de estos macro-ficheros ralentiza o no el uso cotidiano, y ya que parece que lo llevas usando un tiempo, puedes dar tu opinión sobre dicho comportamiento.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: vk496 en 26-04-2017, 09:54 (Miércoles)
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
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 26-04-2017, 16:02 (Miércoles)
Cimbor, mola !!

Lo de la resolución de dominio a 0.0.0.0 en vez de la típica 127.0.0.1 leí que se hacía en los sistemas windows, a partir del 8, si no recuerdo mal, por un tema de incompatibilidad o algo así; por eso miré lo de cambiarlo otra vez a 127.0.0.1; pero si también has probado que funcione con 0.0.0.0, pues ok. Por cierto, ¿podrías explicar qué diferencia hay?.

vk496:
El router sí tiene en cuenta el archivo hosts. De hecho, según tengo entendido, sigue el mismo "protocolo" de resolución de dominios que windows:
1) mira en la caché
2) mira en el archivo hosts (y añadidos, si los hay)
y 3) pasa la petición a los servidores dns configurados.


Está mejor la solución de cimbor para crear archivoi hosts. El que me bajo yo "sólo" pesa unos 500K; Si el suyo es de 3,5 MB.... No hay color. Voy a probarlo a añadirlo a mi livebox.

De hecho, cimbor.... ¿te parece bien que incluya tus scripts al primer post? Citando que es una solución tuya, por supuesto.


Por cierto:
Citar
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...
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: Tki2000 en 26-04-2017, 18:04 (Miércoles)
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

En mi caso, el servidor de DNS es el router, así es que la resolución la debe hacer el router. Si el nombre no lo encuentra, entonces lanza la petición a la puerta de enlace.
Si el servidor de DNS no es el router, se puede interceptar el tráfico al puerto 53, tal y como describe peperfus en el primer post, para que lo sea.
dnsmasq tiene la opción -H para decirle el fichero en el que están contenidas las redirecciones. Supongo que si el nombre lo encuentra en el fichero, no tiene por qué lanzar la petición fuera de la red. En mi caso, esta opción la tengo sin instalar el paquete dnsmasq-full, así que no sé si ése será un requerimiento. Para probar, podemos lanzar dnsmasq con argumentos desde el shell.

Puedo hacer una prueba en unas horas, pero debiera de funcionar. Luego posteo los resultados.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: cimbor en 26-04-2017, 23:45 (Miércoles)
El fichero de hosts que genera mi script(de tan solo 110000 entradas) lo guardo en el USB y no da problemas de rendimiento en mi router, que es un ARV7519RW22; aunque antes lo tenia en un Comtrend 3025u y funcionaba igualmente al mismo tiempo que ejecutaban samba en ese disco y el transmission todo el día.

Usad el script, pero hay que modificarlo para cambiar los 0.0.0.0 por 127.0.0.1; en windows 10 da error de transmission al hacer ping a 0.0.0.0 y en linux no. Lo podria probar también en un HG556a, pero supongo que iria bien con el uso que le doy(2 o 3 conexiones a la vez como mucho); la prueba sería probarlo en una empresa con mucha gente haciendo peticiones a la vez y ver como se pone la CPU.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 27-04-2017, 01:56 (Jueves)
Además de sustituir el 0.0.0.0 por 127..., más que nada por unificar criterios...; también convendría reemplazar los tabs por espacio, por el mismo motivo, y para que detecte las líneas duplicadas correctamente, ya que si hay una con espacio y otra con tabulador, serán distintas, aunque sea el mismo dominio.

Se puede utilizar el comando:
Código: [Seleccionar]
sed 's/\t/ /g'  archivocontabs > archivosintabsLo he probado y va.

Sustituir 0.0.0.0 por 127.0.0.1:
Código: [Seleccionar]
sed -i -- 's/0.0.0.0/127.0.0.1/g' archivo0000
La opción -i hace los cambios en el propio archivo. No sé que hace el -- (lo copié de internet ¿alguien lo sabe?). Sería conveniente aplicar también -i en el sed del cambio de tabs a espacios, por tema de routers con poco espacio en flash.

EDITO:
Después de añadir estos cambios al script, el archivo hosts resultante se me ha reducido a 3 MB
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: Tki2000 en 27-04-2017, 14:04 (Jueves)
He hecho unas cuantas pruebas con los ficheros hosts, y parece que funciona bastante bien, y el router ni se despeina.

He bajado el archivo hosts de vk496 ( de aquí  (https://foro.seguridadwireless.net/openwrt/(mini-guia)-como-filtrar-dominios-basura-por-dns-opendns-y-archivo-hosts/msg355607/#msg355607)), y lo he subido a la RAM del router. He agregado el fichero hosts en luci -> DHCP -> Additional hosts file. Con el servidor de DNS puesto a un Windows, como el router openwrt, la resolución de nombres la da a 127.0.0.1, luego funciona. Cambiando el servidor de DNS a 8.8.8.8, se salta el router, pero agregando las reglas de iptables de peperfus ( de allá  (https://foro.seguridadwireless.net/openwrt/(mini-guia)-como-filtrar-dominios-basura-por-dns-opendns-y-archivo-hosts/msg355495/#msg355495)) interceptamos el tráfico, y el router vuelve a resolver los nombres a 127.0.0.1, luego también funciona. Aunque mi consejo, es que se utilicen las tablas prerouting_lan_rule de iptables, para la intercepción del tráfico en el puerto 53, de esta forma:

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

La navegación no se resiente. La CPU del router es más o menos potente ( QCA9558@720MHz / 128MB ).
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 27-04-2017, 16:44 (Jueves)
Lo acabo de poner en la academia, donde tengo como firewall un HG556a (CPU 300 Mhz, 64 MB RAM) y de momento va perfecto.

Una cosa:

El fichero, tras el cambio de tabs a espacios (1 por 1), me da muchas lineas con 2 espacios. Algo debe haber mal en los seds que hacen el cambio....
Sería conveniente arreglarlo para reducir más aún el tamaño del hosts y conseguir eliminar más duplicados (que seguramente debe haber).

Edito: debe haber 2 tabs en muchas lineas, por eso quedan 2 espacios. Hay que reducirlo a 1 espacio para conseguir más coincidencias duplicadas y sanearlo más aún.


EDITO:
Lo tengo. Hay que usar este comando:
sed -i "s/[[:space:]]\+/ /g"  /root/block.build.list


Con permiso de cimbor, pongo su script modificado que utilizo ahora mismo:

Código: [Seleccionar]
#!/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

Con este script se consigue reducir el tamaño del susodicho hosts a 2,8 MB
Eso sí, (al menos a mí), el HG556a se toma sus 5 minutos largos para "compilarlo"...
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: cimbor en 29-04-2017, 01:14 (Sábado)
Hay un error en el uso de uniq; con el parametro -u que tiene lo que hace es no mostrar ninguna de las lineas repetidas, cuando lo que queremos es que muestre una; para ello hay que quitar ese parámetro.

Además hay algunas lineas que siguen repetidas porque algunas tienen un comentario al final, también hay que quitarlas usando sed.

Con esos cambios el hosts queda en 2,73MB y tarda un minuto en mi ARV7519RW22 usando el script:

Código: [Seleccionar]
#!/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



Enviado desde mi LG-D802 mediante Tapatalk

Editado para resaltar la parte de código
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 29-04-2017, 10:25 (Sábado)
Perfecto

 >:( >:( >:( >:(
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 15-05-2017, 10:55 (Lunes)
Estaba preocupado por la caché dns de los hosts clientes; ya que si previamente habían consultado un dominio, la IP se les queda registrada en la caché y no la actualizan hasta vaciarla manualmente (o hasta haber pasado un tiempo determinado, según tengo entendido).

¿Cómo FORZAR la actualización de la caché dns de los hosts clientes (desde "servidor")?

Acabo de descubrir que, simplemente reiniciando el servicio dnsmasq, los hosts clientes se ven obligados a consultar de nuevo la resolución de nombres de dominio, de forma inmediata y automática.

Código: [Seleccionar]
/etc/init.d/dnsmasq restart
Esto viene GENIAL cuando queremos centralizar dicha actualización desde el "servidor".

La prueba, a modo de demostración se puede hacer con un ping a un dominio, ver su ip. Luego modificar esa asociación ip-dominio en el archivo hosts de open, reiniciar dnsmasq y volver a hacer la consulta. Se puede ver que SIN haber vaciado la caché (ipconfig /flushdns en windows), se obtiene la resolución de dominio actualizada desde el hosts recién modificado de open.

Me imagino que esto enviará cierto tipo de señal que hará caducar el "TTL" de la caché dns de los hosts clientes, olbigándolos a actualizar cada nueva petición.

Mola.

EDITO y me contesto a mí mismo (y a quien pueda interesar).
No lo he probado, pero creo que esto sólo sirve para configuraciones de clientes DHCP; ya que lo he estado probando ahora en una máquina con configuración IP estática y la caché DNS del cliente sigue en memoria, pese a reiniciar el dnsmasq; lo cual es lógico.
Para este menester, creo que ya sería preciso configurar un servidor DNS algo más avanzado de dnsmasq (que según he leído y creo, no es un servidor dns propiamente dino, sino un "dns forwarder", usease, un "correveydile"). La idea ahora sería configurar un servidor dns (aunque sólo sea caché, o ligero, de funciones justas), para tan sólo modificar a antojo el TTL de los registros caché y así forzar a los clientes a refrescar sus cachés DNS tras el TTL deseado.

Ok, creo que ya he dado con la clave.
Existen unos parámetros sobre TTL que le podemos configurar al dnsmasq.
Se puede ver en:
http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
El parámetro que me interesa en cuestión es el:
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: ruben_p en 16-05-2017, 11:56 (Martes)
Toda la parte de los hosts, instalando adblock en el router se facilita bastante la tarea y hace lo mismo.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 16-05-2017, 12:49 (Martes)
Toda la parte de los hosts, instalando adblock en el router se facilita bastante la tarea y hace lo mismo.

Ese paquete no está en los repositorios oficiales... ¿de dónde lo has sacado?
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: ruben_p en 16-05-2017, 20:07 (Martes)
En LEDE si está, la version estable 17.01.1 va muy bien y es del 18 de abril, te recomiendo que la pruebes.

https://forum.openwrt.org/viewtopic.php?id=59803&p=17 aqui ya dice el desarollador que se a pasado a lede

https://forum.lede-project.org/t/adblock-2-x-support-thread/507


Yo uso dnscrypt contra opendns, para ver logs y asi bloquear conexiones excesivas raras que vea. Y luego adblock bloqueando unos 40000 host en varias listas.

Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 25-06-2017, 22:05 (Domingo)
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...
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: Tki2000 en 26-06-2017, 13:49 (Lunes)
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...

Intenta añadir el sufijo .lan para encontrar los equipos de la red interna. Es el sufijo por defecto en openwrt.
Si el equipo tiene como nombre netbios equipo1, intenta hacerle ping a equipo1.lan
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 27-06-2017, 23:04 (Martes)
Ok, ya está claro. Sí que debe de ser eso.

Además hay un par de opciones: Local server Y Local domain en las opciones generales de DHCP y DNS. Si luego nos vamos a opciones avanzadas y marcamos expandir hosts, creo que no es necesario añadir el dominio al nombre del host. (Lo estoy mirando ahora, pero no lo he probado, aunque tiene sentido.)
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 27-09-2017, 10:36 (Miércoles)
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 comando
Có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.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: Tki2000 en 27-09-2017, 16:16 (Miércoles)
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 comando
Có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.

Si lo tienes para resolver nombres dentro de tu red, deberías usar el sufijo .lan, y acceder a él como filtro.lan
Deberías tener un sólo servidor de nombres en la red. Desactiva los otros.
Yo también tengo baneado el IPv6 en muchas redes.  ;)
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 30-09-2017, 08:35 (Sábado)
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.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: Tki2000 en 30-09-2017, 16:46 (Sábado)
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.

Ahí me has pillado. Con las explicaciones que veo por ahí tampoco me queda muy claro.
Si alguien tiene la amabilidad de explicarlo, bienvenido sea.

Edito: Aquí he encontrado información adicional, que parece relevante: http://kacangbawang.com/openwrt-configuration-hacks-part-2/
Según eso, uno es una enumeración de dominios, y lo otro son los sufijos que le corresponden a cada dominio enumerado.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 30-09-2017, 21:42 (Sábado)
Mola y muy bien explicado.

Entonces, el local domain es el sufijo que añade por defecto a las peticiones de nombres sin sufijo. Por eso puede resolver ping router, porque le añade .lan= ping router.lan, el cual sí existe por la opción server domain.

Edito (añado):

ATENCIÓN, IMPORTANTE:
En la sección "DHCP and DNS", General settings, el Local server, en caso de especificarse alguno, DEBE estar entre /, es decir, por ejemplo: /lan/
El Local domain se pone tal cual. Ejemplo:
Local Server: /pepito/
Local Domain: pepito
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 07-12-2017, 19:23 (Jueves)
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

 ???
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: Tki2000 en 07-12-2017, 23:22 (Jueves)
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

 ???

Si tienes el nombre resuelto, antes de activar las reglas, puede que lo esté cogiendo de la caché de dns. Haz un flush de la caché.
Prueba a reiniciar el firewall después de activar las reglas.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 08-12-2017, 18:26 (Viernes)
Sísí, lo he hecho, tanto en el PC cliente como en el firewall. Y para asegurarme he reiniciado los 2.
Incluso he activado la opción: "Log queries: Write received DNS requests to syslog ". Pero luego en el shell, al hacer el comando logread, no me aparece la petición, así que creo que el firewall se la pasa por el forro.

Lo acabo de probar en casa y sí que me va. Es en la academia donde me falla.  ???

En la academia tengo antes de esas reglas otra regla.... no sé si influirá el orden. Probaré a invertirlo.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 08-12-2017, 19:16 (Viernes)
Por cierto, por si a alguien le interesa la seguridad.....

He conocido este servicio que mejora la seguridad del DNS del cliente que lo utiliza:

DNSCrypt (https://dnscrypt.org/)

Creo que es para evitar el DNS spoofing.

Y cosa MUY CURIOSA: teniendo activado el DNSCRYPT, el firewall sigue resolviendo con las reglas de firewall.

Edito: (un par de meses después).
He vuelto a hacer la prueba y ahora el DNSCrypt sí que resuelve por encima de la regla de firewall. No sé qué pasó entonces. La única diferencia significativa es que la prueba anterior fue con Windows XP y esta vez ha sido con Windows 10.
Título: Re: [Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 14-12-2017, 17:06 (Jueves)
Código: [Seleccionar]
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

Quería redirigir a todos excepto al de la IP 21, pero no funciona. No redirige a ninguno. Ahí está el fallo, en la sintaxis, porque al ejecutarlo, me pone:

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

Creo que ya sé cómo es:
Citar
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

Mañana lo probaré, que ya no estoy en el curro.
EDITO:
Lo acabo de probar en un openwrt virtual de casa y (aunque no he probado el caso real de redirección), al recargar el firewall (/etc/init.d/firewall restart), no da ningún error, así que parece ser que está bien la sintaxis  :D

Sintaxis correcta para redirigir las DNS de cualquier equipo que se conecte dede la interfaz br-lan excepto las de 192.168.1.21:
Código: [Seleccionar]
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
Título: Re:[Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 18-07-2018, 00:07 (Miércoles)
No puedo editar mi primer post....

RECORDAR:
Para que funcionen muchos servicios de actualización ddns, hay que instalar ca-certificates y libustream-openssl
(Y marcar usar HTTPS al enviar la autenticación)
Título: Re:[Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 18-07-2018, 18:57 (Miércoles)
Script que cambia el estado del filtro, activándolo o desactivándolo en cada ejecución:

Código: [Seleccionar]
#!/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

Lo he actualizado para que encienda el LED rojo (de mi router Livebox) para indicar filtro desactivado. Además, pone en parpadeo el LED azul mientras está cambiando de un estado a otro.

Y otra idea chula es añadir su ejecución a un botón del router. Así podemos activarlo y desactivarlo enseguida desde el propio router físico, según nos haga falta. Yo lo he hecho así, según he visto de la wiki de open (esto es lo que más fácil me ha funcionado):

Código: [Seleccionar]
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:
Código: [Seleccionar]
#!/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

Y con esto, puedo activar y desactivar el filtro con el botón lateral del router de forma manual.
Título: Re:[Mini guía] Cómo filtrar dominios basura por DNS +OpenDNS y archivo hosts
Publicado por: peperfus en 15-08-2019, 12:23 (Jueves)
Ojo. Importante.

Poco a poco voy aprendiendo de mis errores y mejorando. Comparto.

Qué significan las opciones domain y local domain, qué hace cada una ??

Domain nos indica el dominio al que pertenecemos y agrega esa terminación a las máquinas clientes del dhcp, a partir de su nombre de host.
por ejemplo:
domain especificado: pepito.com
máquina cliente dhcp: pc4
url de ese pc sería: pc4.pepito.com, asignado automáticamente.  :D

Ahora bien. ¿Qué hace entonces la opción local domain?
OJO.
Si tenemos más máquinas (o subdominios...) pertenecientes al dominio, pero fuera de nuestra LAN, no debemos poner en local domain el mismo domain. ¿Por qué?

Porque el dns, en la opción domain, primero consulta en local, si hay algún nombre que resuelva esa petición. Y si no lo hay, sale a Internet a buscarlo.
Pero en cambio, la opción local domain, obliga a que esa petición dns sea resuelta en local, impidiendo que salga a Internet, aunque no exista.

Ojo, porque esto es importante si queremos acceder desde fuera, como suele ser el caso típico de IP dinámica, con un nombre de dominio. Dicho dominio debe ser distinto al de la opción local domain, porque si no, el cliente actualizador de IP dinámica que tengamos corriendo, no podrá salir a Internet para comparar si ha cambiado la IP y dará error, dejando la máquina inaccesible desde ese dominio por Internet cuando nos cambie la IP.

Como sugerencia en el caso del ejemplo, se podría usar pepito.com como domain y pepito como local domain.