Проблема возникла совершенно неожиданно, когда наш центральный офис переехал в другое место и как следствие сменил провайдера. Сотрудники в массовом порядке начали жаловаться мне, что не могут заходить на те сайты, куда раньше доступ у них был. При этом с других наших офисов, сидящих на других провайдерах, сайты по прежнему были доступны.
Некоторое время из-за хлопот с переездом проблему я игнорил, но когда начала жаловаться бухгалтерия (у вас же бухгалтерия тоже по значимости на 1 месте после руководства фирмы?), пришлось разбираться.
Первым делом подозрение пало на проблемы с MTU и MSS. Но с ними, к счастью, все оказалось в порядке. Пробил проблемный домен по базе РКН, тоже ОК, домен чист. Пооткрывал сайт через шлюзы других филиалов (3 разных провайдера), открывается. Но через нашего провайдера к IP домена даже пинги не идут. И тогда я догадался пробить через РКН IP проблемного домена. Вы же уже догадались, что IP-таки в базе оказался?
Но где же тогда редирект на страницу с указанием на то что данный ресурс заблокирован и т.д. и т.п., спросите вы. И я спросил. Сначала правда попробовал открыть несколько сайтов, где раньше, когда было можно, мы все искали что бы посмотреть или скачать. И убедившись, что нет никаких предупреждений о блокировке и на этих сайтах, я позвонил провайдеру.
Провайдер меня выслушал, признал, что проблема есть, а предупреждений нет.
Посочувствовал моей ситуации, но что-то исправлять отказался. Мол, мы соблюдаем требование по блокировке, а требований по уведомлению нет. На чем мы и попрощались.
Конечно, у меня возникло желание пободаться с провайдером, но лень и отсутствие свободного времени это желание затолкали глубоко. Примерно туда же куда я в душе послал провайдера с его интернетом, туда где солнышко не светит.
Проблему же надо было как-то решать. В качестве шлюзов-маршрутизаторов у нас на фирме используются Микротики, не важно какие, Роутер ОС у всех одинаковая. Покопавшись на Хабре, нашел несколько статей о том как обходить блокировки РКН, генерируя и загружая базу РКН в Микротик. При этом маршрутизируя заблокированный трафик на те шлюзы, где никаких блокировок нет. Ради интереса попробовал этот способ. Работает, но не устраивает.
Во первых объем базы в 60000 ip (на начало лета 2019г), отправлял мой Микротик в глубокую кому. Роутер ОС CHR c большим объемом памяти и несколькими ядрами чувствовала себя несколько лучше но давала понять что при таком добросовестном отношении РКН к своим обязанностям и ее хватит не на долго.
Во вторых, доступ получался ко всем заблокированным ресурсам в том числе и тем, которые заблокированы на “законных” основаниях. Что меня как законопослушного гражданина так же не устраивало.
Но сама идея направлять к разрешенным сайтам трафик через те шлюзы где он не блокируется засела в моем сознании.
Что же мы можем для этого сделать?
Первое что приходит на ум выяснить ip ресурса и определить для него шлюз в роутинге. Не вариант, у ресурса может быть несколько ip и они могут меняться, иногда часто. Устанешь добавлять.
Второе, парсить IP посредствам Layer 7 в фаерволе, занося их в адрес лист. Уже лучше, но у Layer 7 есть неприятная черта. Если правил несколько, то он начинает относиться к ресурсам процессора примерно так же, как некоторые жены относятся к зарплате своего мужа. В результате чего в семье начинаются ссоры, скандалы и прочие неурядицы.
Направлять вообще весь трафик через удаленный шлюз, так же пагубно.
К счастью на сентябрьском MUM один из докладчиков открыл страшную тайну. Оказывается Микротики с некоторых пор научились парсить IP домена прямо из его имени в адрес листе, добавляя IP в тот же лист! Вооружившись полученной информацией я наконец решил задачу.
Ниже пример решения:
1. Создаем в фаерволе адрес лист с нужным доменом.

2. В Firewall\Mangle создаем правило, chain:prerouting, advanced: Dst.Address list= имя нашего листа, action:mark routing, New Routing Mark=имя марки



3. Идем в IP\Routes. Создаем новый маршрут по умолчанию. Dst Address=0.0.0.0/0, Gateway= ip шлюза, Routing Mark=ваша марка

На этом все. Теперь ваш Микротик будет парсить ip нужного домена в тот адрес лист, который вы для этого придумали, маркировать маршруты к этому ip и отправлять их через тот шлюз, который вам нужен. У вас же есть резервный шлюз? Смайл.
Делалось на прошивке 6.45.5
Спасибо за внимание.

