Блокируем сайты в режиме белого и чёрного списков в MikroTik без Layer7 Protocols
Прелюдия
Это моя первая статья на Хабре (да и вообще первая подобная), поэтому прошу сильно сапогами не бить. Она ориентирована на таких же новичков, как и я, и не претендует на роль самой верной и правильной. Я просто делюсь своим решением проблемы, которого не мог найти нигде в интернете.
Суть проблемы
Года эдак два назад я решил обзавестись домашней точкой доступа (в простонародии роутер) и выбор пал на оборудование фирмы MikroTik. Я не был знаком с их интерфейсом и возможностями, поэтому, когда мне понадобилось выборочно заблокировать сайты, я полез в гугл, который мне выдал всего пару вариантов для реализации этой затеи. Выделю три основных:
- Фильтровать пакеты с помощью Layer7 Protocols
- Банально задать статические DNS записи для нужных доменов
- Использование WebProxy
Я не буду здесь расписывать, как они реализуются, т.к. этой информации в интернете предостаточно. Лишь кратко опишу, в чём их недостатки и почему я упорно продолжал поиски другого решения...
Layer7 Protocols
На первый взгляд идеальное решение. Однако, загружает CPU "микрота" и требует отключения fasttrack`а. В дополнение к этому, лично у меня так и не вышло настроить эту фичу нужным мне образом. Либо блокировалось всё, либо ничего.
Статические записи в DNS
Естественно, для этого сам микротик должен выступать в роли DNS-сервера в сети. Но основной недостаток этого метода — если нужно работать с сайтами в режиме "белого списка", т.е. блокировать всё, кроме нужных доменов — он бесполезен. Ну либо придётся добавить весь интернет в такие записи.
WebProxy
Тут даже говорить не о чем, он банально не работает с HTTPS.
Собственно, долго и упорно я гуглил другие методы, коих так и не смог найти нигде. Однако, пытаясь решить данную задачу другим путём, совершенно случайно набрёл на удобную фичу, что мне помогла решить эту проблему в полной мере — Addresses Lists.
А конкретнее...
Присутствует в микротике такая замечательная функция, как Firewall -> Addresses Lists.
Позволяет создавать списки IP-адресов. Так вот начиная с RouterOS 6.36 она умеет генерировать динамические адреса на основе указанного домена. Если ещё не уловили основную суть, то прошу под кат.
Само решение
Проделывать я всё буду в Winbox, т.к. статья всё-таки для таких же новичков, как и я, и GUI здесь будет понятнее намного.
Идём в обозначенный выше пункт IP -> Firewall -> Addresses Lists.
Создаём новый список, обзываем как душе угодно, в поле Address прописываем домен нужного нам сайта и нажимаем "ОК".
Через секунду после добавления такого правила микротик автоматически добавит в список все IP-адреса указанного сайта и подпишет каждый комментарием, к какому именно DNS-адресу принадлежит данный IP.
Далее переходим в соседнюю вкладку "Filter Rules"
Добавляем новое правило со следующими параметрами:
- Вкладка General
- Chain: forward
- Вкладка Advanced
- Dst. Address List: Выбираем наш свежеиспечённый список, у меня он называется "VK"
- Вкладка Action
- Action: drop
Сохраняем правило, размещаем выше запрещающих и бинго… Указанный сайт заблокирован без каких-либо сложных манипуляций. А, главное, можно в одно движение инвертировать правило, и оно станет работать как "белый список". Все сайты, кроме тех, что в списке адресов, будут заблокированы. Для этого достаточно установить чекбокс слева от пункта Dst. Address List на вкладке Advanced.
На этом всё :) Т.к. этот способ работает через обычные правила фаерволла, то можно настроить и список локальных адресов, на которые требуется распространить данное ограничение, но это уже будет выходить за рамки данной статьи.
Заключение
Надеюсь, я помог хотя бы одному новичку, столь же яро ищущего ответа на вопрос как же проще всего и без потерь блокировать нужные сайты.
Также приветствуется критика знающих людей: может, я где-то что-то упустил.