"Después del juego es antes del juego"
Sepp Herberger

miércoles, 8 de junio de 2016

Poner lista blanca de MAC permitidas en un router con DD-WRT

Nos han llegado unos router-puntos de acceso con DD-WRT, el "hermano rico" de OpenWRT. Tenía que meter una lista de 24 MACs de portátiles para el filtro desde el interface web cuando enseguida me di cuenta de que era una lata. Cuando tengo que hacer la misma cosa mas de 4 o 5 veces salta un trigger que me dice al oído: "esto se tiene que automatizar de alguna manera".

Y claro que si se puede. Primero hay que recolectar la lista de MACs, que en mi caso ya estaban en el fichero hostapd.accept del demonio /etc/hostapd, y ponerlos como una serie de direcciones MAC separadadas por espacios en blanco:
# cat /etc/hostapd/hostapd.accept | tr '\n' ' '
AA:BB:CC:DD:EE:FF 00:11:22:33:44:55:66 .....
Segundo, conectamos por ssh con nuestro router Dlink-860L y tecleamos (la parte de las MACs se corta y pega, por supuesto):
# nvram set wl0_maclist=”AA:BB:CC:DD:EE:FF 00:11:22:33:44:55:66 .....”
# nvram set wl0_macmode1=other
# nvram set wl0_macmode=allow
# nvram commit
# reboot
Y ya está, luego podemos verificarlo con:
# nvram show | grep wl0_maclist
En general, con nvram show vemos las opciones de configuración y con nvram set/commit las cambiamos. De esta manera podemos hacer por comandos (incluso remotamente usando ssh+sshpass o ssh+relación de confianza) muchas tareas sobre el router. A fin de cuentas recordemos que los xxx-WRT son una versión más de Linux.

Addenda: un compañero me comenta que la linea de shell de DD-WRT tiene un límite y pasado dicho límite no se pueden poner mas MACs (el ĺímite son 55 direcciones). Buscando he encontrado esta forma alternativa de hacerlo:
# nvram set wl0_maclist="`cat wl0_maclist.list`"
Siendo wl0_maclist.list un fichero donde hemos puesto las MACs. Teóricamente se aceptan hasta 256. El compañero Luis Delgado me ha confirmado que funciona y ha añadido las dobles comillas...¡gracias!.

Re-Addenda: avisa el compañero Miguel Núñez de que faltaba el "nvram set wl0_macmode=allow" para indicar que la lista de MACs es lista blanca (allow), es decir, la lista contiene las MACs que tienen permitida la conexión. Los posibles valores son disabled/allow/deny. ¡Gracias!.

No hay comentarios:

Publicar un comentario