TanodTools
RU

Генератор WireGuard для MikroTik

Задайте сеть туннеля и своих клиентов и получите конфигурацию WireGuard для RouterOS v7 и файл настроек для каждого ноутбука, телефона или удалённой площадки.

Ключи создаются в браузере и не покидают устройство

Маршрутизатор
Ключи
Клиенты
    Трафик клиентов

    Нужен RouterOS v7 (в v6 WireGuard недоступен). Ключи создаются средствами Web Crypto X25519 вашего браузера; если их нет, маршрутизатор создаёт собственный ключ, а в конфигурациях остаются заглушки. Только адреса туннеля IPv4. MikroTik и RouterOS являются товарными знаками SIA Mikrotīkls. Этот инструмент независим и не связан с MikroTik и не одобрен компанией.

    Как настроить WireGuard на MikroTik

    1. Введите имя интерфейса, порт прослушивания, адрес маршрутизатора в туннеле (например, 10.66.0.1/24) и публичный адрес, к которому будут подключаться клиенты.
    2. Добавьте строку для каждого клиента с его адресом в туннеле; для связи между площадками добавьте сети за ним. Выберите полный или раздельный туннель.
    3. Вставьте скрипт RouterOS, поднимите правило файрвола выше правил drop и импортируйте файл .conf каждого клиента в его приложение WireGuard.

    WireGuard в RouterOS v7

    WireGuard появился в RouterOS 7 и настраивается в двух местах: в /interface wireguard хранятся пара ключей маршрутизатора и порт прослушивания, а в /interface wireguard peers — по одной записи на каждое удалённое устройство или площадку, которое определяется по публичному ключу. Затем интерфейсу туннеля назначается IP-адрес, как любому другому интерфейсу, и к нему применяются обычные правила файрвола, маршруты и списки интерфейсов. Ни имени пользователя, ни пароля здесь нет: клиент — это тот, у кого есть приватный ключ, соответствующий настроенному публичному.

    Основа настройки — параметр allowed-address клиента. В нём перечислены адреса источника, которые маршрутизатор принимает от этого клиента, и одновременно адреса назначения, трафик к которым он отправляет этому клиенту. На стороне устройства ту же роль в обратную сторону играет AllowedIPs: 0.0.0.0/0 направляет в туннель всё, а список сетей оставляет туннель только для этих сетей.

    Перед подключением

    • Маршрутизатор должен принимать UDP на порту прослушивания в цепочке input выше любого правила drop. Генератор файрвола MikroTik может открыть его для вас с udp/13231.
    • Если маршрутизатор стоит за другим устройством с NAT, пробросьте на него UDP-порт, как показывает Генератор проброса портов MikroTik.
    • Конфигурации клиентов содержат приватные ключи. Передавайте их на устройства по надёжному каналу и удаляйте случайные копии.

    Вопросы и ответы

    Безопасно ли, если ключи создаются на веб-странице?

    Их создаёт встроенная в ваш браузер реализация Web Crypto X25519 — та же кривая, что использует WireGuard, — и они существуют только в памяти этой страницы и в показанном вам тексте. Ничего никуда не отправляется: у страницы нет серверной части, а её политика безопасности блокирует соединения с другими сайтами. Закройте вкладку, и ключи исчезнут, поэтому сначала сохраните нужные конфигурации.

    Что делать, если браузер не умеет создавать ключи X25519?

    Страница сообщит об этом и перейдёт на ключи, созданные в другом месте: в скрипте RouterOS не будет приватного ключа, и маршрутизатор создаст собственный при создании интерфейса. Выполните /interface wireguard print, чтобы узнать его публичный ключ, вставьте его в конфигурации клиентов, а публичный ключ каждого клиента (из его приложения WireGuard) вставьте в таблицу здесь.

    Что такое allowed-address у клиента MikroTik?

    Это одновременно список доступа и таблица маршрутизации: маршрутизатор принимает от клиента пакеты только с такими адресами источника и отправляет этому клиенту трафик к таким адресам назначения. Для одного устройства это его адрес /32. Для удалённой площадки добавьте её локальную сеть, и скрипт также добавит маршрут к ней.

    Полный туннель или раздельный?

    Полный туннель (AllowedIPs 0.0.0.0/0 у клиента) направляет весь трафик устройства через маршрутизатор, что полезно в ненадёжной сети Wi-Fi; маршрутизатор при этом должен выполнять маскарадинг адресов туннеля при выходе в интернет. Раздельный туннель отправляет только сеть туннеля и перечисленные вами сети, поэтому обычный сёрфинг остаётся локальным.

    Зачем клиенту PersistentKeepalive?

    Телефон или ноутбук за NAT может получать пакеты, только пока жива запись в таблице NAT. Keepalive каждые 25 секунд поддерживает её, поэтому маршрутизатор может достучаться до клиента, а туннель быстро восстанавливается после паузы.

    Что даёт общий ключ (preshared key)?

    Дополнительный симметричный секрет, подмешиваемый в рукопожатие: он добавляет защиту от будущих квантовых атак на обмен открытыми ключами. Он необязателен и должен совпадать с обеих сторон.