Настройка VPN WireGuard на MikroTik: пошаговое руководство для RouterOS 7

Полное руководство по настройке WireGuard на MikroTik: создание интерфейса, peer, маршрутизация по политике и Kill Switch в RouterOS 7.

Что такое WireGuard и зачем он нужен на MikroTik

WireGuard — это современный VPN-протокол с открытым исходным кодом, который работает поверх UDP. Его ключевая особенность — минималистичный код (несколько тысяч строк против десятков тысяч у OpenVPN), что упрощает аудит безопасности и повышает производительность. Протокол использует современную криптографию: Curve25519 для обмена ключами, ChaCha20 для шифрования и Poly1305 для аутентификации.

На маршрутизаторах MikroTik поддержка WireGuard появилась нативно в RouterOS версии 7. Это означает, что для работы не нужно устанавливать дополнительные пакеты, использовать контейнеры или собирать модули ядра — всё уже встроено в операционную систему. Это выгодно отличает WireGuard от OpenVPN или L2TP/IPsec, которые требуют больше ресурсов и сложнее в обслуживании на том же оборудовании.

Основной сценарий использования на MikroTik — защита трафика локальной сети. Роутер выступает клиентом VPN-провайдера (Proton VPN, Mullvad, NordVPN и других) и направляет трафик выбранных устройств через зашифрованный туннель. Альтернативный сценарий — объединение двух офисов в единую сеть (site-to-site), где каждая точка может быть одновременно и сервером, и клиентом, что позволяет строить mesh-топологии.

Простота настройки WireGuard достигается за счёт отсутствия сертификатов. Вместо них используются пары ключей: публичный и приватный. Каждая точка имеет уникальный приватный ключ, а для соединения стороны обмениваются публичными ключами. Это одновременно и плюс, и минус: нет инфраструктуры сертификатов, но и тонкого управления клиентами, как в OpenVPN, тоже нет. Например, WireGuard не умеет раздавать индивидуальные DNS-серверы или маршруты разным клиентам на одном сервере.

Проверка версии RouterOS и подготовка к установке

Прежде чем приступать к настройке, убедитесь, что ваш MikroTik работает на RouterOS версии 7 или новее. Проверить это просто: подключитесь к роутеру через Winbox и посмотрите версию в заголовке окна. Либо выполните команду /system resource print в терминале — строка version покажет актуальную сборку.

Если у вас установлена версия 6.x, WireGuard в меню не появится. В этом случае необходимо обновить операционную систему. Стандартный способ — через меню System → Packages → Check for Updates. Если автоматическое обновление не работает, загрузите файл с официального сайта MikroTik. Важно знать архитектуру процессора вашего устройства — она видна в заголовке Winbox (например, mipsbe, arm, arm64, tile). Скачайте соответствующий файл с расширением .npk, загрузите его в роутер через Files, затем перезагрузите устройство. После перезагрузки WireGuard появится в меню слева.

Перед началом настройки соберите все необходимые данные. Для сценария клиент-сервер (когда MikroTik подключается к VPN-провайдеру) вам понадобятся четыре параметра, которые обычно приходят в конфигурационном файле от провайдера:

  • Private Key — ваш приватный ключ, назначается интерфейсу MikroTik.
  • Public Key — публичный ключ удалённого сервера, используется для аутентификации peer.
  • Endpoint — IP-адрес или доменное имя сервера и UDP-порт (обычно 51820).
  • Allowed IPs — диапазон адресов, которым разрешён доступ через туннель (часто 0.0.0.0/0 для полного туннеля).

Для сценария site-to-site дополнительно нужно спланировать внутренние подсети обеих сторон и адреса туннельных интерфейсов. Рекомендуется заранее составить таблицу со всеми параметрами: имена точек, адреса, endpoint'ы, публичные ключи и разрешённые сети — это сильно упростит отладку, особенно если точек несколько.

Создание интерфейса WireGuard в Winbox

Первый шаг настройки — создание интерфейса WireGuard. Откройте Winbox, в левом меню выберите пункт WireGuard (он появился после обновления до RouterOS 7). В открывшемся окне нажмите кнопку + (плюс) для добавления нового интерфейса.

В поле Name задайте осмысленное имя, например, WG-Client. В поле Private Key вставьте приватный ключ, полученный от VPN-провайдера. Если вы настраиваете site-to-site соединение и ключа ещё нет, оставьте поле пустым — MikroTik сгенерирует его автоматически, и вы сможете скопировать соответствующий публичный ключ. Поле Port оставьте по умолчанию (13231) или укажите порт, который слушает удалённая сторона. Нажмите OK.

После создания интерфейса обратите внимание: MikroTik автоматически вывел публичный ключ в списке интерфейсов. Этот ключ нужно передать удалённой стороне — она добавит его как публичный ключ вашего peer.

Теперь назначьте IP-адрес туннельному интерфейсу. Перейдите в меню IP → Addresses, нажмите +. В поле Address введите адрес, который провайдер выделил для вашего туннеля, например, 10.66.66.2/32. Важно использовать именно /32, так как точка-клиент не должна маршрутизировать чужие адреса. В поле Interface выберите созданный интерфейс WireGuard (например, WG-Client). Нажмите OK.

Для сценария site-to-site адресация выглядит иначе: точка А получает адрес 10.10.10.1/24, точка Б — 10.10.11.1/24. Это разные подсети, и они нужны только для работы самого туннеля. Локальные сети (например, 192.168.100.0/24 и 192.168.200.0/24) остаются нетронутыми — связь между ними будет настроена позже через маршруты.

Настройка peer для подключения к серверу

Peer — это удалённая сторона, с которой устанавливается соединение. В интерфейсе WireGuard перейдите на вкладку Peers и нажмите +.

Заполните следующие поля:

  • Interface — выберите созданный ранее интерфейс (например, WG-Client).
  • Public Key — вставьте публичный ключ удалённого сервера (или другой точки MikroTik).
  • Endpoint Address — IP-адрес или доменное имя сервера.
  • Endpoint Port — UDP-порт, на котором сервер слушает входящие подключения (обычно 51820, но уточните у провайдера).
  • Allowed Address — список разрешённых адресов. Для полного туннеля укажите 0.0.0.0/0. Если нужно пропускать только определённые подсети, перечислите их через запятую, например, 10.10.11.1/32,192.168.200.0/24.
  • Persistent Keepalive — интервал отправки keepalive-пакетов в секундах. Рекомендуется установить значение 10, особенно если клиент находится за NAT или файрволом. Это гарантирует, что NAT-таблица не протухнет и соединение не оборвётся.

Поле Allowed Address важно понимать правильно: оно не маршрутизирует трафик само по себе. Оно лишь сообщает WireGuard, какие адреса принадлежат данному peer и должны быть доступны через туннель. Фактическая маршрутизация настраивается отдельно — через таблицу маршрутов или правила firewall.

Для сценария site-to-site настройка симметрична. На точке А в качестве Allowed Address указываются адреса точки Б: её туннельный адрес (10.10.11.1/32) и её локальная сеть (192.168.200.0/24). На точке Б — наоборот. Публичные ключи также меняются местами: точка А добавляет публичный ключ точки Б и наоборот. Endpoint — это реальный внешний IP-адрес или домен удалённой стороны.

Маршрутизация по политике (PBR): выбор устройств для VPN

Часто нет необходимости направлять через VPN весь трафик локальной сети. Достаточно выбрать конкретные устройства, например, рабочий ноутбук, которому нужен доступ к географически ограниченному сервису, или медиасервер, обрабатывающий чувствительные данные. Для этого используется маршрутизация по политике (Policy-Based Routing, PBR).

Механизм PBR в MikroTik состоит из двух частей: правила Mangle, которые маркируют пакеты, и отдельной таблицы маршрутизации, которая обрабатывает только маркированные пакеты.

Сначала создайте правило Mangle. Перейдите в IP → Firewall → Mangle, нажмите +. Заполните поля:

  • Chainprerouting. Это важно, так как пакеты должны быть обработаны до принятия решения о маршрутизации.
  • Src. Address — IP-адрес устройства в локальной сети, трафик которого нужно пустить через VPN. Например, 192.168.88.50.
  • Actionmark routing.
  • New Routing Mark — задайте имя метки, например, via-wireguard.
  • Pass Through — снимите галочку. Если оставить её включённой, последующие правила могут перезаписать метку, и туннель не будет работать.

Важное замечание: правило применяется ко всем пакетам от указанного источника, включая ответные. Это гарантирует, что весь диалог устройства с внешним миром пойдёт через туннель.

Если нужно направить через VPN несколько устройств, создайте отдельное правило Mangle для каждого из них. Для целой подсети можно указать диапазон в поле Src. Address, например, 192.168.88.0/28 — тогда через туннель пойдёт трафик всех устройств в этом диапазоне.

Настройка маршрутов и Kill Switch для защиты от утечек

После создания метки необходимо настроить таблицу маршрутизации. Перейдите в IP → Routes и нажмите +. Создайте маршрут со следующими параметрами:

  • Gateway — выберите интерфейс WireGuard (WG-Client).
  • Routing Table — укажите имя таблицы, совпадающее с меткой Mangle (via-wireguard).
  • Distance — значение 1 (чем меньше, тем приоритетнее маршрут).

Теперь добавьте второй маршрут в ту же таблицу (via-wireguard), который будет выполнять функцию Kill Switch. Kill Switch — это механизм защиты от утечек: если туннель WireGuard падает, трафик маркированных устройств не должен уходить напрямую через интернет-провайдера. Вместо этого он должен быть отброшен.

Для создания Kill Switch добавьте маршрут с параметрами:

  • Typeblackhole.
  • Routing Tablevia-wireguard.
  • Distance — значение больше, чем у основного маршрута, например, 10.

Как это работает: пока туннель активен, в таблице маршрутизации присутствует обычный маршрут с дистанцией 1, и весь маркированный трафик идёт через WireGuard. Если туннель падает, маршрут с дистанцией 1 автоматически удаляется из таблицы, и активируется blackhole-маршрут с дистанцией 10. Пакеты с меткой via-wireguard попадают в blackhole и тихо отбрасываются. В результате никаких утечек DNS, IP или нешифрованного трафика через WAN не происходит.

Критически важно соблюдать порядок дистанций: рабочий маршрут должен иметь меньшую дистанцию, чем blackhole. Если перепутать местами, blackhole станет основным маршрутом, и туннелированный трафик пропадёт, даже когда туннель полностью исправен.

Настройка файрвола и правил для входящего трафика

Для корректной работы WireGuard необходимо открыть порт, который слушает интерфейс, во входящем трафике. Это актуально как для сценария клиент-сервер, где MikroTik должен принимать ответные пакеты от VPN-сервера, так и для site-to-site, где роутер ожидает входящие подключения от удалённой точки.

Перейдите в IP → Firewall → Filter Rules. Добавьте новое правило с параметрами:

  • Chaininput.
  • Protocoludp.
  • Dst. Port — порт, который слушает интерфейс WireGuard (обычно 13231 или 51820).
  • In. Interface — выберите интерфейс WAN (или список интерфейсов WAN, если он создан).
  • Actionaccept.
  • Comment — добавьте пояснение, например, WireGuard WG-Client.

Важно не открывать порт на всех интерфейсах без ограничений. Ограничение по In. Interface гарантирует, что правило применится только к трафику, приходящему из интернета, а не из локальной сети. Список интерфейсов WAN создаётся по умолчанию в RouterOS, но если его нет, создайте вручную через Interfaces → Interface Lists и добавьте туда ваш WAN-интерфейс.

Если правило файрвола отсутствует или настроено неверно, peer будет показывать нулевые счётчики трафика, и соединение не установится. Это одна из самых частых ошибок при настройке.

Дополнительно стоит проверить, нет ли в вашем файрволе общих правил, которые блокируют весь входящий UDP-трафик. Если такие правила стоят выше правила accept для WireGuard, они перекроют доступ. Порядок правил в MikroTik имеет значение: правила проверяются сверху вниз, и первое совпавшее правило определяет действие.

Site-to-site соединение: объединение двух офисов

Один из самых частых сценариев использования WireGuard на MikroTik — объединение двух офисов в единую локальную сеть. Рассмотрим его на конкретном примере.

Пусть офис А имеет внешний адрес 111.111.111.111 и локальную сеть 192.168.100.0/24. Офис Б имеет внешний адрес 222.222.222.222 и локальную сеть 192.168.200.0/24. Задача — сделать так, чтобы устройства из сети офиса А могли обращаться к устройствам в сети офиса Б и наоборот, как будто они находятся в одной сети.

Для этого на каждой точке создаётся интерфейс WireGuard. На точке А интерфейс получает адрес 10.10.10.1/24, на точке Б — 10.10.11.1/24. Это внутренние адреса туннеля, они не должны пересекаться с локальными сетями.

Далее на точке А создаётся peer со следующими параметрами:

  • Public Key — публичный ключ точки Б.
  • Endpoint222.222.222.222, порт 13231.
  • Allowed Address10.10.11.1/32,192.168.200.0/24.

На точке Б параметры зеркальны:

  • Public Key — публичный ключ точки А.
  • Endpoint111.111.111.111, порт 13231.
  • Allowed Address10.10.10.1/32,192.168.100.0/24.

После создания peer необходимо добавить маршруты. На точке А нужно создать маршрут к сети 192.168.200.0/24 с gateway — интерфейсом WireGuard. На точке Б — маршрут к сети 192.168.100.0/24 аналогичным образом. В RouterOS 7 маршрут можно добавить через IP → Routes, указав Dst. Address — удалённую подсеть, а Gateway — интерфейс WireGuard.

Скрипт для автоматизации этого процесса доступен в статье на Habr. Он создаёт адреса, правила файрвола, peer и маршруты на обеих точках. При использовании скрипта достаточно заполнить переменные в начале и запустить его поочерёдно на каждом роутере, указав, какая точка настраивается — А или Б.

Проверка работы туннеля и диагностика неисправностей

После завершения настройки необходимо убедиться, что туннель работает корректно. Самый простой способ — зайти с устройства, которое направлено через VPN, на сайт типа ifconfig.me или 2ip.ru. Если туннель активен, сайт покажет IP-адрес VPN-сервера, а не вашего интернет-провайдера.

Более технически точный способ — проверить состояние peer в Winbox. Перейдите в WireGuard → Peers. У работающего peer должны быть видны счётчики байт RX и TX, которые увеличиваются по мере генерации трафика. Если счётчики остаются на нуле, соединение не установлено.

Самые частые причины неработающего туннеля:

  1. Неверный endpoint port — проверьте, что порт в настройках peer совпадает с портом, который слушает удалённая сторона.
  2. Файрвол блокирует исходящий UDP — убедитесь, что на WAN-интерфейсе нет правил, блокирующих UDP-трафик на нужный порт.
  3. Неправильный публичный ключ — сверьте ключи, переданные сторонами друг другу. Ошибка даже в одном символе приведёт к невозможности установить соединение.
  4. Отсутствует маршрут — проверьте таблицу маршрутов. Если маршрут к удалённой подсети отсутствует, пакеты не пойдут через туннель.
  5. Некорректный Allowed Address — если в Allowed Address указан не тот диапазон, WireGuard будет игнорировать пакеты для других подсетей.

Ещё одна особенность WireGuard: протокол не пытается агрессивно повторять рукопожатия, когда endpoint недоступен. Если VPN-провайдер ротирует серверы или меняет их IP-адреса, соединение может не восстановиться автоматически. В этом случае нужно обновить endpoint в настройках peer. Для домашних и офисных соединений с динамическими IP-адресами рекомендуется использовать DDNS и указывать в качестве endpoint доменное имя, а не IP.

Также обратите внимание на параметр Persistent Keepalive. Если он не задан (равен 0), WireGuard не будет отправлять keepalive-пакеты, и соединение за NAT может разорваться через несколько минут простоя. Рекомендуемое значение — 10–25 секунд.

WireGuard против OpenVPN: что выбрать для MikroTik

Выбор между WireGuard и OpenVPN зависит от конкретной задачи. Оба протокола поддерживаются MikroTik, но имеют принципиально разные характеристики.

Производительность. WireGuard заметно быстрее OpenVPN на том же оборудовании. Это связано с тем, что код WireGuard занимает всего несколько тысяч строк, а используемые криптографические примитивы (ChaCha20, Poly1305, Curve25519) отлично оптимизированы для современных процессоров. На слабых устройствах MikroTik разница в скорости может достигать двукратной величины.

Простота настройки. WireGuard не требует создания и управления сертификатами. Для установления соединения достаточно обменяться публичными ключами. OpenVPN, напротив, предполагает наличие инфраструктуры PKI: корневого сертификата, сертификатов сервера и клиентов. Это добавляет сложности в обслуживании, особенно если клиентов много.

Гибкость. OpenVPN позволяет более тонко управлять клиентами: раздавать индивидуальные маршруты, DNS-серверы, настраивать политики доступа для каждого клиента отдельно. WireGuard не умеет этого из коробки — все клиенты на сервере получают одинаковые параметры.

Модель соединений. WireGuard использует одноранговую модель (peer-to-peer), где каждая точка может быть и сервером, и клиентом. Это удобно для построения mesh-сетей. OpenVPN работает по классической схеме клиент-сервер.

Особенности MikroTik. Для WireGuard на MikroTik маршруты для каждой подсети нужно настраивать вручную. Для Windows-клиентов маршруты определяются автоматически на основе Allowed Address. Этот нюанс часто вызывает путаницу у администраторов, привыкших к другим реализациям WireGuard.

Практический вывод: для связи аппаратных роутеров между собой (site-to-site) и для клиентских подключений, где важна скорость, лучше выбрать WireGuard. Для внешних пользователей, которым нужен индивидуальный доступ к ресурсам, может быть удобнее OpenVPN. В любом случае WireGuard настраивается быстрее и работает стабильнее — принцип «настроил и забыл» здесь работает лучше всего.

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

На каких версиях RouterOS работает WireGuard?

WireGuard доступен нативно начиная с RouterOS версии 7. В версиях 6.x поддержки нет, поэтому для использования протокола необходимо обновить операционную систему. Проверить версию можно через Winbox (заголовок окна) или командой /system resource print в терминале.

Чем WireGuard отличается от OpenVPN на MikroTik?

WireGuard быстрее, проще в настройке (не требует сертификатов) и использует одноранговую модель соединений. OpenVPN даёт больше гибкости: можно индивидуально раздавать маршруты и DNS клиентам. Для связи роутеров между собой обычно выбирают WireGuard, а для внешних клиентов с индивидуальными настройками — OpenVPN.

Что такое Kill Switch и зачем он нужен?

Kill Switch — это механизм защиты от утечек трафика. Если туннель WireGuard падает, маршрут через него исчезает, и пакеты могут уйти напрямую через интернет-провайдера. Чтобы этого избежать, в таблицу маршрутизации добавляется blackhole-маршрут с большей дистанцией. Когда туннель недоступен, blackhole активируется и отбрасывает трафик, не выпуская его в открытый интернет.

Как направить через VPN только определённые устройства в локальной сети?

Используйте маршрутизацию по политике (PBR). Создайте правило в IP → Firewall → Mangle с Chain prerouting, укажите Src. Address устройства и Action mark routing с уникальной меткой (например, via-wireguard). Затем добавьте маршрут в таблицу с этой меткой через интерфейс WireGuard. Все пакеты от указанного устройства будут идти через VPN.

Почему peer в WireGuard показывает нулевые счётчики трафика?

Это значит, что соединение не установлено. Частые причины: неверный endpoint port, файрвол блокирует исходящий UDP на WAN, неправильный публичный ключ peer, отсутствует маршрут к удалённой подсети или некорректный Allowed Address. Проверьте эти параметры по порядку, начиная с файрвола.

Как настроить WireGuard для объединения двух офисов?

Создайте интерфейс WireGuard на каждом роутере и назначьте туннельные адреса из разных подсетей (например, 10.10.10.1/24 и 10.10.11.1/24). Добавьте peer на каждой стороне: укажите публичный ключ удалённого роутера, его внешний адрес и порт, а в Allowed Address — туннельный адрес и локальную подсеть удалённой стороны. Затем добавьте маршруты к удалённым локальным сетям через интерфейс WireGuard.

Нужно ли открывать порт в файрволе MikroTik для WireGuard?

Да, если роутер должен принимать входящие подключения. Добавьте правило в IP → Firewall → Filter Rules: Chain input, Protocol udp, Dst. Port — порт интерфейса WireGuard, In. Interface — ваш WAN. Действие — accept. Без этого правила удалённая сторона не сможет установить соединение.