Mikrotik — Правильная блокировка ресурсов по доменному имени.

Источник: mikrotik.axiom-pro.ru/articles/blocksites.php

Основные проблемы:

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

Настройку блокировки сайтов через WebProxy рассматривать не буду, т.к. это немного прошлый век.

Остановлюсь на рассмотрении основных ошибок, в примерах где начало было положено неплохое, но в конце все испортили.

Попробуем заблокировать: vk.com

Самое ужасное что можно было придумать это — аля:

/ip firewall filter add chain=forward protocol=tcp src-address=192.168.0.0/24 dst-address=87.240.143.244 action=drop

Помимо того что vk.com, vkontakte.ru, vkadre.ru имеет целых три жирных диапазона серверов, так еще случайность попадания на этот сервер крайне мала. Кроме того у контакта есть свой чудный api для встраивания комментариев на любые другие сайты.

Далее еще один пример, получше, но не совсем:

/ip firewall filter add chain=forward protocol=tcp src-address=192.168.0.0/24 content="vk.com" action=drop

И данное правило с параметром content убьет все пакеты в которых содержится vk.com, следовательно все страницы в интернете, где есть встроенный комментатор контакта, будут открываться по 2−5 мин (Зависит от браузера и количества повторных попыток) или вообще улетят по таймауту.

Такое же правило, но параметр content немного другой:

/ip firewall filter add chain=forward protocol=tcp src-address=192.168.0.0/24 content="Host: vk.com" action=drop

Приводит к тому же результату, пакеты дропаются, браузер пытается открыть повторно, пытается, пытается и забивает.

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

За эти 2−5 минут (разные браузеры) пользователь уже передумает ждать этот сайт, а у некоторых складывается иллюзия что инет глючит и работает через раз.

Жаль что люди которые учат данными примерами в интернете почти никогда толком не проверяют свою работу, идеи то хорошие, только вот незаконченные…

Итак, гвоздь программы : action=reject reject-with=tcp-reset

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

Данное правило вызвало сообщение во фрейме о том что «Соединение закрыто удалённым сервером», при попытке открыть vk.com выдал тоже самое.

/ip firewall filter add chain=forward protocol=tcp src-address=192.168.0.0/24 content="vk.com" action=reject reject-with=tcp-reset

Это правило показало более культурную картинку во фрейме в стиле «контакт задумался», при открытии vk.com браузер предложил скачать файл default длинной в 0 байт 🙂

/ip firewall filter add chain=forward protocol=tcp src-address=192.168.0.0/24 content="Host: vk.com" action=reject reject-with=tcp-reset