Настройка BGP (Antifilter) через Wireguard на Mikrotik (RouterOS 7)
Данное руководство описывает типовые проблемы и чек-лист настройки при маршрутизации заблокированного трафика через списки BGP (Antifilter) с использованием туннеля Wireguard.
Примечание: Инструкция подразумевает, что удаленный VPS-сервер (Wireguard, NAT) настроен корректно, работает штатно и готов к приему трафика.
ОСНОВНЫЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ (RouterOS 7)
1. Защита от петли маршрутизации (Routing Loop)
Симптом: При включении BGP туннель Wireguard моментально падает, связь с роутером может обрываться. Маршруты то появляются, то пропадают.
Причина: По BGP прилетает маршрут до публичного IP вашего же VPS. Микротик пытается отправить служебный зашифрованный трафик Wireguard внутрь самого туннеля Wireguard (так как туда теперь направлен маршрут), из-за чего туннель схлопывается.
Что делать: Жестко привязать публичный IP VPS-сервера к физическому интерфейсу провайдера (WAN). Это исключит его попадание в туннель.
/ip route add dst-address=[ПУБЛИЧНЫЙ_IP_VPS]/32 gateway=ether1-WAN comment="Anti-Loop for WG"
(Замените ether1-WAN на имя вашего интерфейса с интернетом, например pppoe-out1).
2. Правильные фильтры BGP (Избавляемся от динамических ID)
Симптом: Трафик не идет в туннель вообще, либо уходит в интернет напрямую. В настройках фильтров стоит шлюз вида *0xa.
Причина: В RouterOS 7 фильтры часто создаются через консоль или Winbox с указанием внутреннего шестнадцатеричного ID интерфейса (например, *0xa). При минорном обновлении прошивки, добавлении интерфейсов или перезагрузке этот внутренний ID меняется, и правило начинает указывать "в никуда".
Что делать: В фильтрах (Routing -> Filters) всегда прописывать текстовое имя интерфейса.
- ❌ Неправильно:
set gw *0xa; accept; - ✅ Правильно:
set gw WG0; accept;
/routing/filter/rule/set [find chain=BGP_IN] rule="set gw WG0; accept;"
3. Обход блокировки BGP-сессии провайдером (BGP over VPN)
Симптом: BGP-сессия не поднимается (висит в статусе Connect/Active), маршруты не прилетают. Пинг до серверов Antifilter не проходит.
Причина: Провайдер (или ТСПУ) блокирует BGP-трафик (порт TCP 179) к известным серверам Antifilter.
Что делать: Спрятать саму BGP-сессию внутрь зашифрованного Wireguard-туннеля.
- Направляем трафик до BGP-пира внутрь туннеля WG (чтобы запросы шли через VPN):
/ip route add dst-address=[IP_СЕРВЕРА_BGP]/32 gateway=WG0 comment="BGP over WG" - В настройках BGP Connection (Routing -> BGP) меняем
local.addressс внешнего IP роутера на внутренний IP Микротика в сети Wireguard (например, 10.199.126.5). Иначе Mikrotik будет стучаться внешним адресом изнутри VPN:/routing/bgp/connection/set [find name="antifilter"] local.address=10.199.126.5
4. Проверка NAT (Маскарадинг) на Mikrotik
Симптом: BGP поднят, маршруты в таблице есть. Трассировка показывает, что пакеты уходят в туннель, но сайты не открываются (ответы не возвращаются).
Причина: Пакеты из домашней локальной сети уходят на VPS с серыми IP-адресами (например, 192.168.88.x). Удаленный сервер не может их замаскировать, так как его NAT обычно настроен только на подсеть самого Wireguard (10.x.x.x).
Что делать: Убедиться, что на Микротике есть правило NAT, маскирующее локальный трафик при выходе в интерфейс Wireguard.
/ip firewall nat add chain=srcnat action=masquerade out-interface=WG0 comment="NAT for WG"
✅ ЧЕК-ЛИСТ ДЛЯ ДИАГНОСТИКИ
- [ ] Связь с VPS: Wireguard-туннель поднят? Пингуется ли внутренний IP VPS (например, 10.199.126.1) с Микротика?
- [ ] Защита от петель (Routing Loop): Прописан ли статический маршрут
/32до публичного IP VPS-сервера через физический интерфейс провайдера (WAN)? - [ ] Имена интерфейсов в фильтрах: В меню
Routing -> Filtersуказано явное имяWG0вместо системных ID (*0x...)? - [ ] Защита BGP от блокировки: Маршрутизируется ли IP-адрес BGP-сервера (например, 165.22.x.x) через интерфейс
WG0? - [ ] Локальный IP для BGP: В настройках сессии
Routing -> BGPв полеlocal.addressуказан внутренний IP-адрес интерфейсаWG0(а не внешний IP провайдера)? - [ ] Локальный NAT: Включен ли
masquerade(srcnat) для трафика, покидающего интерфейсWG0?
🛠 КОМАНДЫ ДЛЯ ДИАГНОСТИКИ (ПРОВЕРКА НА MIKROTIK)
Чтобы убедиться, что все настроено правильно, выполните следующие проверки через терминал (New Terminal) в Winbox.
1. Проверка работы самого туннеля Wireguard
Для начала нужно убедиться, что туннель поднят и данные бегают. Пингуем внутренний IP-адрес вашего VPS-сервера (в примере — 10.199.126.1):
/ping 10.199.126.1 count=4
Ожидаемый результат: Пинги возвращаются (packet-loss=0%). Если таймаут — проблема в ключах, портах или Endpoint-адресе WG.
2. Проверка связи с BGP-сервером через туннель
Пингуем IP-адрес BGP-сервера Antifilter (в примере — резервный сервер 165.22.127.207). Этот запрос должен идти строго внутри Wireguard.
/ping 165.22.127.207 count=4
Ожидаемый результат: Пинги идут. Если 100% потерь — вы забыли прописать статический маршрут до BGP-сервера через WG0, и трафик блокируется провайдером.
3. Проверка статуса BGP-сессии и маршрутов
Проверяем, поднялась ли сессия и сколько маршрутов прилетело:
/routing/bgp/connection/print
/ip/route/print count-only where bgp
Ожидаемый результат: Сессия должна быть в статусе established (буква E), а вторая команда должна вывести количество полученных маршрутов (обычно около 30 000 — 45 000).
4. Трассировка маршрута (Traceroute) до заблокированного сайта
Проверяем, каким путем роутер отправляет трафик к заблокированным ресурсам (для примера берем IP-адрес Cloudflare, за которым скрывается Rutracker — 104.21.32.39):
/tool traceroute 104.21.32.39
Ожидаемый результат:
1-й хоп (прыжок) должен быть внутренним IP-адресом вашего VPS в сети Wireguard (например, 10.199.126.1).
2-й хоп должен быть шлюзом провайдера вашего VPS-сервера.
Если первым хопом выступает IP-адрес вашего домашнего провайдера — маршруты BGP не применились.
5. Симуляция запроса из локальной сети (Проверка NAT)
Если с самого Микротика пинг до заблокированного ресурса идет, а с телефонов/ноутбуков — нет, скорее всего, проблема в NAT. Имитируем запрос от имени домашнего устройства (замените 192.168.88.1 на IP-адрес вашего роутера в локальной сети):
/ping 104.21.32.39 src-address=192.168.88.1 count=4
Ожидаемый результат: Пинг должен пройти успешно. Если таймаут — на Микротике отсутствует или не работает правило src-nat (masquerade) для интерфейса WG0.