OpenWrt: Control Parental II, matando conexiones
2019-08-26
Índice
En este artículo vimos como controlar los dispositivos conectados a nuestro router, administrar en que horario se podían conectar a Internet, que tipo de contenido ver, etc, utilizando dnsmasq. Pero este mótodo tenia un problema, y es que no desconectaba los dispositivos que ya tenían una conexión activa en el router.
Esto lo podemos solucionar creando un sencillo script y utilizando cron para programar su ejecución cada 20 minutos, o el tiempo que tu quieras establecer, para volver a ordenar las reglas del cortafuegos.
Script
Creamos el fichero /etc/cronfw.sh
e insertamos el siguiente script:
#!/bin/sh
# Insert rule for forwarding established connection traffic, just before the final rule (reject)
new_rule_num=$(iptables -v -L FORWARD --line-numbers | grep reject | cut -d ' ' -f 1)
iptables -I FORWARD $new_rule_num -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Delete first rule for forwarding established connection traffic
old_rule_num=$(iptables -v -L FORWARD --line-numbers | grep ESTABLISHED | cut -d ' ' -f 1 | sed -n 1p)
iptables -D FORWARD $old_rule_num
# Get rid of any duplicate ESTABLISHED rules (these seem to be caused when restarting the firewall)
est_count=$(iptables -v -L FORWARD --line-numbers | grep ESTABLISHED | wc -l)
while [ $est_count -gt 1 ]; do
old_rule_num=$(iptables -v -L FORWARD --line-numbers | grep ESTABLISHED | cut -d ' ' -f 1 | sed -n 1p)
iptables -D FORWARD $old_rule_num
est_count=$(iptables -v -L FORWARD --line-numbers | grep ESTABLISHED | wc -l)
done
y le damos permisos de ejecución
chmod +x /etc/cronfw.sh
Cron
Ahora vamos a Sistema → Tareas programadas
e insertamos la siguiente línea:
*/20 * * * * /etc/cronfw.sh
Esto hará que se ejecute cada 20 minutos
Nos aseguráramos de que el cron estó habilitado, en Sistema → Inicio → Rearrancar
Si no funciona asegúrate de que tienes instalado el paquete ipset
Espero que te haya gustado, pasa un buen día.
Fuente:
Espero que te haya gustado, pasa un buen día. 🐧