Сегодня речь пойдёт о долгожданной настройки VPN WireGuard на Mikrotik RouterOS 7.3.1. Ранее данный тип соединения не был доступен, но с выходом «семерочки» мы теперь можем создавать данный тип туннеля.
Из основных плюсов его это:
- UDP соединение;
- Проходимость через NAT;
- Гибкое управление интерфейсами;
Из минусов — это отсутствие сохранения состояния и ручное назначение адресов на интерфейсы, как клиентские, так и серверные. Да, тут стоит оговориться, что это не клиент-серверная технология, в понятии протокола есть Peer, который может как принимать соединения, так и инициировать.
То есть тут нет настройки wireguard server и client как в привычных VPN протоколах на MikroTik. В данном случае оба конца сети равнозначны.
Общая идеология строится на том, что у обоих пиров есть приватный и публичные ключи. Это обычная строка цифр и символов сгенерированная в BASE64 кодировке. Всякий раз, когда вы создаёте WireGuard интерфейс, генерируется случайная последовательность ключа. Приватный ключ никому передавать нельзя, а вот публичный нужен для настройки с двух сторон. Первой стороне нужен ключ со второй стороны, и наоборот, второй стороне нужен ключ первой.
Т.е. простыми словами, у вас нет логина и пароля. Все обоюдно, шифруется публичными ключами каждой из сторон. Давайте перейдём от слов к делу и посмотрим на схему сети.
Схема сети
В нашем случае ничего сверхъестественного, имеется провайдер со своей сетью, внутри которой мы будем и настраивать туннель. И далее внутри него, настроим маршрутизацию между площадками.
Настройка Office-1
Открываем меню WireGuard и создаём интерфейс. Имя можно задать какое угодно, но я сразу помечу его для понимания куда он смотрит.
Listen Port можете поменять, а можете оставить по умолчанию. Нажимаем применить и видим наш Private и Public.
Далее переходим на вкладку Peers и создаём пира. Нам нужно указать:
- На каком интерфейсе будет слушаться подключение;
- Публичный ключ другой стороны;
- Endpoint – публичный IP партнёра;
- Endpoint Port – соответственно его порт;
- Allowed Address – сети и адреса, которым разрешено «бегать» по коридору, т.е. через данный интерфейс.
Далеко не отходим, и подключаемся к Office-2. Здесь так же создаём peer с понятным именем в сторону первого офиса.
Копируем Public Key с Office-2 и возвращаемся в Office-1 и вставляем в настройки пира.
На этом же девайсе (Office-1), задаём IP на WireGuard to-Office-2 172.16.30.1 – это адрес внутри VPN сети.
Далее нам нужно создать пир на втором роутере. Копируем публичный ключ первого и переходим к настройке. Все аналогично, но только зеркально. Сейчас все увидите.
- Public Key – публичный ключ партнёра, т.е. первого роутера;
- Его публичный IP и порт;
- Разрешённые адреса, и сети.
- Сохраняем, применяем и не забываем назначить туннельный IP на Office-2.
Проверка WireGuard
Запустим ping по туннельным адресам wireguard в направлении друг друга c двух микротиков.
Обратите внимание на интерфейсы, трафик действительно идёт по нужным.
Маршрутизация
И вишенкой на торте, у нас остаётся создание маршрутов в соседние сети. Выше мы убедились, что WireGuard работает, остаётся научить наши маршрутизаторы ходить друг к другу.
Создаём маршрут во второй офис на первом mikrotik через раздел routes (а не через wireguard).
И наоборот, во втором офисе создаём маршрут в первый.
Обратите внимание на Immediate Gateway – после сохранения правила, интерфейс через который доступна сеть, Mikrotik подставит автоматически. Ваша задача проверить, чтобы был выбран верный.
Проверка связанности сетей
Для этого включаем наши виртуальный PCs, проверяем чтобы мы получили адреса корректные и пробуем прошпиговать друг друга.
Все прекрасно работает. Далее вы можете ограничивать трафик на уровне фаервола, но это уже совсем другая история.
Подытожим, мы настроили WireGuard на двух роутерах MikroTik, объяснили что в данной технологии нет привычной клиент серверной архитектуры, создали маршруты и объединили два офиса (site to site). А самое главное, это делается все быстро и просто.