Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Для тех кто не хочет тратить своё дорогое время на изучение данного мануала предлагаем нашу платную помощь.
Начнем с часто предлагаемого варианта в интернете:
/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|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
*Можно создать это правило на весь трафик, а не только на DNS. Нагрузка при этом но роутер возрастёт, но вы гарантированно закроете пользователям доступ к нужным сайтам.
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. Внимание, эта статья не о том как ограничить доступ в интернет, ограничение доступа в ютуб — это просто пример. Статья об одном из способов ограничения доступа к нежелательным ресурсам.
Автор: Сергей Стрельцов
Дорабатывал статью Кардаш Александр Владимирович
Очень похоже что статья устарела. Смотрите её обновлённый вариант
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Комментарии
Ответ: Она должна выходить без настройки
Несколько неполным был мой комментарий по поводу блокировки сайтов.
Поскольку пользователи социальных сетей используют соединения HTTPS, которые выхватить гораздо сложнее, то необходимо использовать новую фичу RouterOS - TLS-Host (TLS Traffic), которая поддерживает параметр "GLOB-Style-pattern". Применение правила блокировки, которое не будет загружать процессор, будет очень простым:
/ip firewall filter
add chain=forward dst-port=443 protocol=tcp tls-host=*.facebook.com action=reject
add chain=forward dst-port=443 protocol=tcp tls-host=*.youtube.com action=reject
Но это правило будет работать только для первых 10 пакетов из 2килобайт, которые будут промаркированы, хоть и запрещены.
Но соединение для остальных пакетов запрещаться не будет, и если мы будем применять привычное для нас правило для “fasttrack-connection”,
/ip firewall filter
add chain=forward action=fasttrack-connection connection-state=established,related
add chain=forward action=accept connectionstate=established,related
то весь поток, начиная с 10 000 байт будет проходить через него.
И мы используем иной вид правила для “fasttrack-connection”
/ip firewall filter
add chain=forward action=fasttrack-connection connection-bytes=10000-0
add chain=forward action=accept connection-bytes=10000-0
Суть в том, что первые 10k трафика идут через файерволл, а уж потом, если правила запрета для данной цепи не применяются, то после 10 000 байт коннект проходит через фасттрак.
Таким образом, мы и трафик просматриваем и ускоряем фильтрованный коннект.
Начиная с версии 6.41 упрощены правила блокировки сайтов в файерволе.
К примеру, блокировка Ютюба и Фэйсбука.
Когда-то писалось вот так для “High Layer7 load”
/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
И это - неправильно
Устарело и старое применение правила блокировки:
/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 connectionmark=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
(то же самое делается и для Facebook)
Правильное применение правила блокировки:
/ip firewall filter
add chain=forward dst-port=443 protocol=tcp tls-host=*.facebook.com action=reject
add chain=forward dst-port=443 protocol=tcp tls-host=*.youtube.com action=reject
RSS лента комментариев этой записи