Осуществить блокировку сайта(ов) на MikroTik большое множество,
в статье рассмотрю некоторые из них. С помощью изученных средств по ограничению доступа к сайтам достаточно просто блокировать любую рекламу,соцсети и т.п. И так приступим к изучению блокировки на примере сайта facebook.com
Блокировка через Address List
- Подключаемся к роутеру через WinBox и идем в раздел IP→ Firewall, открываем вкладку Address List
- Нажимаем на синий и создаем список для блокировки сайта

Заполним несколько полей в окне New Firewall Address List

Name ─ Имя создаваемого списка. Можно назвать как угодно.
Address ─ Адрес сайта. Можно указать как IP адреса, так и доменное имя.
После добавления списка с адресом в виде доменного имени (facebook.com), происходит автоматический подмена имени в IP адрес. После этого создаются динамические записи в списке уже из конкретных IP адресов. Эти IP адреса берутся из записей типа A в DNS.
У сайта может быть несколько разных доменных имен. Следовательно у этих доменов может быть совсем другой IP адрес, поэтому лучше добавить в список все известные домены например:
• yandex.ru
• ya.ru
• cloud.yandex.ru
• mail.yandex.ru
• money.yandex.ru
и так далее

Если вносить в список IP адреса, то узнать все адреса сайта можно через сервис BGP Toolkit от Hurricane Electric по ссылке тут
В поле поиска вводим нужный сайт и жмем на кнопку Search , отоброзиться список IP адресов ресурса

При добавление IP адресов, удобнее использовать командную строку создав предварительно список, например:
/ip firewall address-list add address=74.119.76.0/22 list=facebook disabled=no

Где address ─ адрес из списка, который отобразился при поиске.
Или можно создать файл со списком IP адресов с расширение .rsc
Например файл для facebook.com
Теперь можно настроить правило блокировки с использованием ранее созданного списка (facebook) .
Переходим на вкладку IP→ Firewall → Filter Rules и добавляем новое правило.

Chain ─ forward. ( Цепочка для транзитных пакетов, которые идут через роутер. В том числе все, что проходит из локальной сети.)
Src.Address ─ 172.16.0.0/24 ( Подсеть, для которой будет действовать блокировка, можно задать определенный IP для которого необходимо блокировать сайт. )
Protocol ─ tcp ( Для какого протокола будет работать правило.Если не указывать протокол, то тоже будет работать блокировка, но чем более конкретно указано правило, тем лучше в общем случае. )
Далее переходим на вкладку Advanced. Указываем список (facebook),который создали ранее.

Теперь переходим во вкладку Action в ней задаем параметры блокировки проходячщих пакетов

Заполняем вкладку, затем нажимаем Apply и OK.
Action ─ reject ( Отброс пакета с причиной указанной в Reject with )
Reject With ─ tcp reset ( отправляет ответ сеть недоступна )
Для того, чтобы правило блокировки работало, его необходимо разместить в списке выше правила, разрешающего трафик из локальной сети в интернет.
Теперь сети 172.16.0.0/24 сайт facebook.com недоступен. Аналагчино можно заблокировать доступ для определённого IP адреса из локальной сети.
Блокировка через Layer7 Protocol
Layer7 protocol, является методом поиска совпадений по регулярным выражения в ICMP, TCP и UDP потоках. И работает следующим образом: с каждого соединения, берутся первые 10 пакетов или первые 2KB, в которых производится поиск совпадений. Таким образом, мы можем находить тот или иной вид трафика, и дальше обрабатывать его в Firewall - запрещать, перенаправлять, маркировать соединения и прочее.
Создаем правило Layer7 Protocol в соответствующем разделе Winbox
IP → Firewall → Layer7 Protocols для блокировки социальной сети facebook.

1. Name ─ Задаем название правила
2. Regexp ─ Вписываем регулярное выражение
/ip firewall layer7-protocol
add name=facebook regexp="^.+(facebook).*\$"
Далее нужно промаркировать все соединения и пакеты в dns запросах, где будет совпадение с созданным ранее правилом. Идем во вкладку Mangle и добавляем правило маркировки соединений.
Заполняем вкладку General

Chain ─ prerouting
Protocol ─ udp
Dst.Port ─ 53
Connection Mark ─ no-mark
Переходим во вкладку Advanced и в поле Layer7 Protocol выбираем созданый ранее L7 protocol facebook

Далее заполняем вкладку Action
в поле Action выбираем mark connection
в поле New Connection Mark маркеруем пакет например зададим маркер как facebook_mark
Напротив Passthrough должнастоять галочка, если не стоит то ставим

Action ─ mark connection
New Connection Mark ─ facebook_mark
Passthroug ─
Теперь создаём правило для маркировки пакетов на основе промаркированного выше соединения
Идем во вкладку Mangle и добавляем еще одно правило маркировки соединений
Заполняем полоя во вкладке General

Chain ─ prerouting
Connection Mark ─ facebook_mark выбираем маркированый пакет созданный ранее
Далее заполняем вкладку Action в ней в поле Action выбираем mark connection в поле New Connection Mark маркеруем пакет например зададим маркер как facebook_connect
Напротив Passthrough должнастоять галочка, если не стоит то ставим
Action ─ mark connection
New Connection Mark ─ facebook_connect
Passthroug ─
/ip firewall mangleadd action=mark-packet chain=prerouting connection-mark=facebook_conn new-packet-mark=facebook_connect
Создём правила для фильтра файрвола в цепочек input и forward
Переходим во вкладку Filter Rules и содаём два правила
Правило №1 для цепочки forward
Правило №2 для цепочки input
/ip firewall filter
add action=drop chain=forward packet-mark=facebook_connect
add action=drop chain=input packet-mark=facebook_connect
Данные правила должны быть расположены выше разрешающих правил для цепочек input и forward
Блокировка через DNS
Для того чтобы заблокировать сайт при помощни DNS , необходимо добавить статическу запись в DNS с названием сайта или его IP адресом.
И так , открываем терминал и прописываем команды :
/ip dns static add name="facebook.com" address=127.0.0.1
У пользователей заблокированные сайты еще будут открываться некоторое время, потому что на компьютерах есть DNS кэш, в котором временно хранятся имена посещенных сайтов и их IP адреса. Для очистки DNS кэша на компьютере нужно запустить командную строку cmd и ввести команду ipconfig /flushdns.
Данный метод блокировки будет работать до тех пор пока пользователь вручную не сменит адрес DNS сервеара (ов). Для такого случая необходимо
все DNS запросы завернуть на наш роутер. Для этого заходим на терминал и выполняем следующие команды :
/ip firewall nat
add chain=dstnat protocol=udp dst-port=53 action=redirect
add chain=dstnat protocol=tcp dst-port=53 action=redirect
Теперь все DNS запросы будут идти через наш роутер
Блокирока через TLS Host
В MikroTik RouterOS, начиная с версии 6.41.1, появилась возможность блокировать https-сайты спомощью функции TLS Host. Во вкладке General заполняем графу Protokol ( TCP) и Dst.Port (433) Во вкладке Advanced заполняем графу TLS Host в нашем случае это сайт facebook.com


Так же необходимо создать еще одно правило во вкладке TLS Host с параметрами *.facebook.com Это правило необходимо для блокировки всех доминов которые имеют приставку перед facebook.com, это может быть что угодно ,например m.facebook.com (мобильная версия фейсбука) и т.п.

Есть еще один способ как блокировать сайт(ы) на MikroTik ( RouterOS) блокировка с помощью Proxy-сервера, но Proxy на MikroTik это так,для галочки.... Так что данный способ не рассматриваю
На этом вроде бы все, я описал все способы блокировки сайта(ов) на оборудовании фирмы MikroTik с опирационной системой RouterOS на борту.





