Buenas, aquí va cómo lo he hecho:
Parte de OpenDNSEsta 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:
- DDNS provider: custom (no poner dnsomatic, ya que no lo hace bien)
- Custom update URL: http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=Casa
En hostname= (al final, donde yo tengo puesto Casa), tenéis que poner el nombre (label/etiqueta) de la red que asignasteis al registraros en opendns. Es decir, el nombre de la red con la que configurasteis los fistros... El resto de la URL lo ponéis como está. - Hostname/Domain: Aquí hay que poner el nombre de dominio de ip dinámica
- Username: el nombre de usuario de opendns/dnsomatic (es el mismo)
- Password: (pues eso)
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
#! /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 !!
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:
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:
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....