Как заблокировать сайт микротиком

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

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

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

Блокировка сайта в Mikrotik

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

Блокируем одноклассники

Мы заполнили 2 поля:

  1. Name - имя списка. Может быть любым.
  2. Address - адрес сайта. Параметр может принимать значения как ip адреса, так и доменного имени.

После добавления списка с адресом в виде доменного имени, происходит автоматический резолв имени в ip адрес. После этого создаются динамические записи в списке уже из конкретных IP адресов. Эти IP адреса берутся из записей типа A в DNS.

ip адреса одноклассников

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

Полный список адресов и доменов для блокировки

Я добавил на всякий случай адрес odnoklassniki.ru, но по факту в этом нет смысла, так как он резолвится в те же самые ip адреса, что и ok.ru. Новых динамических записей не добавилось.

Теперь настраиваем правило блокировки с использованием созданного ранее списка. Для этого идем на вкладку Filter Rules и добавляем новое правило.

Правило блокировки сайта в firewall

  • Chain - forward. Цепочка для транзитных пакетов, которые идут через роутер. В том числе все, что проходит из локальной сети.
  • Src. Address - 192.168.13.16. IP ардес, для которого будет работать блокировка. Если хотите заблокировать сайт для всех, можно просто не заполнять это поле. Вместо ip адреса можно указать разом всю подсеть - 192.168.13.0/24.
  • Protocol - tcp. Если не указывать протокол, то тоже будет работать блокировка, но чем более конкретно указано правило, тем лучше в общем случае.

Переходим на вкладку Advanced и указываем там список odnoklassniki, который создали ранее.

Выбор адреса назначения в виде списка

Далее открываем вкладку Action.

Действие - reject

Тут все просто - отбрасываем указанные пакеты, отправляя в ответ ошибку icmp - icmp-network-unreachable. На время отладки можете поставить галочку log, чтобы в логе видеть все сработанные правила с блокировкой социальной сети.

Лог заблокированных запросов

Для того, чтобы правило блокировки работало, его необходимо разместить в списке выше правила, разрешающего трафик из локальной сети в интернет. У меня примерно так получилось.

Список правил в firewall

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

Работа блокировки сайта

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

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

Для того, чтобы не создавать отдельные правила для каждого сайта, можно просто создать общий список блокировки и добавлять туда домены. Покажу на примере популярных видеохостингов. Настроим блокировку одним правилом youtube.com, vimeo.com, rutube.ru, ivi.ru, video.mail.ru. Для этого идем в раздел IP -> Firewall -> Address List и добавляем их все туда. Получился такой статический список.

Блокирование сайтов в mikrotik по списку

На основе этого списка сформировался набор динамических записей с ip адресами добавленных доменов.

Полный список доменов и ip адресов

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

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

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

Сейчас на примере списка социальных сетей разберу еще один подход к блокировке сайтов в mikrotik. Он будет основываться не на резолве доменных имен в ip адреса, а на анализе содержимого пакетов с помощью Layer7 Protocol. Его преимущество именно в том, что он анализирует содержимое пакетов. Теоретически, это более надежный способ блокировки, так как ip адреса сайтов могут меняться. В случае статических правил с ip адресами это может приводить к тому, что в какой-то момент они станут не актуальны. С эти тоже можно бороться, обновляя списки, но это отдельная тема.

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

Для этого создаем правило Layer7 Protocol в соответствующем разделе Winbox IP -> Firewall -> Layer7 Protocols для блокировки социальной сети facebook.

Блокировка социальных сетей в микротике

/ip firewall layer7-protocol
add name=facebook regexp="^.+(facebook).*\$"

Теперь нам нужно промаркировать все соединения и пакеты в dns запросах, где будет совпадение с созданным ранее правилом. Идем во вкладку Mangle и добавляем правило маркировки соединений.

Маркировка соединенийМаркировка соединений

Маркировка соединенийЧтобы не перепутать какие-то параметры, можете просто ввести в консоли команду и проверить созданное правило.

/ip firewall mangle
add action=mark-connection chain=prerouting protocol=udp dst-port=53 connection-mark=no-mark layer7-protocol=facebook new-connection-mark=facebook_conn passthrough=yes

И еще одно правило для маркировки пакетов на основе промаркированного выше соединения.

Маркировка пакетов Маркировка пакетов

add action=mark-packet chain=prerouting connection-mark=facebook_conn new-packet-mark=facebook_packet

Пакеты промаркировали. Теперь создаем 2 блокирующих правила для цепочек input и forward. Для этого идем во вкладку Filter Rules и добавляем 2 правила. Я не буду показывать картинки, их и так уже полно в статье. Правила простые, введите их в консоль сами.

add action=drop chain=forward packet-mark=facebook_packet
add action=drop chain=input packet-mark=facebook_packet

Далее важно эти правила правильно расположить в списке правил. Они обязательно должны быть выше разрешающих правил для цепочек input и forward. Примерно так.

add action=drop chain=input comment="block facebook" log=yes packet-mark=facebook_packet
add action=accept chain=input comment="Local Input" in-interface=!ether2-wan src-address=192.168.13.0/24

add action=drop chain=forward comment="block facebook" log=yes packet-mark=facebook_packet
add action=accept chain=forward comment="accept forward from local to internet" in-interface=!ether2-wan

На время отладки я включаю логирование правил, обнуляю счетчики и начинаю тестировать. Если что-то пойдет не так, проверьте так же счетчики в разделе Mangle. Если там будет пусто, значит ошибка либо в правиле Layer7 Protocols, либо в самих правилах маркировки. Я, когда тестировал, неправильно расположил правила в Firewall. В итоге в правилах маркировки счетчики росли, пакеты маркировались, но блокировки не было. Это было видно по нулевым счетчикам в Firewall. После того, как правильно расположил правила, блокировка социальной сети facebook заработала как надо.

Объясняю логику работы данной блокировки. Мы маркируем все соединения к dns серверу, удовлетворяющие указанному regex в правиле Layer7. Далее маркируем все пакеты из этого соединения. Потом в фаерволе блокируем эти соединения. Если клиент использует DNS сервер на микротике, запросы блокируются правилом цепочки input, если используется сторонний, то в блок пакеты попадают по правилу цепочки forward. В итоге у клиента не работает резолвинг доменного имени в ip и он не может попасть на сайт через браузер. Конечно, при желании, эту блокировку соцсети можно обойти. Для наибольшей эффективности надо комбинировать оба предложенных в статье способа.

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

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

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

rad.msn.com
apps.skype.com
vortex-win.data.microsoft.com
settings-win.data.microsoft.com

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

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

^.+(rad.msn.com|apps.skype.com|vortex-win.data.microsoft.com|settings-win.data.microsoft.com).*$

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

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

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

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

133 комментария

  1. добрый день

    как заблокировать адреса типа

    github.com/progressorkrd/24062024/raw/main/doc_24062024_akt.pdf.rar

    то есть не весь сайт github.com , а только конкретную ссылку?

    • Это невозможно сделать без подмены TLS сертификата и расшифровки всего веб трафика. Обмен клиента с веб сервером идёт по шифрованному каналу. Вы не можете узнать на маршрутизаторе, какой конкретно url открывается. Это можно сделать либо на клиенте, где запускается браузер, либо расшифровывать весь трафик, а для этого надо делать mitm proxy.

      • спасибо за ответ

        через правила Layer7 точно не получится настроить?

        • Если я правильно понимаю процесс обмена информацией клиента и веб сервера, то нет. Url будет в зашифрованном ответе. Распознать домен можно только на этапе первичных соединений для обмена ключами шифрования. Как только обменялись - дальше трафик шифрованный.

          • Демид Чернов

            благодарю

          • Александр

            Можно в микротике помешать обмену ключами на этапе первичных соединений для сайтов вида github.com/progressorkrd/24062024/raw/main/doc_24062024_akt.pdf.rar и тем самым не дать туда попасть ?

  2. А вот такой вопрос, я создал в Adress list запись, сделал в firewall drop по этому списку, все работает по всей сети, НО как исключить некоторые ПК из этого правила, другими словами что бы определенные IP все таки могли посещать сайты из Adress list ?

    • Создайте отдельный список IP адресов и сделайте для него разрешающее правило раньше запрещающего. Либо в запрещающем правиле сделайте исключение для этого списка. Файрвол в микротике позволяет без проблем такое настроить.

      • Спасибо за ответ! А где создается список IP ? Там можно MAC вместо IP использовать ?

        • У меня нет примера статьи по этому поводу. Проще воспользоваться поисковиком и найти примеры того, как работать со списками. Их много, так как это популярная функциональность. MAC использовать не получится, так как файрвол не оперирует этими записями. Он на уровне выше модели OSI работает.

  3. Эльнур

    Приветствую.
    По второму методу (Layer7) блокировка сайтов не работает в браузерах (Chrome, Edge), но в Internet Explorer всё нормально... В чём фишка ? Кстати, раньше работало во всех браузерах.

    • Сергей

      Добавлял всё терминалом - всё заработало с первого раза. Спасибо автору

  4. Почитайте комментарий прежде,чем будете использовать эти два способа.
    - 1 способ не годится, т.к. сайт не блокируются, если они были до этого открыты. Проверена на 2 компьютерах.
    - А именно, на ПК-1 открыл сайт ok.ru - открывается, создал правило блокировки, но блокировка не срабатывает, сайт ok.ru продолжает открываться.
    - Далее на ПК-2 пытаюсь открыть сайт ok.ru - не открывается, блокировка срабатывает.
    - Далее еще интереснее. Отключаю запрещающее правило и открываю на ПК-2 сайт ok.ru , все работает. Обратно включаю правило, и на ПК-2 уже не блокируется.
    Вывод: если на компе уже был открыт блокируемый сайт, то ваше правило блокировки не сработает.
    Автор статьи данный вопрос проигнорировал ответом типа надо сбросить настройки сетевых интерфейсов или типа того.
    В общем, данную статью не советую, автор х.рней страдает.

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

    • Николай

      Установленное соединение не блокируется, погоди немного, всё заработает. Можно перегрузить микротик, все соединения сбросятся :). Немного теории, немного практики и всё, не придётся писать про х-ню. Всё лечит время и правильный TTL.

  5. проверка

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

  6. К сожалению при таком "блоке" youtube, пропадает доступ и к некоторым ресурсам google, например google drive

  7. Сергей

    Подскажи как белый список настроить, т.е. заблокировать все кроме нескольких сайтов. Спасибо.

    • Действуете просто в обратном направлении. В статье я рассказываю, как заблокировать отдельные сайты, а разрешить все остальное. У вас же просто правила firewall будут немного другие. Там, где правила с сайтами, должно быть все разрешено, а все остальные подключения запрещены. Причем разрешающее правило должно быть выше запрещающего.

  8. Зачем ломать мозги в микротике??? Опен днс от циско никто не отменял!

  9. Перечитал измененную статью и вспомнил у меня уже много лет правила запретов сайтов реализованы через drop (да в курсе почему это плохо)Причина - есть пул внутренних адресов кому можно ходить на сайты и кому нельзя, если настраивать запрет через reject то к сервисам аля youtube через некоторое время доступ пропадает у всех (даже если отключить правила запретов и для верности ребутнуть роутер,flushdn итд было препробавно все), предполагаю что серваки google(tracert упирался в них) при большом количестве reject ответов добавляют такие ip во временную блокировку, если вернуть drop то через 15-60 минут по общим наблюдениям доступ возобновляется.

    • Любопытное наблюдение, но не понимаю, что конкретно происходит. Вы reject настраиваете у себя на роутере. До серверов гугла запросы не доходят. Как они вообще могут что-то узнать о блокировках на вашем роутере?

      • За давностью плохо помню возможно трабла иммено с и прилетающими пакетами фильтруемыми регулярными выражениями Layer7 , да точно в читался у вас l7 drop. Помню что много где предлагают l7 реджектить для блокировок сайтов, извиняюсь за сумбур прочитал статью начались вьетнамские флешкбеки связаные с rejekt-om .

  10. Сергей

    Всем привет. Автор подскажи, сделал все по вашей схеме, заблокировал инстаграмм, но проблема в том, инстаграмм все равно доступен на телефонах (Android и iPhone). Для проверки заблокировал на компе по проводу, на компе сайт блокируется. На тел установлено приложение Инстаграмм. Может с этим связано? И еще, как вместо блокировки по IP, заблокировать по МАК адресу? Не нашел такого пункта при добавлении правила блокировки в Firewall... Спасибо за помощь...

    • Конечно это связано с тем, что на смартфоне используется приложение. Оно ходит за информацией по своим адресам. Их надо выяснить и заблокировать.

      На firewall никак не заблокировать по mac адресу, потому что это другой уровень модели OSI. Фаервол работает с протоколом tcp/ip, а мак адреса на уровне ниже находятся. Я что-то сходу не припомню, как по mac адресу заблокировать на микротике.

      • Сергей

        Как выяснить куда ходит приложение?

        • Самый надежный способ указать свой dns сервер с логированием запросов. Так вы точно будете видеть, куда обращается приложение. А если быстро и по простому, то можно запустить torch в микротике на интерфейсе, через который смартфон ходит в интернет и посмотреть, к каким адресам он обращается. Только надо всех остальных отключить от интернета, чтобы не мешали проверке.

  11. Рустам

    Добрый ден. вот это правило почему то пишет ошибку bad add
    add action=drop chain=input comment="block facebook" log=yes packet-mark=facebook_packet
    add action=accept chain=input comment="Local Input" in-interface=!ether2-wan src-address=192.168.48.0/24

  12. Аноним

    Все сделано по Мануалу
    блокировал Ютуб
    блок происходит все супер.
    Но, когда я выключаю правило на микротике, блок продолжает работать, почему так?
    очистка кеша в браузере, сброс DNS на микротике не помог.
    как исправить?

    • Если блокировали с помощью маркировки запросов к dns, то надо еще на компьютере перезапускать браузер, чтобы он новые запросы к dns отправил. Либо просто другой браузер открыть и проверить.

      • Аноним

        Да, в том то и дело, что закрытие браузера не помогает, и открывал другой браузер, ютуб был по прежнему не доступен.
        Мне помогло только выключение/включение сетевого интерфейса на ПК.
        Это не удобно...

        • Можно вместо отключения сетевого интерфейса выполнить в консоли компьютера очистку dns кэша:

          ipconfig /flushdns

          • Аноним

            Это как вариант, но если у вас Парк ПК, то бегать и каждому кэш чистить не вариант, согласитесь...)

    • Аноним

      Насколько я понимаю, на PC есть кеш DNS, в котором кешируются не только успешные запросы разрешения имени(резолв), но и неудачные. Т.е., если вы сделали блокировку сайта, то на PC закешировалась запись, что сайт не резолвится. Далее вы отменили блокировку, но запись неудачного резолва осталась и браузер вам рапортует, что сайт не доступен. В этом случае, как уже сказал Zerox, поможет только очистка DNS кеша на PC: cmd - ipconfig /flushdns ps - Clear-DnsClientCache

  13. Добрый день. Попробовал по инструкции автора. Если выставляю OK.RU, то работает корректно, а если http://www.youtube.com(youtube.com), то в хроме не блокируется, а в IE блочит. В чем может быть нюанс?

    • Евгений

      в хроме не сразу срабатывает! но у меня работает! и ок банит. и при этом когда ok.ru закрыт то и obok.ru сайт не работает! вот не знаю как решить данную проблемку!

      • Как это obok.ru тоже банит? Это могло быть, если настраивать по старому методу, который тут раньше был описан. Сейчас все обновилось в статье и такого быть не должно. Бан идет по ip сайта, а не по имени домена.

    • У меня везде блокирует. Каким способом блок настраивали?

      • Евгений

        через layer7 блочу и лочится сайт obok.ru вместе с ok.ru

        • Так вот же в статье описан другой способ. OK.RU банить через регулярку в layer7 нельзя как раз потому что под этот фильтр будет попадать огромное количество других сайтов. Забаньте его по списку через доменное имя.

  14. Сделал все как описал автор, заметил странность. Попробовал ok.ru блокирует на ура, изменил youtube.com(и http://www.youtube.com), не блокирует, НО это в хроме. В EI не открывается сайт. Есть какие то особенности? Или это хром производит подмену?

  15. Привет всем. Мне нужен дать доступ к программу Google Earth чтобы он работал(как узнать ip или как этот программа выходить в глобальный сеть)

  16. Евгений

    Доброе время суток! У меня проблема одна! я блокирую сайт ok.ru, а вместе с ним блокируются сайты у кого указаны такие символы типа:"abok.ru" как решить такую ситуацию! что только не пробовал не получается!

  17. Аноним

    может кому пригодится . сделал так же как и у автора но фастрак конекшин добавил 10000 байт
    /ip firewall filter
    add action=reject chain=forward layer7-protocol=youtube reject-with=\
    icmp-network-unreachable src-address=192.168.88.0/24
    /ip firewall layer7-protocol
    add name=youtube regexp="^.+(youtube|rutube|smotri).*\$"
    add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
    connection-bytes=10000-0 connection-state=established,related

  18. Алексей

    Добрый день. Вы пишите: в поле Src.Address вы можете указать конкретный ip пользователя, можете указать всю подсеть, либо вообще оставить поле пустым. Хочу спросить, а можно как-то указать не всю подсеть, а 2 или 3 ip адреса, как их вносить в Src.Adress, через запятую, разделитель или как?

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

  19. Попробовал - "Как быстро закрыть доступ к сайту" для конкретного IP - не сработало!
    Стало срабатывать только после указания интерфейса, на котором сидит эта ЛАН :)

  20. Dobre!
    Zerоx,в примере выше блокируется сайты на определённом IP ,но пользователь меняет на какой хочет ,и сайты у него конечно открываются,нужен способ отключить сайты на порт где подключён юзер , есть идеи?

    • Ясненько! Непонятнеько :) У Вас что, все юзера с админскими правами штоб ip-шники на раб.станции менять? :)

  21. Раньше использовал Layer 7. Но интернет стал достаточно сильно тормозить, т.к. анализируется каждый пакет. Перешел на другой вариант. Анализирую содержимое запросов на хост и помещаю указанный хост в адрес лист. И блокирую уже IP под адрес листу в рабочее время.
    add action=reject chain=forward comment="Drop Social Network" dst-address-list=SocialNetwork protocol=tcp reject-with=tcp-reset time= 9h-17h,sun,mon,tue,wed,thu,fri,sat
    Собираем IP
    add action=add-dst-to-address-list address-list=SocialNetwork chain=forward content="Host: http://www.vk.com" protocol=tcp src-address=192.168.1.0/24
    В данном случае http://www.vk.com, размножаем последнее правило на хосты которые надо блокировать.
    Работает быстро, тормоза ушли.

    Сейчас можно наверно просто указать днс имя в адрес листе, для сбора IP адресов. Но не проверял.

    • Аноним

      Aleks можешь по подробней чего то не хватает если не трудно со скринами на почту mail@sarmontag.ru

      • Я попробую все таки тут объяснить.
        1. с первым правилом все надеюсь понятно. Блокируем все IP адреса что находится в адрес листе. Обращаю внимание что идет не drop пакетов, а reject-with=tcp-reset. В противном случае странички у клиентов будут долго загружаться пока не отвалятся по таймауту.
        2. Задача сформировать список ip адресов которые блокируем.
        При запросе какого то сайта идет запрос вида "Host: имя_домена". Причем http://www.site.com и site.com это разные домены, соответсвенно мы должны прописать их все, на каждый домен свое правило(дебелизм). Создаем новое правило chain=forward, protocol=tcp src-address=ip внутреней сети, переходим на вторую закладку "Advanced" в поле Content пишем "Host: имя_домена" Обрати внимание на пробел. ну и последняя закладка action=add-dst-to-address-list address-list=SocialNetwork
        Т.к. у нас сейчас некоторые соц сети заблокированы на гос уровне то мне это стало не актуально.
        P.S. Пункт 2 имеет смысл попробывать заменить на прописывание в Firewall -> Address list просто имена доменов, тогда IP адреса подтянутся в новых версия routeOS автоматически и будут обработаны первым правилом.

  22. Dmitry Nadein

    В предыдущем комментарии ошибся вместо параметра youtube надо sotial2

  23. Dmitry Nadein

    Просто оставлю это здесь:

    /ip firewall layer7-protocol
    add name=youtube regexp=”^.*(youtube.com|youtu.be|netflix.com|vimeo.com|twitch.tv|instagram.com|vk.com|ok.ru|facebook.com).*$”

    /ip firewall mangle
    add action=mark-connection chain=prerouting protocol=udp dst-port=53 connection-mark=no-mark layer7-protocol=sotial2 new-connection-mark=sotial2_conn passthrough=yes
    add action=mark-packet chain=prerouting connection-mark=sotial2_conn new-packet-mark=sotial2_packet

    /ip firewall filter
    add action=drop chain=forward packet-mark=sotial2_packet
    add action=drop chain=input packet-mark=sotial2_packet

    Собрано по примеру https://habr.com/post/346052/

  24. Народ, забейте! Все эти правила легко обходятся Анонимайзером!

  25. не работает.

  26. Обновился уже до 6.42.7 так по Layeer 7 и не работает, только если в поле content указать

  27. Кирилл

    Палец вверх. На хабре нашел решение, не работает, в инете облазил - все бестолковое, тут не профи описал, но работает. Спасибо! =)

  28. Никита

    Всё сделал по статье, всё работает, всё ок. Но, почему-то через несколько дней перестаёт открываться сайт яндекса с почтой :-(

    • Возможно в строке браузера, когда переходишь на какое-то письмо, возникает одно из запрещенных имен домена. И срабатывает блокировка. Нужно понимать, что описанный способ самый простой и самый костыльный :) Много ложных срабатываний может быть. Нормальную блокировку не настроить без отдельного прокси сервера.

  29. Вопрос не по теме: при блокировании сайтов с помощью файла host, почему-то не блокируется https. Это норм или я что-то не так делаю? Никто не сталкивался?

  30. Настроил по layer7
    ^.+(vk.com|vkontakte|odnoklassniki|odnoklasniki|facebook|ok.ru).*$

    Доступ к похожим сайтам тоже закрылся, например
    avk.com

    Надо как то поправить рег выражение

  31. Владислав

    Если настраивать по данной статье, например, запрет на сайт vk.com, то все равно можно будет переходить по прямым ссылкам на сайт, т.е. мы блокируем vk.com, но если в адресной строке ввести vk.com/feed, то сайт откроется.

  32. Сергей

    как настроить для одного ip доступ в соцсети?

    • Если реально нужен только один ip адрес, которому разрешен доступ, то можно сделать очень просто. В правиле блокировки указать адрес того человека, которому нужен доступ, только с восклицательным знаком. То есть запретить для всех, кто не этот адрес. Надеюсь понятно объяснил :)

  33. Доброго времени суток. С роутерами "Microtik" столкнулся относительно недавно. Суть вопроса состоит в чем: возможно ли заблокировать доступ к определенному ресурсу по Wi-Fi соединению, но при этом "медные" клиенты на данный ресурс могли заходить без всяких ограничений? Заранее спасибо.

    • Да, так сделать можно. Достаточно тем или иным образом указать клиентов, которые пользуются wifi в ограничивающем правиле firewall. Это можно сделать либо указав подсеть wifi клиентов, либо их сетевой интерфейс.

  34. Лучше не создавать запрещающие правила. Лучше занять людей зарплатой, адекватной их занятости. Проверено. Но тут надо и начальство чтобы это понимало.

    • С этим я полностью согласен. Считаю блокировки пустой тратой админского времени. Всегда объясняю это тем, кто просит настроить такой инструмент.

  35. Аноним

    C ФБ - не работает, вообще. Перепробовали все.

  36. Антон создаем два правила, один на запрет через reject, второе разрешающее через ACCEPT
    Правило ACCEPT должно быть выше правила reject

    В первом правиле прописываем разрешение на ^+.(book.ru).*$
    Во втором, которое на запрем ^+.(ok.ru).*$

    Всё пашет!

  37. Как сделать обратную историю, заблокировать всё и открыть доступ к отдельным сайтам? Ваш вариант с блокировкой работает, но ВПН в опере его обходит, но это для меня не самое страшное. Меня интересует доступ по белому списку сайтов. Подскажите пожалуйста если знаете. Заранее спасибо. И второй вопрос как настроить чтобы все запросы отправлялись например на http://search.skydns.ru.

    • А в чем проблема сделать обратную историю? Надо просто сделать на список сайтов разрешение, а все остальное закрыть. Но мне кажется, это все будет работать очень плохо. Сейчас для загрузки сайта подгружается информация из разных доменов. Многие сайты просто не будут нормально работать в таком режиме - кто-то картинки грузит с cdn, у кого-то модули и виджеты подгружаются с других доменов и т.д. Нужно будет постоянно мониторить такие ситуации и редактировать белый список. Я занимался этим и знаю, как муторно и много времени отнимает. Считаю, это неэффективным решением. Но против vnp в браузерах простого решения сходу не придумал.

      • Добрый утро. Не могли бы Вы расписать порядок действий, я пытался и у меня не получается, меня данный вариант интересует. Буду вам при много благодарен. То ли баран, то ли лыжи не едут. (

        И вариант с перенаправлением любого запроса на нужный мне сайт. Заранее спасибо.

      • Есть специальный шаблон google chrome для групповых политик контроллера домена. Там в настройке шаблона создаете белый список расширение для хрома по хэш и все

  38. Александр

    Как сделать чтобы вместе с сайтом ok.ru не блокировался сайт к примеру, такой - book.ru ?

  39. Здравствуйте. Сразу к сути. Сайт блокируется, НО если сайт уже был открыт в браузере, то правило на него не действует. К примеру, блокируем vk и vkontakte. При вводе в строке или переходе по закладке - не открывает. Но если сайт был открыт, когда правило включилось (допустим, нужно только в обед разрешить доступ), то можно спокойно работать дальше - переходить куда захочешь на страничке и, даже, закрыть окно и восстановить его из истории - будет работать. Какие идеи?
    Больше чем уверен, что если вы все это повторите у себя, то результат будет такой же.

    П.С. В случае с блокировкой через ДНС - тот же результат (но там грешил на переброс контента на другой сервер сайта)

    • Лично мое мнение - занимать голову такой проблемой - страдать ерундой. Но если это действительно надо, тогда возможно поможет сброс всех сетевых подключений в момент включения блокировки, но не уверен на 100%, что это сработает.

  40. Добрый день. Сделал запрещающее правило на сайт как по статье. Но вот незадача - сайт все равно открывается. Правило в самом начале списка, правила файервола по-умолчанию (дефолтные). В чем может быть проблема? MikroTik RB951G-2HnD, RouterOS 6.38.

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

  41. Аноним

    И если пользователь пишет на сайте КиноГАвно@vk.com в поле логина микротик посылает такой запрос куда ? Правильно ! Решение огонь ! =) Микротик будет рыскать даже в веденых формах и банит банить банить... Тонна гемороя обеспечена таким методом..

  42. пора переделывать статью и уходить от тяжелого Layer7. С версии 6.36 уже поддерживаются списки урлов в адресных листах. При введении адреса микротик автоматом создает динамические списки. Ну и кроме того https тоже блокируется.

    • Надо будет разобраться на досуге. На все времени не хватает.

      • Михаил

        Zerox, Вы неверно используете термин"заблокировать".
        Вы отбрасываете пакеты а не блокируете их.
        Блокировка происходит с помощью Web-proxy, но Web-proxy не умеет блокировать https трафик, только http.

    • Спасибо тебе, добрый человек! Прямо такое счастье!
      Что характерно, поле ввода адреса содержит разделительные точки, у меня даже и мысли не возникло, что туда можно ввести доменное имя, а его, тем не менее, можно!

    • Василий

      добрый день Yura
      А вкратце можете описать? "Ну и кроме того https тоже блокируется."

    • Приведите пример реализации, у меня по списку в address list блочит только сайты без https
      тот жен vk.com блочит только через layer7
      youtube.com и fb - вообще заблокировать не удалось

      • Алексей

        Уходите вы от этого Layer7 - это не задача роутера копаться на 7 уровне.
        Вот пример блокировки youtube:

        ip firewall mangle add chain=prerouting protocol=tcp tls-host=*youtube.com action=mark-connection new-
        connection-mark=youtube_conn passthrough=no
        ip firewall mangle add chain=prerouting protocol=tcp tls-host=*googlevideo.com action=mark-connection
        new-connection-mark=youtube_conn passthrough=no
        ip firewall mangle add chain=forward connection-mark=youtube_conn action=mark-packet new-packet-mark=y
        outube_packet passthrough=no
        ip firewall filter add chain=forward packet-mark=youtube_packet action=drop

        И будет Вам счастье!!!

        • Сергей

          Сделал по вашему способу для блокировки instagram.com, но блокирует только в браузере, приложение на телефонах не блокирует. Посоветуйте, как заблокировать приложение instagram...

          • Приложение за данными ходит не на instagram.com. Нужно выяснить, куда оно точно ходит и заблокировать эти адреса или домены.

            • Сергей

              Я блокировал по этому способу:
              ip firewall mangle add chain=prerouting protocol=tcp tls-host=*youtube.com action=mark-connection new-
              connection-mark=youtube_conn passthrough=no
              ip firewall mangle add chain=prerouting protocol=tcp tls-host=*googlevideo.com action=mark-connection
              new-connection-mark=youtube_conn passthrough=no
              ip firewall mangle add chain=forward connection-mark=youtube_conn action=mark-packet new-packet-mark=y
              outube_packet passthrough=no
              ip firewall filter add chain=forward packet-mark=youtube_packet action=drop

              А тут блокировка не по домену или ip адресу, а по промаркированным пакетам. То есть получается приложение в своих пакетах никак себя не обнаруживает, что оно ходит на сервера инстаграма? Вопрос был именно по этому способу... Если есть мысли, напишите плиз...

              • "А тут блокировка не по домену или ip адресу, а по промаркированным пакетам."

                А это, по-вашему, что в правилах - "tls-host=*youtube.com"? Маркировка пакетов идет на основе информации TLS hostname. Потом на основе маркировки работает блокировка.

                Вам надо промаркировать пакеты приложения instagram. Самое простое - узнать, по каким доменам оно работает. Это не домен сайта instagram.com. Наверно к какому-то api и cdn идут запросы. Я не разбирался.

                • Сергей

                  Ок, спасибо, теперь понял))))

                  • Я так мельком глянул в поиске. Список доменов, по которым обращается приложение, большой. Как я и думал, там и api разные, и cdn. И не так просто все заблокировать. Если получится это сделать, прошу поделиться решением. Я бы настроил свой dns сервер с логированием запросов. Посадил на этот сервер клиента telegram и посмотрел, куда он обращается во время работы. Пример такого сервера - https://serveradmin.ru/nastroyka-dns-servera-bind-v-centos-7/

                    • Сергей

                      Спасибо, если получится, то обязательно напишу сюда...

  43. Я думаю будет актуально для списка блокировок росконадзора
    Вопрос. Два писка address list - первый состоящий из ip , а второй из url
    address list ip и address list url
    Как сделать чтобы траффик сначало проходил по списку Ip и в случае какого либо попадания проверялся уже по списку url
    Т.е. двойная проверка

  44. Алексей

    Подскажите по поводу блокировки сайтов работающие по HTTPS? Блокирует ли он их, если да то как это происходит? Я дебольшой знаток в данном вопросе, но обычно для этого используют прокси серверы с подменой сертификата, однако не все сайты это любят и просто не открываются, как здесь с этим обстоят дела?

    • Подменный сертификат нужен, если хочется смотреть по каким страничкам пользователь ходил на самом сайте. Если стоит цель просто заблокировать сайт, то подменный сертификат не нужен. Микротик блокирует https. Сайты из примера работают по https, тем не менее их получилось заблокировать.

  45. Помощь в написании регулярных выражений это не ко мне. Я сам постоянно спотыкаюсь на этих правилах.

  46. Добрый вечер,

    Спасибо за статью, все правила реально работают.
    Вопрос, хотелось бы блокировать не сайты а видео расшерения, например mp4 swf flv ogg flv webm, какое решение для этого есть?

    тестил пару правил, но ничего не работает, например: ^.*(get|GET).+\\.mp4.*\$

  47. Сергей

    Сделал по образу и подобию с протоколом 7-го уровня для собственного компьютера.
    ----
    Forward
    172.20.0.200
    6(tcp)
    ss-Lock (^.+(vk.com|vkontakte|odnoklassniki|odnoklasniki|facebook|ok.ru).*$)
    reject
    tcp reset
    ----
    Но на любой ресурс захожу более, чем спокойно. Что я сделал не так?

    • Не знаю. В статье рабочий пример, если что-то не работает, надо искать ошибку.

      • Сергей

        Дома тоже микротик, проверил, поискал.
        Обратил внимание на то, что трафик уходит в https и... Милости прошу! Все открывается!

  48. Я тоже заблокировал соцсети и еще некоторые сайты для определенных пользователей, через адрес лист и фаервол, а также в лайер7 - работает!
    Но!
    Пользователи в гугл хроме ставят расширение браузсек или заходят с эпик браузера и все у них работает.
    Как с таким бороться?
    Подскажите!

    • Посмотреть, как работает это расширение или эпик браузер. Скорее всего они проксируют запросы. Надо забанить адреса, через которые они гоняют трафик.

  49. Все настроил, отлично работает, для определенного IP адреса всё блокируется, Спасибо.
    Но возник вопрос, а можно ли блокировать, не весь ресурс, в моём случае это youtube, а определенные каналы на нём.

    • Можно все, что угодно. Пример есть, на его основе выделяйте любые блоки адреса и блокируйте по ним сайты, либо их части.

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

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

  51. Надежда

    Еще вопрос. Как сделать редирект с сайта, например ok.ru, на сайт предприятия? Спасибо.

  52. Надежда

    Спасибо за статью, работает всё, но! У меня большое количество пользователей, как им всем закрыть доступ в соц. сети? правило работает только на одном ИП адресе.

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

  53. Здравствуйте!
    Можно блокированный соц сеть перенаправить локальный страничку который говорят что сайт закрыть из за .....
    Спасибо!

    • Добрый день. Думаю можно, надо подумать, как это сделать.

    • Добрый день. Можно. Есть 2 способа:
      1. Перенаправление через фаерволл (firewall>nat)
      2. Есть используется прозрачный прокси (webporxy>access>+ "path"- сайт,"redirect to" - куда отправлять пользователя)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar