Преамбула
Как известно, компания cloudflare выпустила свой vpn сервис под название warp, работающий на базе wireguard. Есть официальные клиенты для разных ОС, но мы попробуем настроить его на маршрутизаторе mikrotik с установленной ROS 7.1 beta 6 для работы с сервисом antifilter.download. Почему бета? Потому что только на 7 версии была добавлена работа с wireguard. Поэтому способ пока не рекомендуется для продакшна, но для дома самое то.
Установка
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, обновляем свой роутер. Не забываем, что это бета, и что-то может не работать так, как надо.
Настройка
Принцип простой. По 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=169.169.192.1 endpoint-port=2408 allowed-address=0.0.0.0/0
Если все введено правильно, то поднимается новый интерфейс 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.1b6. Получилось таким образом:
Добавляем статический маршрут:
/ip route add dst-address=163.172.210.8/32 gateway=wireguard1
Добавляем bgp шаблон и bgp соединение, где router-id это ваш внешний ip адрес:
/routing bgp template add name="antifilter" ignore-as-path-len=yes routing-table=main as=64512 multihop=yes hold-time=4m keepalive-time=1m input.filter=bgp_in
/routing bgp connection add name="antifilter_bgp" remote.address=163.172.210.8/32 local.default-address=172.16.0.2 router-id=*.*.*.* templates=antifilter
На этом этапе bgp connection должен подняться, и начнет наполняться таблица маршрутов из сервис antilter.download.
Теперь разрешим фильтром получаемые маршруты
/routing filter rule add chain=bgp_in rule={action accept}
Готово. Проверяем работоспособность на нужных сайтах.
Например, из терминала микротика запускаем traceroute yandex.ru и traceroute linkedin.com, сравниваем результат.