MikroTik – получаем маршруты по BGP и отправляем трафик в VPN

Для чего это? А нужно это для того, чтобы все заблокированные ресурсы, работали без подключения к VPN на компе или в мобильном устройстве. Инста, торренты и прочее будут работать и открываться в домашней сети без дополнительных манипуляций. Не важно подключен телефон, планшет или комп к домашней сети проводом или по WiFi, VPN всегда подключен внутри роутера, но трафик туда попадает только тот, который блокируется.

Получать заблокированные сети будем от сервиса https://antifilter.download по протоколу BGP.

RouterOS 6.49

В зависимости от ваших правил фаервола, возможно потребуется указать дополнительное правило.

/ip firewall filter add action=accept chain=output protocol=tcp dst-address=45.154.73.71 dst-port=179 out-interface=gre-tunnel1

И маршрут до сервиса antifilter.download через VPN, если провайдер блокирует BGP.

/ip route add dst-address=45.154.73.71/32 gateway=gre-tunnel1

В моем случае это не потребовалось.

Получаем маршруты по BGP

/routing bgp instance add name="antifilter.download" as=64666 router-id=YOUR_IP ignore-as-path-len=yes

Вместо YOUR_IP подставляем свой внешний IP адрес на роутере.

Значение 64666 можно поменять на другое, но отличимое от 65432 которое использует сервис antifilter.download

/routing bgp peer add name="antifilter.download" instance=antifilter.download remote-address=45.154.73.71 remote-as=65432 multihop=yes hold-time=4m keepalive-time=1m ttl=default in-filter=bgp_in

Добавление фильтров

Вот мой вариант фильтра:

/routing filter add chain=bgp_in bgp-communities=65432:500 action=accept set-in-nexthop=10.46.20.1  
/routing filter add chain=bgp_in bgp-communities=65432:100 action=accept set-in-nexthop=10.46.20.1  
/routing filter add chain=bgp_in action=discard

Так я получаю маршруты из двух communities, 500 и 100. Подробнее написано на сайте сервиса, что они в себя включают.

RouterOS 7.9

/routing bgp template add as=64999 disabled=no name=antifilter.download router-id=YOUR_IP
/routing bgp connection add as=64999 disabled=no local.role=ebgp multihop=yes name=bgp-antifilter remote.address=45.154.73.71/32 .as=65432 router-id=YOUR_IP routing-table=main templates=antifilter.download input.filter=bgp_in

Вместо YOUR_IP подставляем свой внешний IP адрес на роутере.

Значение 64666 можно поменять на другое, но отличимое от 65432 которое использует сервис antifilter.download

Или можно настроить эти параметры из интерфейса. Но командой проще, если потом в интерфейсе посмотреть, то понятно становится какие поля заполняются командами.

Фильтр для роутинга в туннель wireguard

Заходим в Routing - Filters и на вкладке Rule жмем +

В Chain пишем название (например: bgp_in), а в содержимое:

set gw wireguard;  
if (bgp-communities includes 65432:500) { accept; } else { reject; }

Или можно так, чтобы разрешить два комьюнити:

set gw wireguard;  
if (bgp-communities includes 65432:100 || bgp-communities includes 65432:500) { accept; } else { reject; }

Правило можно создать и командой, делается это так:

/routing filter rule add chain=bgp_in disabled=no rule="set gw wireguard; if (bgp-communities includes 65432:100 || bgp-communities includes 65432:500) { accept; } else { reject; }”