• Настройка MikroTik для обхода санкций

    Мне по работе постоянно нужно обращаться к запрещённым для России сайтам, например сайт NXP Semiconductors, на котором куча документации, при обращении с российского IP выдаёт 403. И так много где. Поскольку до технологического суверенитета нам ещё далековато (хотя на российских сайтах тоже попадается полезная информация), а каждый раз включать для этого телепорт в Нарнию надоело, решил настроить на роутере. Итак, что мы имеем:

    • роутер MikroTik RB4011 без Wi-Fi (для всех остальных всё будет так же, но нагрузка будет выше намного и не факт, что он её осилит);
    • обычный российский домашний интернет с белым постоянным айпишником;
    • VDS с белым айпишником (хотя в принципе необязательно белым) в Нарнии, на которой VPN-клиент до дома и MASQUERADE NAT из VPN-сети наружу. В принципе неважно, в какую сторону это будет работать. Как это настроить — тема другой статьи. Сегодня мы чисто про роутер.

    Исходное положение — у роутера есть интернет с внешним постоянным IP, соединение с VDS-кой установлено, внутренний IP-шник 192.168.14.1, VPN IP VDS-ки 192.168.45.1. DNS гугловый 8.8.8.8.

    Также условимся, что у нас есть два списка сайтов — «список разрешённых сайтов», который идёт через обычный российский интернет, и всё остальное, которое идёт через Нарнию.

    1. Создаём 2 address-list с помощью меню IP/Firewall/Address list. В первом пишем сюда свой локальный внутренний IP (например 192.168.14.17) и называем его foreign-internet, во втором — какой-нибудь адрес, который строго требуется открывать через Россию (например gosuslugi.ru, которые не открываются из Нарнии, на момент написания статьи их IPv4-адреса 213.59.254.7 и 213.59.253.7, можно добавлять подсетью, например 213.59.0.0/16), и назовём его russia-only
    2. Создадим правило для перенаправления трафика. Меню IP/Firewall/Mangle. [ ! ] — означает «не» в клеточке слева от поля ввода. Что нужно включить:
      • Enabled
      • Chain=Prerouting
      • Dst-Address=[ ! ] 192.168.0.0/16
      • Src. Address-List = foreign-internet
      • Dst. Address-List = [ ! ] russia-only
      • Action = route
      • Route Dst. = 192.168.45.1
    3. Запоминаем номер правила в списке (в моём случае это 3)
    4. Добавляем в System/Scheduler правило со скриптом следующего содержания и запуском раз в секунду:
      :local HOST 192.168.45.1
      :if ([/ping $HOST count=1] = 0) do={
      :log error "HOST $HOST is not responding to ping request, disabling freedom rule …"
      /ip/firewall/mangle/disable 3
      } else {
      :log warning "HOST $HOST ping is ok, enabling freedom rule …";
      /ip/firewall/mangle/enable 3
      }

    Готово! Вы великолепны.

    Это работает так. Все хосты, внесённые в список foreign-internet, получают доступ к сети через Нарнию, и всякие сайты типа NXP, Analog Devices, Нельзяграм, Лицокнига и тд начинают нормально работать. Если нужно, чтобы какой-то хост работал только через Россию (для быстродействия или потому, что из Нарнии он недоступен) — добавляем его в список russia-only. Если Нарния отвалится — все пойдут через обычный российский интернет. Если восстановится — всё вернётся. Обо всём остальном позаботится роутер.