RouterOS WireGuard
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.
.Раздел WireGuard в главном меню WinBox
Как видим WireGuard доступен в WinBox сразу в главном меню, но через консоль он доступен, как и положено в разделе interface.
[admin@vasilevkirill.ru] /interface/wireguard>
На всякий случай напоминаю, что в RouterOS седьмой версии слегка изменился синтаксис, теперь разделитель между разделами не пробел, а слеш (slash), по аналогии так же как и в API RouterOS шестой версии, что конечно значительно удобнее.
Создадим интерфейс
[admin@vasilevkirill.ru] /interface/wireguard add name=wireguard-test listen-port=666
И посмотрим результат
[admin@vasilevkirill.ru] /interface wireguard
add listen-port=666 mtu=1420 name=wireguard-test private-key="WAXLRnORvGTkuoSVVH6hqx89bLyW88q51ThCifSxv3o="
Кстати обратите внимание export всё ещё выводит путь к разделу, в старом формате. Да пока синтаксис обратно-совместим, можно пользоваться как пробелом, так и слешом для разделения уровней.
Видим что RouterOS автоматически создал приватный ключ для интерфейса WireGuard. Если вы не укажите порт, который будет слушать интерфейс порт будет сгенерирован динамически. Как вы знаете я отрицательно отношусь к не определённости, поэтому указываем руками.
Нам необходимо выяснить публичный ключ
[admin@vasilevkirill.ru] /interface/wireguard print
0 name="test" mtu=1420 listen-port=666
private-key="WAXLRnORvGTkuoSVVH6hqx89bLyW88q51ThCifSxv3o="
public-key="Cz1ar0f20XfkV93GqubTBO1zArFP4PxHyJs4hXxWGE0="
Именно этот public ключ мы должны передать на клиента.
Так же необходимо назначить на интерфейс WireGuard ip адрес
Настройка MikroTik
Закажи настройку MikroTik непосредственно сейчас, поможем в поиске решения по любому кейсу связанному с MikroTik.
Предоставляю гарантию две недели на свою работу, оплата постфактум, работаю как с юридическими, так и физическими лицами.
[admin@vasilevkirill.ru] /ip address
add address=10.255.255.1/24 interface=wireguard-test
Далее заходим на самого клиента, в моём случае я буду делать всё на iPhone на других платформах аналогично с учётом специфика клиента.
Заходим в клиента | Создаём туннель |
---|---|
Далее нам необходимо подготовить интерфейс на клиенте
Задаём имя интерфейса | Генерируем ключи |
---|---|
Скопируйте public ключ | Настройка сети |
---|---|
Ключ нам необходимо передать на MikroTik, а адреса клиентов должны лежать в сети адреса интерфейса WireGuard указанном на MikroTik.
Необходимо настроить peer на клиенте
Настройки пира | Параметры для peer |
---|---|
- Public key - Public ключ мы его взяли с интерфейса в RouterOS
- Endpoint - Точка подключения IP адрес и порт wireguard RouterOS
- Allowed IPs - сети или ip адреса, которые будут использовать для отправки трафика в туннель. Можно указать внутренние сети.
- Keepalive - так как мой тестовый сервер находиться за НАТ, чтобы на маршрутизаторе который НАТ-ит трафик не “отсохло” соединение, необходимо периодически генерировать активность.
Добавляем клиента на MikroTik
[admin@vasilevkirill.ru] /interface wireguard peers
add allowed-address=0.0.0.0/0 interface=wireguard-test persistent-keepalive=10 public-key="0XNCHvwFammDULmDQ50vLKq4jAnD4pDpVTSOnzZjbG4="
public-key - которые был сгенерирован на клиенте.
.Проверка
.Результат на клиенте
Конечно это самый не удобный способ, мы можем всё подготовить со стороны сервера и передать клиенту в одностороннем порядке, и клиенту необходимо будет либо камерой прочитать QR код или выбрать файл конфигурации.
Я же здесь просто хотел вам показать, что это работает и с этим можно жить.
Поделиться
Обсуждение
Лицензия
Текст данной статьи распространяется под общедоступной лицензией CC BY-NC-ND 4.0, ознакомиться с тектом лицензии вы можете на данной странице.