Генератор WireGuard для MikroTik
Задайте сеть туннеля и своих клиентов и получите конфигурацию WireGuard для RouterOS v7 и файл настроек для каждого ноутбука, телефона или удалённой площадки.
Ключи создаются в браузере и не покидают устройство
Нужен RouterOS v7 (в v6 WireGuard недоступен). Ключи создаются средствами Web Crypto X25519 вашего браузера; если их нет, маршрутизатор создаёт собственный ключ, а в конфигурациях остаются заглушки. Только адреса туннеля IPv4. MikroTik и RouterOS являются товарными знаками SIA Mikrotīkls. Этот инструмент независим и не связан с MikroTik и не одобрен компанией.
Как настроить WireGuard на MikroTik
- Введите имя интерфейса, порт прослушивания, адрес маршрутизатора в туннеле (например,
10.66.0.1/24) и публичный адрес, к которому будут подключаться клиенты. - Добавьте строку для каждого клиента с его адресом в туннеле; для связи между площадками добавьте сети за ним. Выберите полный или раздельный туннель.
- Вставьте скрипт 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)?
Дополнительный симметричный секрет, подмешиваемый в рукопожатие: он добавляет защиту от будущих квантовых атак на обмен открытыми ключами. Он необязателен и должен совпадать с обеих сторон.