21 августа 2020 года, компания MikroTik опубликовала версию RouterOS 7.1beta2 с поддержкой WireGuard

What's new in 7.1beta2 (2020-Aug-21 12:29):

!) added "bgp-network" output filter flag;
!) added bonding interface support for Layer3 hardware offloading;
!) added IPv6 nexthop support for IPv4 routes;
!) added Layer3 hardware offloading support for CRS309-1G-8S+IN, CRS312-4C+8XG-RM, CRS326-24S+2Q+RM and CRS354-48G-4S+2Q+RM;
!) added WireGuard support;
*) disk - improved external disk read/write speed;
*) ospf - fixed point to point routes becoming inactive;
*) route - fixed source address selection of outgoing packets;
*) other minor fixes and improvements;

Давайте попробуем посмотреть что нам подготовили ребята из MikroTik и попробуем разобраться в каких-нибудь деталях .

Главное помните в production есть место только long-term релизам, не о каких stable и тем более testing или development не идёт и речи.

Обновляем RouterOS до версии RouterOS 7.1beta2 и смотрим в winbox.

Vasilevkirill Mikrotik RouterOS WireGuard

Как видим WireGuard доступен в WinBox сразу в главном меню, но через консоль он доступен как и положенно в разделе interface.

[admin@MikroTik] /interface/wireguard> 

На всякий случай напоминаю, что в RouterOS седьмой версии слегка изменился синтаксис, теперь разделитель между разделами не пробел, а слеш (slash), по аналогии также как и в API RouterOS шестой версии, что конечно значительно удобнее.

Создадим интерфейс

[admin@MikroTik] /interface/wireguard add name=wireguard-test listen-port=666

И посмотрим результат

/interface wireguard
add listen-port=666 mtu=1420 name=wireguard-test private-key=\
    "WAXLRnORvGTkuoSVVH6hqx89bLyW88q51ThCifSxv3o="

Кстати обратите внимание export всё ещё выводит путь к разделу, в старом формате. Да да пока синтаксис обратно-совместим, можно пользоваться как пробелом так и слешом для разделения уровней.

Видим что RouterOS автоматически создал приватный ключ для интерфейса WireGuard. Если вы не укажите порт который будет слушать интерфейс порт будет сгенерирован динамически. Как вы знаете я не люблю не определённости, поэтому указываем руками.

Нам необходимо выяснить публичный ключ

[admin@MikroTik] /interface/wireguard print 
 0 name="test" mtu=1420 listen-port=666
   private-key="WAXLRnORvGTkuoSVVH6hqx89bLyW88q51ThCifSxv3o=" 
   public-key="Cz1ar0f20XfkV93GqubTBO1zArFP4PxHyJs4hXxWGE0="

Именно этот public ключ мы должны передать на клиента.

Так же необходимо назначить на интерфейс WireGuard ip адрес

/ip address
add address=10.255.255.1/24 interface=wireguard-test

Далее заходим на самого клиента, в моём случае я буду делать всё на iPhone на других платформах аналогично с учётом специфика клиента.

Заходим в клиента Создаём туннель
Vasilevkirill Mikrotik RouterOS WireGuard Vasilevkirill Mikrotik RouterOS WireGuard

Далее нам необходимо подготовить интерфейс на клиенте

Задаём имя интерфейса Генерируем ключи
Vasilevkirill Mikrotik RouterOS WireGuard Vasilevkirill Mikrotik RouterOS WireGuard
Скопируйте public ключ Настройка сети
Vasilevkirill Mikrotik RouterOS WireGuard Vasilevkirill Mikrotik RouterOS WireGuard

Ключ нам необходимо передать на MikroTik, а адреса клиентов должны лежать в сети адреса интерфейса WireGuard указанном на MikroTik.

Необходимо настроить peer на клиенте

Настройки пира Параметры для peer
Vasilevkirill Mikrotik RouterOS WireGuard Vasilevkirill Mikrotik RouterOS WireGuard
  • Public key - Public ключ который мы взяли с интерфейса в RouterOS
  • Endpoint - Точка подключения IP адрес и порт wireguard RouterOS
  • Allowed IPs - сети или ip адреса, которые будут использовать для отправки трафика в туннель. Можно указать внутренние сети.
  • Keepalive - так как мой тестовый сервер находиться за НАТ, чтобы на маршрутизаторе который НАТ-ит трафик не "отсохло" соединение, необходимо переодически генерировать активность.

Добавляем клиента на MikroTik

/interface wireguard peers
add allowed-address=0.0.0.0/0 interface=wireguard-test persistent-keepalive=10 \
    public-key="0XNCHvwFammDULmDQ50vLKq4jAnD4pDpVTSOnzZjbG4="

public-key - которые был сгенерирован на клиенте.

Проверка

Vasilevkirill Mikrotik RouterOS WireGuard

Результат на клиенте

Vasilevkirill Mikrotik RouterOS WireGuard

Конечно это самый не удобный способ, мы можем всё подготовить со стороны сервера и передать клиенту в одностороннем порядке, и клиенту необходимо будет либо камерой прочитать QR код или выбрать файл конфигурации.

Я же здесь просто хотел вам показать, что это работает и с этим можно жить.

Рассказать друзьям

Чатик телеграм

@mikrotikme