Pull to refresh

MikroTik и блокировка нежелательных сайтов (на примере youtube и facebook)

System administration *Network technologies *
Sandbox
Tutorial


На написание данной статьи меня сподвиг тот факт, что старший ребенок стал по ночам вместо того чтобы укладываться спать, смотреть на своем смартфоне всякие ролики на youtube, до поздней ночи, а так же замена домашнего роутера с TP-Link TL-WR1043ND на MikroTik RB951G-2HnD.

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

Начнем с часто предлагаемого варианта в интернете (так не надо делать!!!):

● /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

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

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

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


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

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



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

add name=facebook regexp="^.+(facebook).*$"

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

regexp=”^.*youtube.com|youtu.be|netflix.com|vimeo.com|screen.yahoo.com|dailyMotion.com|hulu.com|twitch.tv|liveleak.com|vine.co|break.com|tv.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 
add action=mark-packet chain=prerouting connection-mark=youtube_conn new-packet-mark=youtube_packet





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

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





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

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



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

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

Буду рад комментариями и поправкам, если вы заметите какие то неточности, т.к. это моя первая статья на Хабре. По материалам канала MikroTik на Youtube. Внимание, эта статья не о том как ограничить доступ ребенку в интернет, ограничение доступа в ютуб — это просто пример. Статья об одном из способов ограничения доступа к нежелательным ресурсам.

Updt1, от avelor, блок по mac:
 ● /ip firewall filter
    add chain=input src-mac-address=aa:bb:cc:dd:ee:ff action=drop
    add chain=forward src-mac-address=aa:bb:cc:dd:ee:ff action=drop

можно заблочить и в dhcp — сделать lease и жмякнуть block access
Tags:
Hubs:
Total votes 19: ↑16 and ↓3 +13
Views 133K
Comments Comments 78