MikroTik — блокировка трафика и проверка утечки
Сделайте так, чтобы выбранный трафик локальной сети останавливался, а не уходил через обычное подключение, когда контейнер ForestVPN недоступен, и проверьте это тестом.
Обновлено 8 октября 2026 г.
В целом пока не проверено на реальном оборудовании. Три правила шагов 1–3 были по отдельности выполнены на RouterOS 7.24.1; остановка и тест из раздела «Проверка, что всё сработало» на роутере не запускались.
Что вы получите
Трафик, который вы решили отправлять через туннель, останавливается, а не уходит через обычное подключение, пока контейнер ForestVPN недоступен. Также вы получаете тест, который это показывает.
Перед началом
- Устройство: MikroTik, который уже направляет часть вашей локальной сети через контейнер, с таблицей маршрутизации
via-fvpnиз статьи выбор того, что идёт через туннель, шаг 1 и один из её рецептов. - Прошивка: RouterOS 7 (проверено на 7.24.1). Синтаксис отличается от RouterOS 6.
- Где: вставляйте на устройстве, которое маршрутизирует вашу локальную сеть. Это может быть не тот роутер, на котором работает контейнер.
- Время: десять минут плюс тест.
- Что может пойти не так: неверный порядок правил. Правило сброса должно стоять выше исключения fasttrack из шага 1, иначе до него не дойдёт.
Шаги
-
Сделайте так, чтобы маршрут к контейнеру учитывался, только пока контейнер отвечает.
Добавляет проверку доступности маршрута
/ip/route/set [find routing-table=via-fvpn dst-address=0.0.0.0/0] \ check-gateway=ping -
Добавьте запасной маршрут, который сбрасывает трафик. Пока основной маршрут работает, он неактивен.
Добавляет маршрут сброса
/ip/route/add dst-address=0.0.0.0/0 blackhole distance=10 \ routing-table=via-fvpn comment="fvpn: kill switch - no exit, no traffic" -
Закройте утечку, которую первые два правила не видят: контейнер, который отвечает на ping, пока его собственный туннель не работает, пересылает трафик на свой шлюз по умолчанию, то есть на вас. Если вы меняли /30 контейнера, подставьте адрес роутера из неё.
Сбрасывает трафик контейнера, который ушёл бы в интернет напрямую
/ip/firewall/filter/add chain=forward action=drop src-address=172.31.254.1 \ out-interface-list=WAN \ place-before=[find comment="fvpn: marked flows skip fasttrack"] \ comment="fvpn: kill switch - overlay source must not leave over WAN" -
По желанию: сделайте одно устройство доступным только через туннель, что бы ни говорили таблицы маршрутизации.
Сбрасывает трафик названного устройства, если он не идёт через туннель
/ip/firewall/address-list/add list=fvpn-only address=192.168.88.50 \ comment="fvpn: the work laptop" /ip/firewall/filter/add chain=forward action=drop src-address-list=fvpn-only \ out-interface-list=WAN \ place-before=[find comment="fvpn: marked flows skip fasttrack"] \ comment="fvpn: kill switch - these devices are tunnel-only" -
Проверьте IPv6. Всё выше относится к IPv4. Если на роутере работает IPv6, выбранный вами трафик доходит до места назначения ещё и по IPv6, в обход туннеля.
Показывает, объявляет ли роутер IPv6 и есть ли у него маршрут по умолчанию
/ipv6/nd/print where ra-lifetime!=none /ipv6/route/print where dst-address="::/0" and routing-table="main"
Проверка, что всё сработало
Сначала убедитесь в порядке правил и в том, что счётчики растут.
Показывает порядок правил и таблицу маршрутов
/ip/firewall/filter/print
/ip/route/print where routing-table=via-fvpnЗатем выполните тест на утечку, когда никому не нужен интернет. С устройства в вашей локальной сети откройте страницу «какой у меня IP»: она должна показать адрес выхода. Остановите контейнер, подождите полминуты и перезагрузите страницу.
Останавливает контейнер
/container/stop [find name="fvpn"]Страница не должна загрузиться. Если она показывает ваш собственный адрес, трафик утекает: перепроверьте шаг 3 и порядок правил. После этого снова запустите контейнер.
Запускает контейнер
/container/start [find name="fvpn"]Отмена
Удаляет только блокировку трафика
/ip/firewall/filter/remove [find comment~"^fvpn: kill switch"]
/ip/route/remove [find comment="fvpn: kill switch - no exit, no traffic"]
/ip/route/set [find routing-table=via-fvpn dst-address=0.0.0.0/0] !check-gatewayЕсли что-то не так
| Симптом | Причина | Что делать |
|---|---|---|
| После теста виден ваш собственный адрес | Правило сброса стоит ниже исключения fasttrack | Поставьте его выше с помощью place-before и проверьте /ip/firewall/filter/print. |
| Ничего не загружается, даже когда контейнер работает | Проверка доступности не достаёт до контейнера | Проверьте адрес контейнера через /interface/veth/print и то, что контейнер запущен. |
| Некоторые сайты долго зависают | IPv6 объявлен, но маршрута по умолчанию нет | Дайте IPv6 настоящий маршрут по умолчанию или перестаньте его объявлять: /ipv6/nd/set [find] ra-lifetime=none. |
Ограничения
- Защита относится к выбранному вами трафику, а не ко всей сети.
- Только IPv4; проверка IPv6 из шага 5 остаётся за вами.
- Блокировка на роутере останавливает трафик. Она не объясняет, почему контейнер недоступен; см. устранение неполадок.