Задача блокировки социальных сетей Вконтакте, Одноклассники, да и любых других сайтов, очень просто решается средствами самого маршрутизатора Mikrotik. В основном, в сети можно найти описание уже устаревшего варианта решения данной проблемы с использованием L7 протокола.

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

Пример такого неудачного регулярного выражения Layer7 Protocols для фильтрации социальных сетей:

Нетрудно заметить, что под действие данного правила, например, попадают любые сайты с окончанием доменного имени *ok.ru. Плюс возросшая нагрузка на роутер.

Блокировка cоцсетей на Mikrotik через адресные листы

В RouterOS, начиная с версии v6.36, появилась возможность добавлять доменные имена в адресные листы. В результате отпала необходимость заморачиваться с составлением регулярных выражений для Layer7 Protocols и такой вариант блокировки нежелательных сайтов практически не нагружает процессор роутера.

Первым делом добавляем нужные сайты в адресный лист (назовём его social). Сделать это можно и через web-интерфейс, перейдя в меню IP > Firewall > Address_Lists, но в данном случае удобнее использовать режим терминала (тоже в web-интерфейсе):

/ip firewall address-list add address=vk.com list=social
/ip firewall address-list add address=ok.ru list=social

Весьма удобно, что соцсети сами делают редирект на свои короткие доменные имена, потому нет необходимости дополнительно прописывать vkontakte.ru или odnoklassniki.ru и тому подобное, они заблокируются самостоятельно.

Осталось добавить правило блокировки в файервол:

/ip firewall filter add action=drop chain=forward src-address=192.168.11.0/24 dst-address-list=social

В приведённом примере блокируются соединения для доменов vk.com и ok.ru для всей подсети 192.168.11.0/24. Роутер самостоятельно добавляет нужные ip адреса, соотвествующие этим доменам в файервол. Вместо drop я бы рекомендовал использовать reject, так как оно быстрее сбрасывает соединение:

/ip firewall filter add action=reject chain=forward src-address=192.168.11.0/24 dst-address-list=social protocol=tcp reject-with=tcp-reset

Что ещё почитать про настройку MikroTik:

Не ленитесь ставить лайк и подписываться на канал Дзен и паблик Вконтакте, будет ещё много интересного.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Комментариев: 2

  1. 2018-11-25 в 13:37:39 | Игорь Сошников

Весьма толково все описано и в принципе понятно и хотя лично мне не нужно блокировать соц сети, но несомненно найдется достаточно заинтересованных лиц.

Запретить доступ к социальным сетям и прочим сайтам на маршрутизаторах Mikrotik можно несколькими способами.

Первый и наиболее эффективный

способ, это включить web-proxy, запретить в нем конкретные сайты, в фаерволе во вкладке NAT добавить правило которое будет нужные IP направлять на web-proxy.
Добавляется правило в IP — Firewall — NAT (Chain: dstnat, protocol: tcp, Dst. port: 80, Action: redirect, To Ports: 8080, в Src. Address или Src. Address List указываем кого необходимо направить на Web proxy)
Включаем Web proxy поставив галочку в IP — Web proxy — Enabled, смотрим чтобы порт был 8080.
Добавляем сайты которые нужно заблокировать в IP — Web proxy — Access (например Dst. host: vk.com, Action: deny)

Второй и один из простых

это добавить статическую DNS запись, тогда все кто подключены к маршрутизатору не смогут зайти на сайт.
Для этого необходимо нажать «IP» — «DNS» — «Add New», в поле «Name» указать домен сайта, в «Address» — 127.0.0.1.
Пример добавления через командную строку:

Команда просмотра статических DNS записей на маршрутизаторе:

Однако этот запрет можно обойти прописав вручную на компьютерах сторонний DNS сервер, например Google DNS — 8.8.8.8 и 8.8.4.4.

Третий вариант

это посмотреть на каких ip-адресах находится сайт, например набрав в командной строке Windows команду nslookup vk.com, потом в фаерволе заблокировать доступ к ним для всех пользователей или конкретным. Вместо кучи ip адресов можно указать подсеть, например 87.240.131.0/24 (это ip 87.240.131.1-254). На сайтах типа «http://bgp.he.net/AS47541#_prefixes» можно посмотреть диапазоны IP адресов принадлежащие AS компании.
Пример команд:

Четвертый вариант

через протокол седьмого уровня (все пакеты в которых будут встречаться указанные выражения будут отбрасываться, таким образом могут блокироваться даже сообщения в чате, в которых встречаются выражения):

Популярная серия бюджетных маршрутизаторов из Латвии на базе RouterOS предоставляет пользователям широкие возможности по настройке. Сегодня я подробно рассмотрю возможности mikrotik по блокировке сайтов, рекламы, социальных сетей, по созданию списка запретов на доступ. Все эти средства присутствуют в роутерах из коробки и не требуют специальных знаний для настройки, кроме стандартных средств управления.

Данная статья является частью единого цикла статьей про Mikrotik.

Как быстро закрыть доступ к сайту

Начнем с самого простого. У нас есть роутер Mikrotik, утилита winbox и желание конкретному пользователю установить запрет на посещение определенного сайта. Подключаемся к роутеру и идем в раздел IP -> Firewall , открываем закладку Filter Rules :

Нажимаем на + и добавляем новое правило блокировки сайта:

На первой вкладке General заполняем:

  1. Указываем цепочку Forward.
  2. Указываем адрес пользователя, которому будет закрыт доступ к сайту.
  3. Выбираем протокол TCP.

Дальше переходим на вкладку Advanced :

В поле Content указываем адрес сайта, который нужно заблокировать, например vk.com. Переходим на вкладку Action :

Здесь выполняем следующие действия:

  1. В поле Action выбираем reject.
  2. В пункте Reject With указываем tcp reset.
  3. Нажимаем OK.

На этом основная настройка закончена. В данный момент правило по фильтрации сайта уже работает. Мы с помощью стандартных средств mikrotik смогли заблокировать vk.com. Это нетрудно проверить на клиенте. При попытке открыть адрес сайта популярной соц. сети он получит следующее сообщение в браузере chrome:

В данном случае мы в ручном режиме сделали блокировку сайта конкретному пользователю. Если у вас таких сайтов и пользователей много, процесс надо по-возможности автоматизировать.

Черный список сайтов для фильтрации

Давайте создадим отдельно список сайтов и укажем его в правиле, чтобы не создавать запрет для каждого имени отдельно. Сделать это не сложно. Для этого опять идем в раздел IP -> Firewall , открываем вкладку Layer7 Protocols и нажимаем «+» для добавления списка:

В поле regexp необходимо ввести регулярное выражение для организации списка сайтов. Я сам лично не умею составлять правильно регулярные выражения, поэтому приходится их искать в интернете. Подавляющее большинство регулярок, которые я нашел, у меня не заработали. Привожу вам список видеохостинга для блокировки в виде регулярного выражения, которое заработало лично у меня:

Список можно расширить, добавляя значения в скобках через знак вертикальной палки, что означает логическое «или».

После составления списка, включаем его в правило. Как создать правило я уже рассказал в первой части статьи. В данном случае отличие будет только в одном пункте:

Вместо поля Content выбираем название нашего списка для блокировки video в поле Layer7 Protocol.

Если у вас настроен firewall на микротике и в нем присутствуют какие-то правила, то текущее правило блокировки нужно правильно разместить в списке, чтобы оно работало. Например, у меня есть материал на тему настройки firewall. Там есть правила:

Текущее правило блокировки списка сайта на основе Layer7 Protocol должно стоять выше этого правила, иначе оно не будет работать. Я не до конца понял, почему, но я провел достаточно много тестов, чтобы убедиться, что его реально надо ставить выше. Ну и, разумеется, оно должно стоять выше правила, разрешающего соединения forward из локальной сети.

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

Вот как у меня выглядит список моих правил на фаерволе с учетом добавленного правила блокировки:

Тут я блокирую доступ c тестового ip адреса. Все остальные правила похожи на те, что я описывал в своей статье по настройке простого фаервола на микротике, ссылку на которую я приводил выше.

Вы можете включить логирование заблокированных соединений с сайтами из списка на вкладке Action самого правила:

Mikrotik будет генерировать подобные логи:

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

Запретить социальные сети в mikrotik

Так как мы научились составлять списки для блокировки сайтов, на основе этой информации легко закрыть доступ в социальные сети одним правилом. Для этого как и ранее добавляем регулярное выражение со списком соц сетей:

Дальше создаем правило, как мы это делали выше и выбираем список, который только что добавили:

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

Блокировка рекламы средствами mikrotik

С помощью изученного средства по ограничению доступа к сайтам достаточно просто блокировать рекламу. Для примера рассмотрим вариант по блокировке рекламы в Skype. Так как я знаю адреса серверов, куда скайп лезет за рекламой, я могу его заблокировать в mikrotik. У меня есть список:

Это адреса, откуда загружается реклама. Списки эти могут меняться время от времени, нужно периодически проверять и обновлять. Самому подготовить список рекламных адресов для конкретного сервиса можно, к примеру, с помощью настройки собственного dns сервера и включения логирования запросов.

Дальше как обычно создаем regexp выражение для списка адресов:

Добавляем новое правило, подключаем к нему список, созданный ранее и наслаждаемся работой скайпа без рекламы.

Заключение

Материала в интернете по Микротику много. Я сам пока разбирался в данном вопросе перечитал кучу статей. И все они какие-то недоделанные. Либо вопрос слабо раскрыт, либо что-то вообще не работает. Не знаю, в чем причина такой ситуации. Возможно что-то меняется в настройках и информация становится неактуальной. Сходу у меня не заработала фильтрация на основе Layer7 Protocols, пришлось повозиться, покопаться в regexp, в правилах, в их расположениях. Надеюсь мой материал немного исправит данную ситуацию.

Буду рад любым замечаниям к статье, так как сам учусь в процессе написания. В своей работе лично я не использую какие либо ограничения доступа к сайтам, так как считаю это бесполезным занятием. Но многие пользуются, поэтому разбираться в этом вопросе считаю полезным делом.

Напоминаю, что данная статья является частью единого цикла статьей про Mikrotik.

Помогла статья? Есть возможность отблагодарить автора

Рекомендую полезные материалы по схожей тематике: