Детям спать, или блокируем WiFi на роутере ZyXEL Keenetic Lite II

Опубликовано
Комментарии Нет

Сгорел у меня намедни роутер. Старенький был, пришло время ему.

После торжественных похорон был куплен новый — ZyXEL Keenetic Lite II. Выбор был хоть и мучительным, но недолгим.

После инсталляции оказалось, что у него нет одной важной функции. Отсутствует возможность производить манипуляции с настройками по расписанию. Т.е. штатными средствами нельзя выключить WiFi в определенное время, или заблокировать какой-то сайт на определенное время. Функция эта очень востребована, если у вас есть дети со смартфонами. Если в свое время мы с фонариком зачитывались книжками под одеялом, то теперь под этим же одеялом дети сидят в чатах. Блокировка WiFi появилась тогда, когда я пару раз ловил ребенка сидящим «ВКонтактике» в два часа ночи.

А по ночам детям нужно спать!

В целом работа устройства мне нравится. Держит интернет очень хорошо, скорость выдает нормально. Что называется, включил и забыл. Но было немного досадно от того, что проглядел при покупке такую «мелочь».

Есть разные способы обхода этой ситуации. На форумах предлагают и перепрошить роутер, и поднять FTP для того, чтобы загружать прошивку при старте, и еще более экзотические способы получения требуемого функционала.

Я же придумал и реализовал более простой способ.

Сейчас в большинстве устройств можно найти какой-нибудь Linux. А где есть Linux, там есть и cron. Если есть cron, значит есть управление временем. Это половина дела. В моем случае это оказался домашний NAS, в котором установлена сильно порезанная версия Linux; cron, тем не менее, там присутствует.

Вторая половина дела — это возможность управления роутером через терминал, наличие интерфейса командной строки.

За вечер были написаны скрипты блокировки/разблокировки. Эти скрипты запускаются по расписанию на NAS сервере. В скрипте производится подключение к роутеру и модификация правил фильтрации. Для всех блокируемых устройств в сети заведены фиксированные IP-адреса, чтобы нельзя было так просто обойти брендмауэр и включена фильтрация MAC-адресов по белому списку.

Отправка команд на роутер осуществляется с помощью «армейского ножа» — команды netcat.

Ниже представлены команды, выполняющие блокировку.

Блокировка конкретного адреса (скрипт phone_deny):

/opt/bin/netcat-nc -i 4 192.168.1.1 23 < /opt/etc/fw/deny.phone

Содержимое deny.phone:

[login]
[password]
access-list _WEBADMIN_Home
deny tcp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
deny udp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
exit
exit

Понятно, что [login] и [password] необходимо заменить на ваши. Этот скрипт блокирует доступ конкретному адресу по протоколам tcp и udp.

Ему соответствует парный скрипт (phone_allow):

/opt/bin/netcat-nc -i 4 192.168.1.1 23 < /opt/etc/fw/allow.phone

Содержимое allow.phone:

[login]
[password]
access-list _WEBADMIN_Home
no deny tcp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
no deny udp 192.168.1.5 255.255.255.255 0.0.0.0 0.0.0.0
exit
exit

Скрипт deny.phone запускается в 21:30, allow.phone — в 9 утра.

Детям в школе задают много уроков, которые нужно делать на компьютере. Поэтому часто бывает, что до 9 утра компьютер уже включен. Чтобы ребенок делал уроки, а не сидел снова «Вконтактике», дополнительно еще сделаны скрипты для блокировки/разблокировки доступа к сайту vk.com.

Поскольку блокировки по доменам в роутере тоже нет, я сделал блокировку по диапазону адресов:

Содержимое deny.vk:

[login]
[password]
access-list _WEBADMIN_Home
deny tcp 0.0.0.0 0.0.0.0 87.240.128.0 255.255.192.0
deny tcp 0.0.0.0 0.0.0.0 93.186.224.0 255.255.248.0
deny tcp 0.0.0.0 0.0.0.0 93.186.232.0 255.255.248.0
deny tcp 0.0.0.0 0.0.0.0 95.142.192.0 255.255.248.0
deny tcp 0.0.0.0 0.0.0.0 95.142.201.0 255.255.240.0
deny tcp 0.0.0.0 0.0.0.0 95.142.206.0 255.255.240.0
deny tcp 0.0.0.0 0.0.0.0 95.213.0.0 255.255.192.0
deny tcp 0.0.0.0 0.0.0.0 95.142.200.0 255.255.248.0
exit
exit

Содержимое allow.vk:

[login]
[password]
access-list _WEBADMIN_Home
no deny tcp 0.0.0.0 0.0.0.0 87.240.128.0 255.255.192.0
no deny tcp 0.0.0.0 0.0.0.0 93.186.224.0 255.255.248.0
no deny tcp 0.0.0.0 0.0.0.0 93.186.232.0 255.255.248.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.192.0 255.255.248.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.201.0 255.255.240.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.206.0 255.255.240.0
no deny tcp 0.0.0.0 0.0.0.0 95.213.0.0 255.255.192.0
no deny tcp 0.0.0.0 0.0.0.0 95.142.200.0 255.255.248.0
exit
exit

Запуск производится аналогично.

Дешево и сердито. Приятный бонус состоит в том, что этот способ блокировки довольно гибкий и он спокойно переживает перезагрузку как роутера, так и NAS, на котором запускается cron.

Диапазоны ВКонтакта выужены на просторах интернета

Наименование _WEBADMIN_Home получено путем анализа действующей конфигурации роутера.

Спасибо за внимание.

Автор
Категории

Комментарии

Комментирование этой статьи закрыто.

← Старые Новые →