Преамбула
Как известно, компания 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.