EL-Script

General IT knowledge base

Как настроить WireGuard на MikroTik: подробное пошаговое руководство

Пошаговая инструкция по настройке WireGuard на MikroTik: создание интерфейса, генерация ключей, настройка пира и…

Коротко: настройка 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 генерируется автоматически, но можно вставить свой
  1. Откройте раздел Interfaces в Winbox или команду /interface wireguard в терминале
  2. Добавьте новый интерфейс командой /interface wireguard add name=wg0 listen-port=51820 или через графическое меню
  3. После создания перейдите на вкладку 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)
  1. В свойствах wg0 перейдите на вкладку Peers или выполните /interface wireguard peers add interface=wg0 public-key=»…» allowed-address=10.7.0.2/32
  2. Заполните Public Key (вставляется полностью, включая опциональные префиксы)
  3. Укажите Allowed Address в зависимости от топологии сети
  4. Если нужно, добавьте 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-сеть
  1. Перейдите в IP -> Addresses, добавьте адрес интерфейсу wg0, например 10.7.0.1/24
  2. На клиентской стороне задайте IP из той же подсети, например 10.7.0.2/24
  3. Проверьте, что удалённые сети доступны через туннель, при необходимости добавьте статический маршрут

Настройка межсетевого экрана (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 на серверном роутере
  1. В IP -> Firewall -> Filter Rules добавьте правило input: Chain=input, Protocol=udp, Dst. Port=51820, Action=accept
  2. Для доступа к локальной сети добавьте forward: Chain=forward, In. Interface=wg0, Out. Interface=bridge, Action=accept
  3. Если нужен 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 корректны
  1. Проверьте вкладку Peers: поле Last Handshake отображает время последнего успешного рукопожатия
  2. Выполните ping с MikroTik на туннельный адрес клиента
  3. При отсутствии 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-адрес клиента, из-за чего трафик отбрасывается
AI-инструмент

Проверить проблему 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, чтобы использовать последние улучшения протокола.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *