Преамбула

Как известно, компания cloudflare выпустила свой vpn сервис под название warp, работающий на базе wireguard. Есть официальные клиенты для разных ОС, но мы попробуем настроить его на маршрутизаторе mikrotik с установленной ROS 7.1 beta 6 для работы с сервисом antifilter.download. Почему бета? Потому что только на 7 версии была добавлена работа с wireguard. Поэтому способ пока не рекомендуется для продакшна, но для дома самое то.

Установка

  1. 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 адрес и порт, а также диапазон разрешенных адресов.

  2. 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=162.159.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. Получилось таким образом:

  • Добавляем 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={set gw-interface wireguard1; action accept}

Готово. Проверяем работоспособность на нужных сайтах.

Например, из терминала микротика запускаем traceroute yandex.ru и traceroute linkedin.com, сравниваем результат.

P.S. Статья писалась для b6, но пока ничего не поменялось и для текущей rc7

Комментарии (7)


  1. Darkhon
    09.12.2021 18:39
    +1

    WARP — прекрасный VPN, но есть одна проблема: Роскомнадзор там обещает его скоро заблокировать. А жаль. Достойной альтернативы ему среди бесплатных VPN практически нет.


    1. aborouhin
      09.12.2021 19:00
      +4

      Чтобы не играть в кошки-мышки с РКНом, достойная альтернатива только одна - поднимать свой VPN. Некоторые даже бесплатно это реализуют на оракловском облаке.


  1. aborouhin
    09.12.2021 19:07

    У antifilter.download большой недостаток - по BGP они отдают только суммаризованные до /24 префиксы. В итоге работать отказывается часть попавших "за компанию" в VPN сайтов, которые, наоборот, отсекают зарубежные IP либо адреса VPN-сервисов и облачных провайдеров. Ну и замедляется то, что можно бы не замедлять и ходить напрямую.

    Полный список префиксов отдают по BGP на antifilter.network, но там свои приколы с формированием списка, в итоге адреса LinkedIn, например, в него не попадают.

    Так что я BGP-сервер тоже свой поднял, который скачивает и парсит списки с antifilter.download и отдаёт, в зависимости от настроек пира, или /32, или /24. На текущий момент, чтобы переварить полный список префиксов, достаточно 1Gb RAM на маршрутизаторе. Но на пике охоты РКН за Телеграмом и этого не хватало :(


    1. resetsa
      09.12.2021 21:03

      Порядка 20000 префиксов примут гораздо больше устройств, а вот все /32…
      Да, часть ресурсов попадет в ВПН не смотря, на то, что открыты.
      В конце концов можно отфильтровать нужный префикс на IN фильтр.
      PS
      У меня сейчас 20000 префиксов, меньше 64М занимают.


      1. aborouhin
        09.12.2021 21:10

        Ну я и написал - сейчас 1 Гб хватает на 200-300 тысяч префиксов с запасом, наверное, даже 512 Мб хватит. А когда их в своё время стало под полтора миллиона - перестало хватать.

        Но если у устройства память позволяет - то смысла нет мириться с недостатками суммаризации, проще брать /32. А вот этого как раз antifilter.download по BGP сделать и не позволяет.


    1. mmaks17
      11.12.2021 10:50

      в рос 7.1 серьезно переработали BGP, даже ас2 со 128Мб памяти, не особо напрягаясь загрузил 200+ к маршрутов, (поадресную выгрузку РКН)


  1. ajijiadduh
    09.12.2021 20:22

    зачем использовать бета прошивку, если там уже есть стейбл?