Блокировка доступа к сайту в MikroTik, социальные сети, запрещенный контент
Текущая задача одна из самых распространенных в корпоративном сегменте – блокировка социальных сетей, доступ к личным почтовым ящикам и прочему запрещенному контенту. На каждом этапе развития RouterOS использовались разные методы:
- блокировка по IP;
- блокировка по контенту в фильтре firewall;
- использование протоколов L7.
Как заблокировать доступ к сайту в MikroTik
Это метод будет исключительно простым – блокировка будет осуществляться по записи DNS в Address List. Данная запись будет динамической, т.к. Address List в первую очередь работает с IP адресами, которые будет сопоставлять с данными используемого DNS сервера. Далее более наглядно.
Пример будет основан на блокировании списка сайтов типа “онлайн казино”(ставки онлайн, букмекерские сайты, лото и прочие).
Настройка находится IP>Firewall>Address Lists
Полученный список нужно заблокировать в Firewall-е маршрутизатора.
Блокировка сайтов на Микротик, 4 способа.
Настройка находится IP>Firewall
Поддержи автора статьи, сделай клик по рекламе vvv
Есть вопросы или предложения по настройке блокировки сайтов в MikroTik? Активно предлагай свой вариант настройки! Оставить комментарий >
adminse
2 комментариев к статье “Блокировка доступа к сайту в MikroTik, социальные сети, запрещенный контент”
Добрый день.
Скажите, у меня микротик hap ac lite. RouterOS v6.46.3 (stable).
Я не могу открыть один сайт – фаворит спорт.
Остальные все открываются, в том числе и похожие на фаворит.
При пинге сайта идет перенаправление на 127.0.0.1 (т.е. на себя же).
Как, наоборот, разрешить доступ к сайту, что-бы он открывался?
Например, нам нужно заблокировать социальную сеть вконтакте при помощи маршрутизатора Микротик.
Заходим в IP/Firewall/Filter rules
Создаем новое правило
На вкладке General для цепочки Forward, указываем протокол TCP
На вкладке Advanced в поле Content указываем доменное имя сайта, который нужно заблокировать (в нашем случае vk.com)
Можно указать домен VK. (VK с точкой). В этом случае будет заблокирован домен vk во всех доменных зонах
На вкладке Action выбираем действие drop для этого правила.
Теперь нужно переместить созданное правило в начало списка правил фаервола.
Запретить сайт в Mikrotik
Таким же образом можно заблокировать любой сайт социальных сетей при помощи маршрутизатора Микротик.
В этой инструкции вы узнаете, как заблокировать любой сайт в роутере MikroTik, социальную сеть одноклассники, вконтакте и т.п.
Блокирование сайтов по имени
В MikroTik RouterOS, начиная с версии 6.36, появилась возможность указывать DNS-имена сайтов в адрес-листах, а роутер сам определяет их IP-адреса или диапазоны IP-адресов. Поэтому процесс блокировки сайтов с помощью фаервола существенно упростился.
В RouterOS 6.36 и выше откройте меню NewTerminal и выполните следующие команды для блокировки сайтов:
# Добавляем список запрещенных сайтов с названием BlockedSites
/ip firewall address-list add list=BlockedSites address=youtube.com disabled=no
/ip firewall address-list add list=BlockedSites address=vk.com disabled=no
/ip firewall address-list add list=BlockedSites address=ok.ru disabled=no
# Добавляем в фаервол правило блокировки сайтов из списка BlockedSites
/ip firewall filter add chain=forward src-address-list=BlockedSites protocol=tcp action=reject reject-with=tcp-reset comment=»BlockedSites» disabled=no
# Перемещаем в фаерволе правило BlockedSites вверх выше остальных правил
/ip firewall filter move [find comment=»BlockedSites»] 1
Cписок запрещенных сайтов можно редактировать в меню IP — Firewall на вкладке Address Lists.
Правило блокировки находится в меню IP — Firewall на вкладке Filter Rules.
RouterOS по имени сайта неплохо определяет диапазоны IP-адресов, но не идеально. Мне не удалось с помощью данного способа заблокировать сайты facebook.com и instagram.com, поскольку MikroTik нашел не все необходимые диапазоны IP-адресов. Пришлось вручную найти необходимые IP-адреса и добавить их. Как это сделать, написано ниже.
Блокирование сайтов по IP-адресу
Фаервол позволяет заблокировать сайт по его IP-адресу. Узнать IP-адрес сайта можно в Windows, набрав в консоли команду nslookup имя сайта, например nslookup vk.com.
Чтобы выполнить команду nslookup в маршрутизаторе MikroTik, откройте меню New Terminal и выполните команду-аналог put [:resolve vk.com]
Сайты социальных сетей имеют много серверов с разными IP-адресами и вышеуказанные команды могут не показать адреса всех серверов. Поэтому лучше всего с помощью онлайн сервисов whois узнать, какие сети принадлежат данной социальной сети. Например, Vkontakte Ltd принадлежит сеть 87.240.128.0/18 и 93.186.224.0/22.
В поиске IP-адресов также поможет сервис bgp.he.net
После того, как мы узнали нужные нам IP-адреса, выполните в терминале MikroTik следующие команды:
# Добавляем список запрещенных IP-адресов с названием BlockedSites
/ip firewall address-list add list=BlockedSites address=87.240.143.244 disabled=no
/ip firewall address-list add list=BlockedSites address=87.240.128.0/18 disabled=no
/ip firewall address-list add list=BlockedSites address=93.186.224.0/22 disabled=no
# Добавляем в фаервол правило блокировки IP-адресов из списка BlockedSites
/ip firewall filter add chain=forward src-address-list=BlockedSites protocol=tcp action=reject reject-with=tcp-reset comment=»BlockedSites» disabled=no
# Перемещаем в фаерволе правило BlockedSites вверх выше остальных правил
/ip firewall filter move [find comment=»BlockedSites»] 1
Блокирование социальных сетей довольно трудоемкий процесс, поскольку социальные сети открывают дубликаты своих сайтов с другими именами и IP адресами серверов. Продвинутые пользователи обходят ограничения еще с помощью сайтов анонимайзеров. Поэтому блокируя доступ к социальным сетям, вам также придется выискивать сайты анонимайзеры и тоже их блокировать.
Блокирование HTTPS сайтов
Сейчас в интернете много сайтов используют защищенный протокол https, который шифрует данные. Поэтому контент таких сайтов очень сложно фильтровать. В MikroTik RouterOS, начиная с версии 6.41.1, появилась возможность блокировать https-сайты (TLS трафик) с помощью расширения TLS SNI, называемого «TLS-HOST»
Например, чтобы заблокировать сайт youtube.com, выполните в терминале MikroTik следующие команды:
# Добавляем в фаервол правило блокировки HTTPS сайта
/ip firewall filter add chain=forward dst-port=443 protocol=tcp tls-host=*.youtube.com action=reject comment=»BlockHttpsSite» disabled=no
# Перемещаем в фаерволе правило BlockHttpsSite вверх выше остальных правил
/ip firewall filter move [find comment=»BlockHttpsSite»] 1
В параметре tls-host можно указывать имена сайтов, составленных с использованием синтаксиса GLOB. Этот синтаксис используют для создания подстановочных знаков в имени сайта.
Обратите внимание, что если фрейм TLS handshake будет фрагментирован на несколько TCP сегментов (пакетов), то невозможно будет сопоставить имя сайта и заблокировать его.
Блокирование сайтов с помощью статических DNS записей
Заблокировать доступ к сайту можно также, создав статическую DNS запись с названием сайта и несуществующим IP адресом для него, например 127.0.0.1. Перед именем сайта бывает автоматически приписывается www, поэтому нужно создавать две записи, например odnoklassniki.ru и www.odnoklassniki.ru
Откройте меню NewTerminal и выполните следующие команды для блокировки одноклассников:
У пользователей заблокированные сайты еще будут открываться некоторое время, потому что на компьютерах есть DNS кэш, в котором временно хранятся имена посещенных сайтов и их IP адреса. Для очистки DNS кэша на компьютере нужно запустить командную строку cmd и ввести команду ipconfig /flushdns.
Такой способ блокирования сайтов будет работать только в том случае, если пользователь использует DNS сервер центрального роутера MikroTik. Если пользователь настроит вручную другой адрес DNS сервера, то ограничение работать не будет. Поэтому все DNS запросы необходимо завернуть на наш роутер. Для этого откройте меню New Terminal и выполните следующие команды:
Далее перейдите в меню IP — Firewall и на вкладке NAT переместите созданные правила вверх. Теперь все DNS запросы будут идти через наш роутер.
Блокирование сайтов с помощью Proxy-сервера
Закрыть доступ к сайтам можно также с использованием прозрачного proxy-сервера MikroTik.
Разрешим использование прокси-сервера и настроим его. Для этого откройте New Terminal и выполните следующие команды:
Делаем proxy-сервер прозрачным:
Закрываем доступ к прокси-серверу со стороны интернета:
На написание данной статьи меня сподвиг тот факт, что старший ребенок стал по ночам вместо того чтобы укладываться спать, смотреть на своем смартфоне всякие ролики на youtube, до поздней ночи, а так же замена домашнего роутера с TP-Link TL-WR1043ND на MikroTik RB951G-2HnD.
Поизучав интернеты, наткнулся на презентацию от 2017 года на канале микротика в ютубе. Там описывалось, как не надо делать и как делать правильно. Возможно, для многих продвинутых пользователей MikroTik и RouterOS это не будет открытием, но надеюсь что поможет начинающим пользователям, как я, не заблудиться в дебрях вариантов, предлагаемых в интернете.
Начнем с часто предлагаемого варианта в интернете (так не надо делать. ):
У данного решения следующие минусы: высокая нагрузка на cpu, увеличенная latency, потеря пакетов, youtube и facebook не блокируются.
Почему так происходит? Каждое соединение проверяется снова и снова, Layer7 проверяется не в том месте, что приводит к проверке всего трафика.
Правильное решение
Создаем правило с регулярным выражением для Layer7:
Я блочил только ютуб, если нужен фейсбук или что-то иное, создает отдельные правила
Можно создавать правила и для других сервисов стримминга видео, вот один из вариантов:
Далее создаем правила для маркировки соединений и пакетов:
и правила для фильтра файрвола:
У меня в домашней сети по dhcp раздаются статические ip-адреса, поэтому фильтр я применял к ip-адресу смартфона ребенка, можно создать группу адресов и применить к ней. Идем в меню IP>Firewall>AddressList нажимаем кнопку Add, вводим название группы и не забываем заполнить список адресов для блокировки.
Далее идем меню IP>Firewall>Mangle выбираем наши mark_connection и mark_packet и в поле Src. Address вбиваем блокируемый ip либо группу.
Все, девайс остался без ютуба, жестко, но в воспитательных целях нужно.
Так же можно применять эти правила по расписанию.
Буду рад комментариями и поправкам, если вы заметите какие то неточности, т.к. это моя первая статья на Хабре. По материалам канала MikroTik на Youtube. Внимание, эта статья не о том как ограничить доступ ребенку в интернет, ограничение доступа в ютуб — это просто пример. Статья об одном из способов ограничения доступа к нежелательным ресурсам.
Updt1, от avelor, блок по mac:
можно заблочить и в dhcp — сделать lease и жмякнуть block access
Настройка некоторых параметров оборудования Mikrotik. Если вы администратор какой либо сети, то вам рано или поздно, придется столкнуться с задачей, когда необходимо закрыть доступ к определенным сайтам. Если это корпоративная сеть, то это скорей всего будут сайты социальных сетей и разного рода развлекательные сайты.
Да и дома, порой, возникает потребность защитить детей, от сайтов нежелательного содержания. Как это сделать в Mikrotik RouterOS? Существует несколько способов, самый простой из них, создать запрещающее правило в Firewall с соответствующим адресом сайта.
К примеру, нам нужно запретить доступ, к сайту odnoklassniki.ru.
Для этого, в утилите Winbox мы заходим в раздел Firewall, и на вкладке Filter Rules добавляем новое правило, нажатием кнопки “+”.
На вкладке General, в параметре Chain выбираем значение forward, в параметре Protocol выбираем значение 6(tcp), Dst. Port, мы пишем 80, а в In Interface ставим “!” возле значения и выбираем наш порт, к которому подключен кабель провайдера, например eather1.
Далее, переходим на вкладку Adwenced, где в поле Content, вписываем название нашего сайта (желательно без www).
Потом на вкладке Action в параметре Action, выбираем значение drop, чтобы запретить этот сайт.
Сохраняем наше правило кнопкой Ok
Теперь нам нужно только поднять это правило выше всех разрешающих правил. Поднимаем его на самый верх.
Если это правило включено, не один компьютер в вашей сети, не сможет посещать сайт Одноклассники.
Но ведь таких сайтов, может быть и 2 и даже 10, а то и 50! Как же быть в таком случае? Ведь 20-30 правил создавать не будешь. так как это создаст большую нагрузку на роутер, и может сказаться на качестве работы всей сети. Для этого мы воспользуемся более сложным, но не менее эффективным способом.
Сперва, мы должны узнать IP адрес или адреса сайта, который мы хотим запретить. Открываем на нашем компьютере консоль, и даем команду nslookup site.com, например для Одноклассников
Блокировка социальных сетей в роутерах Mikrotik при помощи Layer7 Protocols
Если вы хотите закрыть один или несколько сайтов для своих домашних — то представленное ниже хоть и рабочее решение, но подобные задачи можно решать гораздо более простым методом. Данная же инструкция для небольших (или больших) офисов с большим количеством компьютеров и более гибкими задачами.
Будем рассматривать задачу блокировки исключительно при помощи Mangle и Layer7
Шаг первый
Создаем регулярное выражение под конкретную социальную сеть. (вы меняете на то что вам нужно)
Для примера будет взят ресурс youtube
На картинке цифрами обозначен порядок действий.
Выбираем «IP» (1) -> «Firewall» (2) -> «Layer7 Protocols» (3) -> Нажимаем на синий плюсик (5) -> В поле «Name» вводим произвольное имя, мы выбрали «youtube» -> В окно «Regexp:» вводим следующую регулярку — ^.+(youtube).*$
(На картинке нет шага под номером 4 — провтыкал когда готовил изображение. А когда заметил — было лень переделывать.)
То же самое можно сделать через терминал
/ip firewall layer7-protocol
add name=youtube regexp=»^.+(youtube).*$»
Шаг второй
Создадим пару правил для маркировки нужных нам пакетов.
Наша задача — «выхватить» и пометить из общего потока запросов идущих к DNS серверу соединения с просьбой «разрезолвить» адреса содержащие в своем теле сочетание букв «youtube»
(заморочено и заумно получилось, но можно не читать, а просто делать.)
Переходим на вкладку «Mangle» и нажимаем на плюсик
Вкладка «General»
Выбираем: chain -«prerouting», протокол — «udp», destination port — «53», connection mark — «no-mark»
Вкладка «Advanced»
Layer7 Protocol — в выпадающем окне выбираем имя созданного нами правила, в нашем случае «youtube»
Вкладка «Action»
Action — «mark connection», new connection mark — произвольное имя — мы выбрали «youtube_conn»
Нажимаем «OK» — с первым правилом мы справились. (можно еще нажать на кнопку «Comment» — и написать произвольный комментарий, что бы потом через пол года не смотреть тупо и не пытаться вспомнить — что же это я хотел тут сделать. Особенно когда правил будет не один десяток. Но это так, по желанию).
Теперь из выбранных соединений нам нужно создать более узкий фильтр — выбрать нужные нам пакеты
Снова на вкладке «Mangle» нажимаем на плюсик и создаем второе правило
На вкладке «General» выбираем:
Chain — «prerouting», Connection Mark — выбираем те пакеты, которые мы промаркировали в первом правиле — в нашем случае «youtube_conn»
На вкладке Action выбираем:
Action — mark packet, new packet mark — произвольное имя — мы выбрали «youtube_packet»
Нажимаем «OK» — и второе правило мы победили.
В итоге должно получиться что то похожее как на картинке ниже.
Шаг третий
Создаем правило блокировки пакетов которые мы нашли и пометили выше.
Переходим на вкладку «Filter Rules»
Нажимаем на плюсик и создаем новое правило
Chain — forward, packet mark — выбираем фильтр пакетов который создали ранее — «youtube_packet»
Вкладка Action выбираем
Action — «drop»
Нажимаем «OK»
Если все прошло по плану — появится соответствующе правило.
Пробуем зайти на youtube и убедиться что зайти мы не можем.
(тут хочу обратить внимание — есть один нюанс- если вы прежде чем писать правила заходили на youtube и сейчас написав и активировав правила фильтрации проверяете — и с печалью видите что по прежнему заходите на сайты youtubа — все не так плохо.
Нужно для начала зайти во вкладку Connections — и удалить текущие сессии. И все заработает. Или просто подождать некоторое время что бы сессия закрылась по таймауту)
Posted in Mikrotik Tagged Layer7, Mangle, Mikrotik
Рубрики
Источник: galayda.com
Сам себе РКН или родительский контроль с MikroTik (ч.1)
2021-10-25 в 9:00, admin , рубрики: DNS, mikrotik, routeros, ruvds_статьи, Блог компании RUVDS.com, информационная безопасность, Сетевые технологии
Подготовленный ранее цикл статей, посвященный организации безопасности сетей, построенных на оборудовании MikroTik, вызвал определенный интерес у сообщества. В процессе обсуждения представленного материала стало понятно, что у некоторых пользователей подобное оборудование установлено дома (не удивительно, ведь сама простая модель стоит всего 1500 рублей), в связи с чем решено подготовить отдельный материал, посвященный возможностям RouterOS по организации родительского контроля. Поговорим о различных подходах, настройках, сопрягаемых решениях, касающихся предметной области.
Материалы поделены на две статьи. В первой части подробно рассмотрим организацию функционирования DNS, поговорим о работе с проходящим через маршрутизатор трафиком на L3 уровне посредством Firewall Filter и связанного с ним Ip Kid-control. Во второй части статьи подробно рассмотрим прикладное применение маркировки трафика посредством Firewall Mangle и сделаем выводы, касающиеся возможностей оборудования MikroTik по организации родительского контроля. Что-то новое никому не известное материалы статьи не раскрывают, но при этом показывают прикладное применение различных сетевых настроек, и решение поставленной задачи.
▍ 1. Настройка DNS
Определим имеющиеся условия. Роутер MikroTik подключен к интернет провайдеру, работает NAT, раздается сеть Wi-Fi, которой пользуются все члены семьи. Классическое домашнее решение. Первое, с чего следует начать, это с указания настроек для DNS сервера маршрутизатора:
/ip dns set allow-remote-requests=yes servers=77.88.8.7,77.88.8.3
В примере указаны, так называемые, семейные общедоступные сервера от Яндекса, которые должны «фильтровать» часть взрослого контента. На самом деле, там полно всего, чего бы многие предпочли не показывать детям. На рынке существуют более гибкие платные настраиваемые под себя решения, такие как Skydns и другие.
Они имеют личные кабинеты, в которых выполняются необходимые настройки. Всего 500 рублей в год, очень даже адекватная стоимость.
Чтобы заданные на клиентах статические DNS сервера не смогли отработать (хотя вряд ли дети смогут сделать что-то подобное), редиректим все DNS запросы на маршрутизатор:
/ip firewall nat add action=redirect chain=dstnat comment=»Redirect DNS in NAT» dst-port=53 protocol=udp src-address=10.0.0.0/24 to-ports=53
Гипотетическим минусом использования платных DNS серверов является факт передачи открытой привязанной к себе (или членам семьи) информации третьим лицам, тем же DNS провайдерам. Поэтому идем дальше. Будем использовать общедоступные DNS сервера, при этом для не благонадежных сайтов установим статические записи прямо на MikroTik:
/ip dns static add address=127.0.0.1 regexp=\*example.com$
Как видно из примера, запросы на сайты вида example.com, other.example.com, abrakatabra.example.com (субдомены) будут направлены на localhost, другими словами, в никуда. Команда для очистки кеш DNS сервера, если что:
/ip dns cache flush
Подготовим простейшую html страничку заглушку для родительского контроля:
Родительский контроль
Заблокировано!
Чтобы ее демонстрировать при попытках перехода детей на контент, запрещенный родителями, нужно развернуть web сервер. Сделать это на MikroTik, конечно, заманчиво. Скажу сразу, что пытаться прикручивать сюда работу Hotspot – это плохая идея, потому что он предназначен для других целей и не нужно городить огород.
Как вариант, можно воспользоваться технологией виртуального роутера от MikroTik (/metarouter). Как это сделать ранее рассмотрено на Хабре. Однако есть минимальные требования к аппаратной части вашего роутера: процессор mips или ppc, наличие свободных 48Мб оперативной памяти и 24Мб на диске. А это уже не устройства для дома, и 1500 рублями здесь не отделаешься. Поэтому рекомендую посмотреть в сторону одноплатника Raspberry Pi или VDS всего за 130 рублей в месяц:
Вынести страницу заглушку на внешний сервер – это отличная идея, ведь всегда его можно использовать и под другие задачи, а также никаких проблем с электричеством и вписыванием железа в семейный интерьер. Устанавливаем web сервер:
apt install apache2 a2enmod ssl mkdir -p /var/www/example.com/ chown www-data:www-data /var/www/example.com/ Сюда кладем нашу HTML заглушку => /var/www/example.com/index.html nano /etc/apache2/sites-available/example.com.conf RewriteEngine On RewriteCond % on RewriteRule (.*) http://%% ErrorLog $/error.log CustomLog $/access.log combined SSLEngine on SSLCertificateFile /root/example.com.crt SSLCertificateKeyFile /root/example.com.key DocumentRoot /var/www/example.com/ ErrorLog $/error.log CustomLog $/access.log combined a2ensite example.com.conf a2dissite 000-default.conf systemctl restart apache2
/system logging action add name=DNS target=memory /system logging add action=DNS topics=dns,!packet
Логи можно собирать и обрабатывать на удаленном устройстве, например на VDS при помощи Graylog. Данный вопрос уже раскрыт ранее. Для того, чтобы все остальные члены семьи, в том числе телевизор, не попадал под контроль, следует настроить на маршрутизаторе следующие действия:
1) В DHCP сервере статически закрепить IP адреса за детскими устройствами:
/ip dhcp-server lease add address=10.0.0.254 client-id=1:11:22:33:cc:bb:aa mac-address=11:22:33:cc:bb:aa server=server_home add address=10.0.0.253 client-id=1:22:33:44:cc:ba:aa mac-address=22:33:44:cc:ba:aa server=server_home
/ip dhcp-server lease make-static numbers=1 /ip dhcp-server lease make-static numbers=2
2) Собрать полученные IP адреса в один address-list:
/ip firewall address-list add address=10.0.0.254 list=children add address=10.0.0.253 list=children
3) Указать в DHCP сервере общедоступные DNS (предварительно отключив описанное выше правило /ip firewall nat add action=redirect…):
/ip dhcp-server network add address=10.0.0.0/24 dns-server=77.88.8.8,77.88.8.1 gateway=10.0.0.1 netmask=24
4) Перехватывать DNS запросы от детских устройств и натировать соответственно:
/ip firewall nat add action=dst-nat chain=dstnat comment=»DST-NAT Children to localDnsServer» dst-port=53 protocol=udp src-address-list=children to-addresses=10.0.0.1
Теперь представим, что у нас есть еще дача, на которой необходимо так же иметь родительский контроль, кроме этого родственники с детьми, друзья, коллеги, которые просят сделать им аналогичные сервисы. Тогда уже есть смысл вынести DNS сервер с MikroTik на VDS , IP адрес которого использовать на различных устройствах. Настраиваем необходимый софт:
apt install bind9 dnsutils nano /etc/bind/named.conf.options options < interface-interval 0; version none; recursion yes; forwarders < 77.88.8.7; 77.88.8.3; >; allow-query < 127.0.0.1; 192.168.15.0/24 >; >;
Имеем ввиду, что зоны, которые не обслуживаются нашим сервером, будут рекурсивно запрошены у forwarders. Таким образом, ваш сервер может быть задействован в DDOS атаках, когда боты найдут IP вашего VDS и начнут постоянно запрашивать ANY DNS записи для атакуемого ресурса. Или обратная вариация, когда запрашиваться будут значительные легитимные ANY DNS записи, а в качестве источника запроса указываться IP адрес атакуемого ресурса (DNS Amplification Attack). Поэтому рекомендую ограничить запросы только с VPN сетки 192.168.15.0/24 (или пула IP вашего провайдера хотя бы).
Далее настраиваем зоны, которые будем «глушить»:
Разумеется, сюда же на VDS переедет и web сервер с HTML заглушкой. Настраиваем логирование DNS запросов, чтобы можно было их анализировать и дополнять блокируемые зоны:
nano /etc/apparmor.d/usr.sbin.named /var/log/bind9/** rw, /var/log/bind9/ rw, systemctl restart apparmor mkdir /var/log/bind9 chown bind:bind /var/log/bind9/ nano /etc/bind/named.conf logging < channel my_file < file «/var/log/bind9/bind.log» versions 3 size 100m; severity info; print-time yes; print-category yes; print-severity yes; >; category default < my_file; >; category queries < my_file; >; category lame-servers < null; >; >; systemctl restart bind9 tail /var/log/bind9/bind.log -F
Лог будет выглядеть примерно так:
Здесь мы настроили Bind9 — наиболее распространенный DNS сервер. Конечно, он должен работать как минимум в паре, так называемые master и slave. Однако MikroTik разрешает работать только с одним сервером.
Если зон будет много, тогда есть смысл выбрать более мощное виртуальное устройство. Сейчас это стоит не больших денег. В результате получается что-то вроде нашего собственного частно-коллективного решения, которое можно обкрутить web интерфейсом, внутренней логикой и после этого даже попытаться монетизировать )).
▍ 2. Firewall Filter
Теперь вернемся к нашему MikroTik и покажем, как еще можно ограничить трафик. В дело вступает Firewall. RouterOS позволяет динамически создавать address-list по доменному имени:
/ip firewall address-list add address=youtube.com list=Block_site_by_dns_name add address=vk.com list=Block_site_by_dns_name add address=www.youtube.com list=Block_site_by_dns_name
Доменные имена автоматически разрезолвятся в IP адреса:
/ip firewall address-list print Flags: X — disabled, D — dynamic # LIST ADDRESS CREATION-TIME TIMEOUT 3 Block_site_by_dns_name youtube.com oct/10/2021 22:25:51 5 Block_site_by_dns_name vk.com oct/10/2021 22:26:40 6 D ;;; vk.com Block_site_by_dns_name 87.240.190.72 oct/10/2021 22:26:40 7 D ;;; vk.com Block_site_by_dns_name 87.240.190.78 oct/10/2021 22:26:40 8 D ;;; vk.com Block_site_by_dns_name 87.240.190.67 oct/10/2021 22:26:40 9 D ;;; vk.com Block_site_by_dns_name 93.186.225.208 oct/10/2021 22:26:40 10 D ;;; vk.com Block_site_by_dns_name 87.240.139.194 oct/10/2021 22:26:40 11 D ;;; vk.com Block_site_by_dns_name 87.240.137.158 oct/10/2021 22:26:40 12 D ;;; youtube.com Block_site_by_dns_name 173.194.221.91 oct/10/2021 22:36:53 13 D ;;; youtube.com Block_site_by_dns_name 173.194.221.136 oct/10/2021 22:36:53 14 D ;;; youtube.com Block_site_by_dns_name 173.194.221.93 oct/10/2021 22:36:53 15 D ;;; youtube.com Block_site_by_dns_name 173.194.221.190 oct/10/2021 22:36:53
Ну и далее просто блокируем весь не угодный трафик на L3:
/ip firewall filter add action=accept chain=input comment=»Accept established,related» connection-state=established,related add action=drop chain=input comment=»Drop invalid» connection-state=invalid add action=accept chain=forward comment=»Accept established,related» connection-state=established,related add action=drop chain=forward comment=»Drop invalid» connection-state=invalid add action=drop chain=forward comment=Drop_sites_by_address_list dst-address-list=Block_site_by_dns_name
Первые правила перед блокировкой важны. Они разгружают ваш маршрутизатор, так как установленные и связанные с ними соединения не будут обрабатываться всеми правилами Firewall.
▍ 3. Kid-control
В самом конце данной статьи расскажу про имеющееся в RouterOS готовое решение Kid-control. Его функционал позволяет удобно автоматизировать то, что можно всегда сделать скриптами. Добавляем по MAC адресам в /ip kid-control device все детские устройства:
/ip dhcp-server lease print Flags: X — disabled, R — radius, D — dynamic, B — blocked # ADDRESS MAC-ADDRESS HOST-NAME SERVER RATE-LIMIT STATUS LAST-SEEN 0 D 10.0.0.253 AA:BB:11:22:33:44 LittleFood server_. bound 21m2s /ip kid-control device add mac-address=AA:BB:11:22:33:44 name=Pasha_Iphone user=Pasha
После этого задаем поведенческие правила для работы детского интернета: в какой день недели ему работать и ограничения по скорости.
/ip kid-control add name=Pasha
В результате RouterOS создаст динамические правила в Firewall Filter:
/ip firewall filter print Flags: X — disabled, I — invalid, D — dynamic 0 D ;;; Pasha_Iphone, kid-control chain=forward action=reject dst-address=10.0.0.253
Вот и весть /ip kid-control от RouterOS, по мне так полная скука.
▍ 4. Подведем промежуточные итоги
Представленные возможности уже позволяют ограничить трафик, проходящий через ваш маршрутизатор. Но RouterOS на этом еще не заканчивается. Самое интересное будет в следующей части статьи. Там же будут сделаны общие выводы по комплексной технической организации родительского контроля на оборудовании MikroTik.
Источник: www.pvsm.ru