Настройка antifilter.download в связке с vpn сервисом cloudflare warp на mikrotik ROS v7.1
Преамбула
Как известно, компания cloudflare выпустила свой vpn сервис под название warp, работающий на базе wireguard. Есть официальные клиенты для разных ОС, но мы попробуем настроить его на маршрутизаторе mikrotik с установленной ROS 7.1 для работы с сервисом antifilter.download.
Установка
WARP. Собственно официальный клиент warp нам не понадобится, достаточно скачать стороннюю утилитку для получения регистрационных данных здесь https://github.com/ViRb3/wgcf
Командами wgcf register и wgcf generate получаем нужный файл wgcf-profile.conf, откуда мы возьмем данные для подключения к сервису. Файл примерно такого содержания:
[Interface] PrivateKey = **** Address = 172.16.0.2/32 Address = ****:::::::****/128 DNS = 1.1.1.1 MTU = 1280 [Peer] PublicKey = **** AllowedIPs = 0.0.0.0/0 AllowedIPs = ::/0 Endpoint = engage.cloudflareclient.com:2408
где адрес endpoint ресолвится на данный момент в 162.159.192.1, порт 2408
Нам понадобятся приватный и публичный ключ, endpoint адрес и порт, а также диапазон разрешенных адресов.
ROS v7 для микротика берем на routeros.com, обновляем свой роутер (ну или автоматически). Не забываем, что это
бетауже stable, и все равно что-то может не работать так, как надо. В продакшн пока не рекомендую.
Настройка
Принцип простой. По bgp получаем список подсетей, устанавливаем маршрут до них через шлюз antifilter, а свою очередь маршрут до этого шлюза пускаем через поднятый vpn интерфейс. Подробнее:
Устанавливаем dns 1.1.1.1
Добавляем новый wireguard интерфейс и пир к нему. Приватный и публичный ключ, endpoint адрес, порт и разрешенный диапазон адресов берем из файла выше. Также присваиваем локальный адрес нашему новому интерфейсу (адрес берем в том же файле):
/interface wireguard add name=wireguard1 mtu=1420 listen-port=13231 private-key=****
/interface wireguard peers add interface=wireguard1 public-key=**** endpoint-addr=162.159.192.1 endpoint-port=2408 allowed-address=0.0.0.0/0
/ip address add address=172.16.0.2 interface=wireguard1 network=172.16.0.2
Если все введено правильно, то поднимается новый интерфейс wireguard1.
Добавляем еще один src-nat:
/ip firewall nat add chain=srcnat action=masquerade out-interface=wireguard1
Потестируйте, что интерфейс и nat работает, установив маршрут по умолчанию на интерфейс wireguard1. Если нужные сайты открываются, то идем дальше, вернув маршруты на свои обычные.
Из этой публикации https://habr.com/ru/post/549282/ берем настройки bgp с сервиса antifiler.download, спасибо автору публикации и yardanico за наводку с bgp в ros v7. Проблема собственно в переделке настроек bgp из ROS v6 на ROS v7.1. Получилось таким образом:
Добавляем bgp соединение (обойдемся без шаблонов), где router-id это ваш внешний ip адрес:
/routing bgp connection
add as=64512 disabled=no hold-time=4m input.filter=bgp_in keepalive-time=1m local.address=172.16.0.2 .role=ibgp name=antifilter_bgp \
remote.address=163.172.210.8/32 routing-table=main router-id=*.*.*.*
На этом этапе bgp connection должен подняться, и начнет наполняться таблица маршрутов из сервис antilter.download.
Теперь разрешим фильтром получаемые маршруты и установим им шлюз в интерфейс wireguard1:
/routing filter rule add chain=bgp_in disabled=no rule="set gw wireguard1; accept"
Готово. В маршрутах будет примерно такая картина:
Проверяем работоспособность на нужных сайтах. Например, из терминала микротика запускаем traceroute yandex.ru и traceroute linkedin.com, сравниваем результат.
P.S. Статья писалась для b6, в связи с очередными изменениями и выходом 7.1 stable команды изменены на актуальные. Проверено на 7.1.1 на hap ac2.