Блокировка сайтов youtube и facebook при помощи MikroTik

1c16c516e210dd8881751624cc1315d7 XL 1

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

Вариант, который чаще всего предлагают в интернете:

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

/ip firewall filter add action=drop chain=forward layer7-protocol=facebook

add action=drop chain=forward layer7-protocol=youtube

У данного решения следующие минусы: высокая нагрузка на процессор, увеличенная latency, потеря пакетов, youtube и facebook не блокируются. 

Почему так происходит? Каждое соединение проверяется снова и снова, Layer7 проверяется не в том месте, что приводит к проверке всего трафика.

Мы немного доработаем этот метод блокировки. Читайте далее.

Правильное решение

Создаем правило с регулярным выражением для Layer7:

/ip firewall layer7-protocol add name=youtube regexp=«^.+(youtube).*\$»

001 2

В примере блочим только ютуб, если нужен фейсбук или что-то иное, создаете отдельные правила:

add name=facebook regexp=«^.+(facebook).*\$»

Можно создавать правила и для других сервисов стримминга видео, вот один из вариантов поля Regexp: 

^.*(youtube.com|youtu.be|netflix.com|vimeo.com|screen.yahoo.com|metacafe.com|viewster.com).*$

Далее создаем правила для маркирования соединений и пакетов:

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

002 3

*Можно создать это правило на весь трафик, а не только на DNS. Нагрузка при этом но роутер возрастёт, но вы гарантированно закроете пользователям доступ к запрещенным сайтам.

add action=mark-packet chain=prerouting connection-mark=youtube_conn new-packet-mark=youtube_packet

003 4

и правила для фильтра файрвола:

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

add action=drop chain=input packet-mark=youtube_packet

004 5
005 6

В моей сети по DHCP раздаются статические ip-адреса, поэтому фильтр я применял к ip-адресу клиента, можно создать группу адресов и применить к ней. Идем в меню IP>Firewall>AddressList нажимаем кнопку Add, вводим название группы и не забываем заполнить список адресов для блокировки.

Далее идем меню IP>Firewall>Mangle выбираем наши mark_connection и mark_packet и в поле Src. Address вбиваем блокируемый ip либо группу.

006 7

Так же можно применять эти правила по расписанию.