Возникла необходимость ограничить на время доступ к некоторым ресурсам (комнатный телекоммуникационный надзор). Самым первым решением была “гостевая” wi-fi сеть. Даже в музейных роутерах это есть из коробки. Решало проблему ограничения доступа “на время”, но не к конкретным ресурсам. Следующее очевидное “админу локалхоста” решение – iptables. Есть и доступ по времени и по адресу и даже по имени. Провалилось почти сразу: крупные ресурсы постоянно меняют адреса (имеют неприлично много адресов), детектировать по имени мешает DoH, но главным препятствием был старинный роутер (старая прошивка, древнее ядро, допотопные инструменты) и проблемы с сохранением между перезагрузками кастомных скриптов.

Через несколько итераций цикла “заблокировал – снова заработало” стало понятно что этот бой не в мою пользу. Следующей идеей был свойский DNS-сервер (и отключение DoH) – сервер должен для некоторых ресурсов возвращать адрес заглушки. Выглядело просто, тем более в прошлом уже приходилось работать с bind и powerdns. В процессе поиска современных альтернатив ВНЕЗАПНО обнаружил, что интернет уже давным давно придумал кучу сервисов, построенных на той идее – прописываешь у себя сервисный сервер (вместо провайдерских) и получаешь контроль над всеми  DNS-запросами + статистику и различные плюшки. Стоимость услуги не оставляет шансов на творчество, лень сдалась готовому решению.

Около полугода пользования сервисом принесли не только контроль над “проблемным” участком сети, но и кучу новых по тем фронтам, где проблем раньше не наблюдалось – сервис блокирует всякое непотребное (по его мнению), даже то, что явно не просили. Это можно было бы решать настройкой “стандартного” DNS на устройстве, которое не требуется контролировать. Но далеко не каждое устройство позволяет себя настраивать (да и чего уж там – не у всех устройств есть экран для того чтобы хотя бы узнать текущие настройки).

Когда старинный роутер был заменён на чуть более современный я вспомнил о проблеме с DNS и решил зайти слегка с другой стороны – не “мучить” все устройства тотальным контролем, а выдавать кастомный dns только “провинившимся” клиентам. И оказалось, что dnsmasq, который используется в прошивке нового роутера это позволяет: к mac-адресам привязываются теги, к тегам – кастомный опции DHCP, в моём случае dns-server.

dhcp-host=00:00:00:00:00:00,DeVice01,172.16.128.73,infinite,set=managed
dhcp-option=tag:managed,option:dns-server,9.9.9.9

В результате все довольны (ну кроме тех, которые недовольны), всё работает либо так как всем надо, либо не работает так как надо мне.

dnsmasq. Custom DNS
Tagged on:     

Leave a Reply