Коротко: настройка WireGuard на MikroTik: Для настройки WireGuard на MikroTik потребуется RouterOS v7 или новее. Создайте интерфейс WireGuard, сгенерируйте пару ключей, настройте пир с публичным ключом удалённой стороны, укажите разрешённые IP-адреса и endpoint. Затем назначьте IP-адрес новому интерфейсу, добавьте разрешающие правила в firewall и убедитесь, что handshake успешно установлен.
Настройка WireGuard на MikroTik стала возможной с появлением RouterOS версии 7, которая добавила встроенную поддержку этого современного VPN-протокола. В отличие от классических решений вроде L2TP/IPsec или OpenVPN, WireGuard предлагает высокую скорость, простую конфигурацию и криптографию на основе современных алгоритмов. В этом руководстве мы по шагам разберём весь процесс от создания интерфейса до проверки работоспособности туннеля с клиентом.
Что понадобится
- Маршрутизатор MikroTik с RouterOS версии 7.1 или выше
- Доступ к устройству через Winbox, WebFig или SSH с правами администратора
- Статический публичный IP-адрес или настроенный Dynamic DNS на стороне сервера
- Публичный ключ клиента WireGuard (если настраивается клиентское подключение)
- Определённые подсети, которые вы планируете маршрутизировать через туннель
Подготовка и основные принципы
Перед началом настройки убедитесь, что ваш MikroTik обновлён до RouterOS 7. Если версия ниже, сначала выполните обновление, так как в RouterOS 6 поддержка WireGuard отсутствует. Принцип работы туннеля строится на схеме: интерфейс связывается с пиром через пару ключей, а разрешённые адреса определяют, какой трафик будет инкапсулироваться.
Ключевые параметры, с которыми предстоит работать: Listen Port — UDP-порт для входящих подключений (по умолчанию 13231, но можно изменить на 51820), Private Key и Public Key, Endpoint — адрес и порт удалённого пира, Allowed Address — список сетей, доступных через пира, и Persistent Keepalive — интервал для поддержания туннеля при NAT.
- Вся конфигурация выполняется в терминале или графическом интерфейсе Winbox/WebFig
- Для шифрования используется Curve25519, ChaCha20 и Poly1305
- Пиры обмениваются ключами при инициализации handshake, далее сессия поддерживается без пересогласования
Важно: Перед настройкой сохраните резервную копию конфигурации командой /export file=backup.
Создание интерфейса WireGuard и генерация ключей
Первый этап — создание самого интерфейса WireGuard. В Winbox перейдите в раздел Interfaces, нажмите + и выберите WireGuard. Во вкладке General задайте имя, например wg0, и нажмите Apply. Затем перейдите на вкладку WireGuard, где автоматически сгенерируется пара ключей. Обязательно скопируйте публичный ключ — он потребуется для настройки клиентской стороны.
Поле Listen Port укажите номер порта, на котором MikroTik будет ожидать входящие соединения. Рекомендуется использовать 51820, если он не занят другим сервисом. Если в сети используется NAT, этот порт нужно будет пробросить на роутер.
- Имя интерфейса: wg0 (можно любое)
- Listen Port: 51820 (или другой)
- Private Key генерируется автоматически, но можно вставить свой
- Откройте раздел Interfaces в Winbox или команду /interface wireguard в терминале
- Добавьте новый интерфейс командой /interface wireguard add name=wg0 listen-port=51820 или через графическое меню
- После создания перейдите на вкладку WireGuard, скопируйте поле Public Key
Важно: При использовании терминала ключи генерируются автоматически, но вы можете задать вручную через private-key.
Настройка пиров (Peers)
Теперь необходимо добавить пира — удалённое устройство, с которым будет устанавливаться туннель. Если MikroTik выступает как сервер, пиром будет клиент (ноутбук, телефон или другой роутер). Перейдите на вкладку Peers в свойствах интерфейса wg0 и добавьте запись. Здесь потребуетсяPublic Key клиента, Endpoint (если инициировать соединение будет MikroTik) и Allowed Address.
Поле Allowed Address определяет, какие IP-адреса или подсети разрешены с этого пира. Для сервера часто указывают IP-адрес туннеля клиента с маской /32, например 10.7.0.2/32, а также любые локальные сети за клиентом, если нужен site-to-site. Endpoint указывается в виде IP:Port, например example.ddns.net:51820, если MikroTik подключается к серверу. Для серверного пира, который не имеет постоянного IP, Endpoint можно оставить пустым, но тогда клиент должен инициировать соединение.
Опция Persistent Keepalive в секундах (например, 25) поддерживает туннель активным даже при отсутствии трафика, что особенно важно за NAT.
- Public Key клиента — обязательное поле
- Allowed Address: 10.7.0.2/32 (клиент) или 0.0.0.0/0, если весь трафик клиента направляется через туннель
- Endpoint: IP или доменное имя (при необходимости)
- Persistent Keepalive: 25 (рекомендуется для клиентов за NAT)
- В свойствах wg0 перейдите на вкладку Peers или выполните /interface wireguard peers add interface=wg0 public-key=»…» allowed-address=10.7.0.2/32
- Заполните Public Key (вставляется полностью, включая опциональные префиксы)
- Укажите Allowed Address в зависимости от топологии сети
- Если нужно, добавьте Endpoint и Persistent Keepalive
Важно: Если ваш MikroTik выступает в роли клиента и подключается к внешнему серверу, добавьте только один пир с Endpoint сервера и Allowed Address 0.0.0.0/0 (или маршруты конкретных сетей).
Назначение IP-адреса и маршрутизация
Чтобы интерфейс WireGuard мог передавать трафик, ему нужен IP-адрес. Задайте его в разделе IP -> Addresses. Например, 10.7.0.1/24, если это сервер, и позже клиенту дадите 10.7.0.2. Маска /24 позволяет добавить несколько клиентов в одной подсети. После назначения адреса маршрутизатор сможет пинговать туннельный IP клиента после установки туннеля.
При необходимости маршрутизации между локальными сетями через туннель, убедитесь, что в таблице маршрутизации есть соответствующие записи. Часто достаточно того, что Allowed Address клиента включает его локальную подсеть, и обратно серверная подсеть разрешена клиенту — роутер автоматически обработает маршруты. Если этого недостаточно, добавьте статический маршрут в IP -> Routes.
- Сервер: IP 10.7.0.1/24
- Клиент: IP 10.7.0.2/24 (в настройках самого клиента)
- Для site-to-site укажите в Allowed Address удалённую LAN-сеть
- Перейдите в IP -> Addresses, добавьте адрес интерфейсу wg0, например 10.7.0.1/24
- На клиентской стороне задайте IP из той же подсети, например 10.7.0.2/24
- Проверьте, что удалённые сети доступны через туннель, при необходимости добавьте статический маршрут
Настройка межсетевого экрана (Firewall)
По умолчанию MikroTik не пропускает трафик на интерфейсе WireGuard, поэтому нужно добавить правила в IP -> Firewall. Во-первых, разрешите входящие UDP-пакеты на порт WireGuard в цепочке input. Во-вторых, если требуется, чтобы клиенты могли обращаться к локальным ресурсам за роутером, разрешите forwarding между интерфейсом wg0 и внутренней сетью (например, bridge).
Пример правила для input: chain=input, protocol=udp, dst-port=51820, action=accept. Для доступа клиентов к локальной сети: chain=forward, in-interface=wg0, out-interface=bridge (или наоборот), action=accept. Если вы используете маршрутизацию в интернет через туннель, не забудьте про NAT: добавьте правило masquerade для трафика, выходящего из туннеля в WAN-интерфейс, или для клиентов, если сервер предоставляет им доступ в интернет.
- Разрешить UDP-порт 51820 на вход
- Разрешить forwarding между wg0 и локальной сетью
- При использовании туннеля для выхода в интернет клиентом — настроить srcnat/masquerade на серверном роутере
- В IP -> Firewall -> Filter Rules добавьте правило input: Chain=input, Protocol=udp, Dst. Port=51820, Action=accept
- Для доступа к локальной сети добавьте forward: Chain=forward, In. Interface=wg0, Out. Interface=bridge, Action=accept
- Если нужен NAT, добавьте в IP -> Firewall -> NAT правило: Chain=srcnat, Out. Interface=wan (или bridge), Action=masquerade
Важно: Порядок правил важен: разрешающие правила должны идти раньше блокирующих.
Проверка и диагностика соединения
После завершения настройки на клиентском устройстве импортируйте конфигурацию с публичным ключом сервера, Endpoint и Allowed Address. Запустите WireGuard и вернитесь в MikroTik. В свойствах пира (вкладка Peers) должен появиться статус Last Handshake и информация о переданных/полученных байтах. Если handshake не приходит, проверьте доступность порта, корректность ключей и правильность Endpoint.
Простейший тест — выполнить ping с MikroTik на туннельный IP клиента: /ping 10.7.0.2. Если ответа нет, но handshake установлен, возможно, проблема в firewall или Allowed Address. Убедитесь, что трафик, адресованный в подсеть 10.7.0.0/24, не блокируется. Для более детальной диагностики используйте лог (System -> Logging) с включенной темой wireguard.
- Handshake появился — туннель работает на уровне WireGuard
- Пинг есть — IP-связность настроена верно
- Трафик локальной сети проходит — маршрутизация и firewall корректны
- Проверьте вкладку Peers: поле Last Handshake отображает время последнего успешного рукопожатия
- Выполните ping с MikroTik на туннельный адрес клиента
- При отсутствии handshake проверьте firewall, правильность ключа и endpoint на клиенте
Важно: Не забывайте, что симметричный NAT на стороне клиента может требовать Persistent Keepalive.
Проверка результата
- Проверьте версию RouterOS — она должна быть 7.x
- Убедитесь, что порт Listen Port открыт в firewall и, если необходимо, проброшен через NAT
- Сравните публичные ключи на обеих сторонах
- Проверьте, что в Allowed Address указаны корректные IP-подсети
- Проверьте, что IP-адрес интерфейса wg0 не конфликтует с другими интерфейсами
Частые ошибки и нюансы
- Забывают разрешить UDP-порт в файрволе на входящем направлении
- Указывают неверный Endpoint или порт, не соответствующий настройкам удалённой стороны
- Не добавляют Persistent Keepalive для клиентов, находящихся за NAT, из-за чего туннель разрывается после периода неактивности
- Путают публичный и приватный ключи при добавлении пира
- Не указывают в Allowed Address IP-адрес клиента, из-за чего трафик отбрасывается
Проверить проблему WireGuard
Введите ошибку, симптом или часть конфигурации: handshake, AllowedIPs, DNS, MTU, Endpoint.
FAQ
Обязательно ли обновлять RouterOS до 7 версии для WireGuard?
Да, полноценная встроенная поддержка WireGuard появилась только в RouterOS 7. В более старых версиях можно использовать сторонние пакеты, но это не рекомендуется из-за сложностей и отсутствия гарантий стабильности.
Как сгенерировать ключи на MikroTik?
При создании интерфейса WireGuard ключи генерируются автоматически. В Winbox на вкладке WireGuard вы увидите поля Private Key и Public Key. Их можно скопировать или изменить вручную. В терминале ключи выводятся командой /interface wireguard print detail.
Что указать в поле Allowed Address?
В поле Allowed Address указывается список IP-адресов или подсетей, трафик от которых разрешён с этого пира, а также сети, которые маршрутизируются через пира. Для клиента обычно достаточно адреса самого устройства с маской /32 (например, 10.7.0.2/32), а для site-to-site — локальная подсеть за пиром (192.168.88.0/24).
Почему после настройки не появляется handshake?
Основные причины: несовпадение ключей, закрытый порт на стороне сервера, неверно указанный Endpoint, отсутствие корректного правила в firewall, блокировка провайдером UDP-трафика. Проверьте настройки на обеих сторонах и используйте логи для диагностики.
Можно ли использовать один интерфейс WireGuard для нескольких клиентов?
Да, достаточно создать несколько записей пиров на одном интерфейсе с разными публичными ключами и разными Allowed Address. Каждому клиенту нужно выдать уникальный IP из той же туннельной подсети.
Как настроить WireGuard, если у меня динамический IP?
Используйте Dynamic DNS на стороне сервера и указывайте доменное имя в Endpoint клиента. На сервере в пире клиента Endpoint можно оставить пустым — тогда инициировать соединение должен будет клиент.
Итог
WireGuard на MikroTik позволяет быстро развернуть безопасный и производительный VPN-туннель. Следуя этому руководству, вы можете настроить как простое клиент-серверное подключение, так и связь между несколькими офисами. Обратите внимание на корректность ключей и правил фаервола — это наиболее частые точки отказа. После успешной настройки регулярно проверяйте обновления RouterOS, чтобы использовать последние улучшения протокола.