Настройка WireGuard на MikroTik и VPS

19 мин. чтения   /  Статьи
Data center corridor with green lighting and rows of server racks visible along the wall

WireGuard — это современный протокол VPN, который встроен в MikroTik начиная с RouterOS 7 и позволяет за несколько минут развернуть зашифрованный туннель между роутером и сервером. 

В этой статье разберемся, как настроить WireGuard на MikroTik и VPS Servercore: поднимем базовый туннель, а затем покажем, как использовать его для удаленного доступа, выхода в интернет и объединения офисов через Site-to-Site VPN.

В отличие от OpenVPN и IPsec, WireGuard обычно работает быстрее и создает меньшую нагрузку на процессор роутера — это особенно заметно на бюджетных моделях MikroTik. Настройка тоже проще: вместо согласования множества параметров шифрования стороны просто обмениваются ключами.

Что такое WireGuard и зачем использовать его на MikroTik

WireGuard поднимает VPN Tunnel поверх протокола UDP. Чтобы стороны узнали друг друга, каждая генерирует пару ключей — Private Key и Public Key — и обменивается публичными ключами с собеседником. После этого весь трафик между точками идет в зашифрованном виде.

WireGuard на MikroTik подходит лучше всего в нескольких сценариях:

  • Remote Access VPN — удаленный доступ сотрудников к корпоративной сети.
  • MikroTik — VPS — выход в интернет через арендованный сервер с белым IP.
  • Site-to-Site VPN — объединение сетей нескольких офисов в одну.

Какие версии RouterOS поддерживают WireGuard

Нативная поддержка WireGuard появилась только в RouterOS 7. На RouterOS 6 настроить туннель штатными средствами нельзя — здесь нет интерфейса WireGuard.

Если у вас RouterOS 6, есть два пути: обновить прошивку до 7-й ветки (это бесплатно, если модель поддерживается) либо использовать другой протокол — например, IPsec или OpenVPN. На версии RouterOS 6 WireGuard работать не будет, нужна v7.

Что потребуется перед настройкой WireGuard

Требования к оборудованию

Подойдет любой роутер MikroTik с RouterOS 7 на борту — от компактного hAP ax³ до производительных RB4011, RB5009 и CCR2004. Чем мощнее процессор, тем выше потолок скорости туннеля, но даже младшие модели на ARM справляются с WireGuard заметно легче, чем с OpenVPN.

Для управления роутером можно использовать WinBox (графическая утилита), WebFig (веб-интерфейс) или CLI (командную строку через терминал или SSH). В статье мы будем приводить команды для CLI — их удобно копировать. Те же действия доступны и через WinBox: раздел Interfaces → WireGuard.

Какие данные понадобятся для настройки VPN

Перед началом подготовьте:

  • Публичный IP-адрес сервера (внешний IP), к которому будет подключаться роутер.
  • Endpoint — связка «внешний IP : UDP-порт» сервера.
  • Public Key и Private Key — пары ключей для каждой стороны.
  • Allowed IPs — список адресов и подсетей, которые разрешено пускать в туннель.
  • UDP-порт (Listen Port), на котором сервер будет принимать подключения.

Когда стоит использовать VPS вместо второго роутера

Если на обеих точках стоят роутеры MikroTik с белым IP — проще соединить их напрямую (Site-to-Site VPN). Но если вам нужен выход в интернет через сторонний IP, доступ к облачной инфраструктуре или у офисов нет белых адресов, удобнее держать постоянно доступный сервер — VPS с белым статическим IP. Он всегда онлайн и доступен извне.

Схемы подключения WireGuard на MikroTik

Существует три вида соединений:

  • MikroTik — MikroTik. Прямой туннель между двумя роутерами. Нужен белый IP хотя бы на одной стороне.
  • MikroTik — VPS. Роутер подключается к серверу с белым IP. Самый универсальный вариант — его и разберем подробно.
  • MikroTik — домашний сервер. То же, что и с VPS, но конечная точка — машина в домашней или офисной сети (понадобится проброс UDP-порта на роутере).

Настройка WireGuard между MikroTik и VPS Servercore

Разобьем настройку на этапы: сначала готовим сервер, затем — роутер, после чего проверяем связь.

В примерах используем такую адресацию:

  • Туннельная сеть: 10.10.0.0/24 (VPS — 10.10.0.1, MikroTik — 10.10.0.2)
  • Белый IP VPS (Endpoint): 203.0.113.10
  • UDP-порт: 51820
  • Локальная сеть офиса: 192.168.10.0/24
Облачные серверы Servercore

Белый IP, SSH-доступ и запуск за минуты

Узнать больше

Этап 1. Настройка сервера (VPS на Servercore)

Шаг 1 — Создание VPS и выбор ОС. Создайте виртуальную машину в панели Servercore с белым статическим IP. В качестве ОС подойдет любой из распространенных дистрибутивов Linux — Ubuntu, Debian или CentOS; команды ниже даны для Ubuntu/Debian, для CentOS отличается только пакетный менеджер (dnf вместо apt).

Для поднятия сервера после регистрации в Servercore и пополнения счета зайдите на главную страницу.

Dashboard with a card titled 'My First Project' and a dashed 'Create resource' tile with a plus sign

Создайте ресурс — нажмите на кнопку и выберите облачный сервер во всплывшем меню:

Панель управления проектом: карточки ресурсов и выпадающее меню с продуктами (Выделенный сервер, Облачный сервер, S3 бакет, База данных, Kubernetes, Доменная зона)

Вы попадете в окно настройки. Для примера мы покажем те параметры, на которых поднял свой сервер наш главред:

Страница создания нового сервера: поля имени и локации, выбран образ Ubuntu и авто‑очистка образа включены; видны варианты ОС (Ubuntu, Debian, Windows, CentOS) и версия Ubuntu 22.04 LTS с GPU‑оптимизацией.
Страница конфигурации сервера: выбор CPU, RAM и дисков; включены вкладки Standard, GPU, Shared и др.

Разбираемся в параметрах:

  • Имя присваивается автоматически.
  • ОС — Ubuntu версии 22.04, как самая стабильная из последних на момент написания статьи.
  • Конфигурация — хватит минимума из всего, что доступно: 1 vcpu, 2гб ram, 10гб ssd. Можно сделать еще дешевле, если выбрать hdd-хранилище, но тогда велик шанс «тормозов»
  • Публичная подсеть — дороже, но не нужно настраивать вручную. Если готовы углубиться в нюансы настройки, берите приватную. 

Далее у нас остаются «Безопасность», «Доступ» и «Дополнительные настройки» и «Автоматизация». 

Безопасность, дополнительные настройки и автоматизация — это для продвинутых пользователей, перед которыми стоят в разы более сложные задачи, чем поднятие своего сервера, эти настройки не трогаем.

А вот для доступа нам понадобится вбить SSH-ключ и обязательно сохранить пароль, который уже сгенерировала нам система.

Чтобы получить SSH-ключ, нужно его сгенерировать. Для этого:

  • Открыть Powershell от имени администратора
  • Вбить команду ssh-keygen -t ed25519 
  • Нажимать enter, пока в терминале не начнет появляться строка вида С:\Users\*имя пользователя* 

После генерации найдите файл C:\Users\Имя_Пользователя\.ssh\id_ed25519.pub. Откройте этот файл блокнотом, там вы увидите одну строку символов. Скопируйте ее.

После этого:

  • Вернитесь во вкладку с панелью Servercore.
  • Кликните по окну «Выберите ключ»
  • В открывшемся подменю нажмите «Добавить SSH-ключ»
Раздел Доступ: выпадающий список SSH-ключ с надписью Выберите ключ; в списке — Без SSH-ключа и Добавить SSH-ключ

Откроется новое окно. Вставьте туда ключ и нажмите «добавить».

Модальное окно: новый SSH-ключ. Ввод имени «Claire», поле для публичного ключа и подсказка с командой ssh-keygen -t ed25519; кнопки Отменить и Добавить.

После этого нажимайте «Создать сервер». Сервер готов.

Шаг 2 — Установка WireGuard на сервер и создание ключей. Подключитесь к серверу по SSH и установите пакет:

apt update && apt install -y wireguard

Создайте пару ключей для сервера командами:

wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key

Содержимое server_private.key пойдет в конфиг сервера, а server_public.key нужно будет указать на MikroTik. Ключи клиента (MikroTik) сгенерируете позже на самом роутере — приватный ключ роутера сервер знать не должен.

Шаг 3 — Настройка конфигурационного файла сервера. Создайте файл /etc/wireguard/wg0.conf:

[Interface]
# Внутренний IP сервера в туннеле
Address = 10.10.0.1/24
# Listen port — UDP-порт, на котором сервер принимает подключения
ListenPort = 51820
PrivateKey = <приватный_ключ_сервера>
[Peer]
# Публичный ключ MikroTik (получим на следующем этапе)
PublicKey = <публичный_ключ_mikrotik>
# Разрешенные адреса со стороны клиента
AllowedIPs = 10.10.0.2/32

Раздел [Peer] можно дописать позже, когда сгенерируете ключ на роутере. Если планируете подключать несколько роутеров — добавьте отдельный блок [Peer] на каждого, с уникальным внутренним IP в Allowed IPs. Новый интерфейс под каждый роутер создавать не нужно.

Запускаем интерфейс и добавляем в автозагрузку:

systemctl enable --now wg-quick@wg0

Шаг 4 — Открытие UDP-порта в Firewall. Чтобы роутер смог «достучаться» до сервера, нужно разрешить входящий трафик на UDP-порт. Если на VPS используется ufw:

ufw allow 51820/udp

Если фаервол управляется через iptables напрямую:

iptables -A INPUT -p udp --dport 51820 -j ACCEPT

В целях безопасности порт по умолчанию (51820) лучше сменить на нестандартный из диапазона 1024–65535 — это снижает число попыток сканирования со стороны ботов. Если меняете порт — поменяйте его одновременно в ListenPort, в правиле фаервола и в настройках Endpoint на роутере.

Этап 2. Настройка MikroTik (RouterOS WireGuard)

Все команды выполняются в терминале роутера (CLI). Те же шаги доступны через WinBox в разделе Interfaces → WireGuard.

Создайте интерфейс WireGuard следующими командами:

/interface/wireguard
add name=wg-inet listen-port=51820
/interface/wireguard print

Скопируйте значение public-key роутера и впишите его в раздел [Peer] на сервере (поле PublicKey), после чего перезапустите сервер: systemctl restart wg-quick@wg0.

Назначьте внутренний IP-адрес интерфейсу

/ip/address
add address=10.10.0.2/24 interface=wg-inet

Добавьте Peer (сервер)

Routeros
/interface/wireguard/peers
add interface=wg-inet \
   public-key="<публичный_ключ_сервера>" \
   endpoint-address=203.0.113.10 \
   endpoint-port=51820 \
   allowed-address=10.10.0.0/24 \
   persistent-keepalive=25s

Разберем поля:

  • public-key — публичный ключ сервера (из server_public.key).
  • endpoint-address и endpoint-port — внешний IP и UDP-порт VPS.
  • allowed-address — какие адреса принимать и отправлять через туннель. Для базовой связи достаточно туннельной подсети 10.10.0.0/24; для выхода в интернет здесь будет 0.0.0.0/0 (см. ниже).
  • persistent-keepalive=25s — роутер шлет пакет каждые 25 секунд, чтобы туннель не разрывался за NAT провайдера. Для клиента с серым IP это обязательно.

Серый IP на роутере — не проблема. Если MikroTik подключается как клиент (инициатор), белый IP ему не нужен. Главное, чтобы белый статический IP был у VPS. Поэтому Endpoint указывается только в сторону сервера.

Этап 3. Проверка соединения

Проверьте, что туннель поднялся:

/interface/wireguard/peers print

Если в выводе появилось значение last-handshake (например, несколько секунд назад) — Handshake состоялся, ключи и Endpoint указаны верно. 

Теперь проверьте связь пингом до внутреннего адреса сервера:

/ping 10.10.0.1

Пакеты идут — базовый туннель работает. Дальше настроим, что именно через него пойдет.

Настройка удаленного доступа через WireGuard

Это сценарий Remote Access VPN: сотрудники или сам офис получают доступ к ресурсам за VPS — файловым серверам, CRM, внутренним сервисам.

Технически это означает: научить роутер отправлять трафик до нужной подсети через туннель. Допустим, за сервером доступна сеть 172.16.0.0/24 с внутренними сервисами. Пропишите Static Route:

/ip/route
add dst-address=172.16.0.0/24 gateway=wg-inet

И расширьте allowed-address у пира, чтобы туннель пропускал эту подсеть:

/interface/wireguard/peers
set find interface=wg-inet allowed-address=10.10.0.0/24,172.16.0.0/24

После этого устройства в офисе 192.168.10.0/24 смогут обращаться к ресурсам за VPS. Доступ к файловому серверу, CRM или любому внутреннему сервису — это один и тот же маршрут, меняется только адрес назначения.

Важно. Чтобы трафик из офисной сети уходил в туннель, на сервере должен быть включен форвардинг (net.ipv4.ip_forward=1) и при необходимости настроен маршрут обратно в сеть 192.168.10.0/24. Это пересекается с настройкой NAT — см. блок ниже.

Облачные серверы Servercore

Гибкое масштабирование под любое число сотрудников

Узнать больше

Настройка выхода в интернет через WireGuard

Здесь весь интернет-трафик офиса пойдет через VPS — это полная маршрутизация (full tunnel). Альтернатива — Split Tunnel, когда через VPN идет только часть трафика (ее мы по сути уже описали выше: маршрут только к нужным подсетям).

Шаг 1. Настройка NAT на сервере

Чтобы сервер выпускал трафик клиентов в интернет от своего имени, включите форвардинг и NAT (masquerade). В конфиг /etc/wireguard/wg0.conf добавляем в раздел [Interface]:

PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Перезапустите интерфейс на сервере:

Bash
systemctl restart wg-quick@wg0

Шаг 2. Смена Default Route на MikroTik

Сначала расширьте allowed-address у пира до всего трафика:

/interface/wireguard/peers
set find interface=wg-inet allowed-address=0.0.0.0/0

Теперь важнейший нюанс, без которого вы оборвете себе соединение. Когда мы поднимем нулевой маршрут (default route) в туннель, роутер попытается отправить через туннель в том числе и пакеты до самого VPS — а они должны идти через обычного провайдера. Получится петля, и туннель развалится.

Поэтому сначала прописываем отдельный маршрут до IP-адреса VPS через основного провайдера, и только потом меняем default route:

# 1. Маршрут до самого VPS — строго через старый шлюз провайдера
/ip/route
add dst-address=203.0.113.10/32 gateway=<IP_шлюза_провайдера>
# 2. Только теперь заворачиваем весь трафик в туннель
/ip/route
add dst-address=0.0.0.0/0 gateway=wg-inet

После этого внешний IP офиса при проверке (например, через сервис «мой IP») должен показать адрес VPS. Так WireGuard работает как основной канал доступа в интернет.

Настройка Site-to-Site VPN через WireGuard

Site-to-Site VPN (WireGuard STS) объединяет сети двух филиалов напрямую — без VPS. Здесь оба пира — роутеры MikroTik, и настраиваются они немного иначе, чем связка с сервером: явного деления на «клиент» и «сервер» нет, точки равноправны. Достаточно, чтобы белый IP был хотя бы у одной из них (вторая подключается как инициатор).

Адресация для примера:

  • Офис A: LAN 192.168.10.0/24, туннельный IP 10.10.0.2, белый IP 203.0.113.10
  • Офис B: LAN 192.168.20.0/24, туннельный IP 10.10.0.3

На роутере офиса A (с белым IP) создайте интерфейс и пир для офиса B:

/interface/wireguard
add name=wg-sts listen-port=51820
/ip/address
add address=10.10.0.2/24 interface=wg-sts
/interface/wireguard/peers
add interface=wg-sts \
   public-key="<публичный_ключ_офиса_B>" \
   allowed-address=10.10.0.3/32,192.168.20.0/24

На роутере офиса B — зеркально, но с указанием Endpoint в сторону офиса A:

/interface/wireguard
add name=wg-sts listen-port=51820
/ip/address
add address=10.10.0.3/24 interface=wg-sts
/interface/wireguard/peers
add interface=wg-sts \
   public-key="<публичный_ключ_офиса_A>" \
   endpoint-address=203.0.113.10 \
   endpoint-port=51820 \
   allowed-address=10.10.0.2/32,192.168.10.0/24 \
   persistent-keepalive=25s

Маршруты между подсетями

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

Routeros
# На роутере офиса A — маршрут к сети офиса B
/ip/route
add dst-address=192.168.20.0/24 gateway=wg-sts
# На роутере офиса B — маршрут к сети офиса A
/ip/route
add dst-address=192.168.10.0/24 gateway=wg-sts

NAT

Для прямого доступа между офисами NAT не нужен — наоборот, трафик между LAN должен ходить «как есть». Если же на роутере включен общий masquerade на туннельный интерфейс, он сломает обращение к удаленной сети. Убедитесь, что в правилах srcnat есть исключение для трафика между офисными подсетями.

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

С устройства в офисе A пингуем адрес в сети офиса B:

/ping 192.168.20.1

Пакеты идут — филиалы объединены.

Выделенные серверы Servercore

Все ресурсы сервера — только для вашего офиса

Узнать больше

Настройка Firewall для WireGuard

Безопасность туннеля держится на открытом UDP-порте и ограничении доступа к самому VPN.

Разрешение UDP-порта. На стороне, принимающей подключения, в /ip firewall filter должно быть правило, пропускающее входящий UDP на порт WireGuard:

/ip/firewall/filter
add chain=input protocol=udp dst-port=51820 action=accept \
   comment="Allow WireGuard"

Ограничение доступа. Чтобы к порту не стучался кто попало, можно сузить правило по src-address — разрешить подключение только с известных IP (если у удаленной стороны белый статический адрес):

Routeros
/ip/firewall/filter
add chain=input protocol=udp dst-port=51820 src-address=203.0.113.10 \
   action=accept comment="Allow WireGuard from known peer"

Защита от несанкционированных подключений обеспечивается самим протоколом: без правильного публичного ключа Handshake не состоится, даже если порт открыт. Это базовая защита WireGuard «из коробки».

Как проверить работу WireGuard на MikroTik

Если что-то не заводится, диагностику проведите по цепочке: 

  • сначала Handshake, 
  • потом маршруты, 
  • потом сам трафик.

Проверка Handshake. Команда /interface/wireguard/peers print показывает поле last-handshake. Свежее значение — туннель установлен. Если в ответе или значение старое — связи нет.

Проверка маршрутов. /ip/route print — убедитесь, что маршруты к нужным подсетям ведут через интерфейс WireGuard, а маршрут до самого Endpoint (для сценария «выход в интернет») идет через провайдера.

Проверка передачи трафика. В выводе peers print смотрите счетчики rx/tx — если они растут, данные ходят.

Диагностика через Ping и Traceroute:

/ping 10.10.0.1
/tool/traceroute 10.10.0.1

Если нет Handshake

Скорее всего, вы столкнулись с одной из следующих проблем:

  • Закрыт UDP-порт на сервере (или в облачном Security Group провайдера).
  • Неверный Endpoint (IP или порт) на стороне клиента.
  • Перепутаны ключи — на сервере должен стоять публичный ключ клиента, на клиенте — публичный ключ сервера.
  • Серый IP с обеих сторон и нет persistent-keepalive.

Handshake есть, трафик не идет

Скорее всего, проблемы следующие:

  • Не прописаны маршруты к целевой подсети.
  • Узкий allowed-address — нужная подсеть в него не входит.
  • Не настроен NAT/форвардинг на сервере (для выхода в интернет).

Также дело может быть в высоком MTU. Частая причина: туннель поднят, пинг идет, а сайты не открываются. WireGuard добавляет к каждому пакету служебные данные, и при стандартном MTU пакеты начинают фрагментироваться. 

Снижение MTU на интерфейсе обычно решает проблему. Попробуйте такую команду:

/interface/wireguard
set wg-inet mtu=1420

Часто задаваемые вопросы

Работает ли WireGuard на RouterOS 6?

Нет. Нативная поддержка появилась только в RouterOS 7. На версии RouterOS 6 нужно либо обновить прошивку до 7-й ветки, либо использовать другой протокол (IPsec, OpenVPN).

Какой UDP-порт использует WireGuard?

По умолчанию — 51820 UDP. Можно задать любой свободный порт в диапазоне 1024–65535. Для снижения числа сканирований ботами рекомендуется нестандартный порт.

Можно ли подключить несколько MikroTik к одному серверу?

Да. Новый интерфейс на сервере создавать не нужно — достаточно добавить еще один блок Peer с публичным ключом второго роутера и уникальным внутренним IP в Allowed IPs.

Что лучше выбрать — WireGuard или IPsec?

WireGuard настраивается проще и быстрее: вместо согласования фаз шифрования стороны обмениваются ключами. IPsec гибче в сложных корпоративных сценариях и лучше поддерживается сторонним оборудованием, но для связки MikroTik—VPS WireGuard обычно удобнее.

Подходит ли WireGuard для Site-to-Site VPN?

Да, это один из основных сценариев. Два роутера соединяются напрямую, маршруты между подсетями прописываются статически.

Можно ли использовать WireGuard для удаленной работы?

Да. Это Remote Access VPN: сотрудники подключаются к корпоративной сети и получают доступ к внутренним сервисам — CRM, файловым серверам и т.д.

Как посмотреть статус подключения?

Команда /interface/wireguard/peers print — поле last-handshake и счетчики rx/tx. В WinBox то же видно в Interfaces → WireGuard → Peers.

Почему WireGuard считается быстрее OpenVPN?

WireGuard обрабатывает трафик на уровне ядра системы и использует более компактный и современный механизм шифрования. На практике это значит более высокую скорость и заметно меньшую нагрузку на процессор роутера — что критично для бюджетных моделей MikroTik.

Заключение

Чтобы настроить WireGuard на MikroTik и VPS, нужно поднять туннель (ключи, интерфейс, пир), проверить Handshake, а затем настроить маршрутизацию под свою задачу — удаленный доступ, выход в интернет через VPS или объединение офисов через Site-to-Site VPN. Один туннель закрывает все три сценария, меняются только маршруты и allowed-address. После проверки конфигурации экспертом вы получите быстрый и стабильный VPN-канал с минимальной нагрузкой на роутер.

Начните пользоваться продуктами Servercore сейчас
Регистрация в панели управления займет несколько минут. Уже есть аккаунт? Авторизуйтесь.