WireGuard — это современный протокол VPN, который встроен в MikroTik начиная с RouterOS 7 и позволяет за несколько минут поднять зашифрованный туннель между роутером и сервером.
В отличие от OpenVPN и IPsec, WireGuard работает быстрее и создает меньшую нагрузку на процессор роутера — это особенно заметно на бюджетных моделях MikroTik. Настройка тоже проще: вместо согласования множества параметров шифрования стороны просто обмениваются ключами.
В этой статье разберемся, как настроить WireGuard на MikroTik и VPS Servercore: поднимем базовый туннель, а затем покажем, как использовать его для удаленного доступа, выхода в интернет и объединения офисов через Site-to-Site VPN.
Что такое 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.
Этап 1. Настройка сервера (VPS на Servercore)
Шаг 1 — Создание VPS и выбор ОС. Создайте виртуальную машину в панели управления Servercore со статическим IP. В качестве ОС подойдет любой из распространенных дистрибутивов Linux: Ubuntu, Debian или CentOS. Команды ниже даны для Ubuntu/Debian, для CentOS отличается только пакетный менеджер (dnf вместо apt).
Для поднятия сервера после регистрации в Servercore и пополнения счета зайдите на главную страницу.
Создайте ресурс — нажмите на кнопку и выберите облачный сервер во всплывшем меню:
Вы попадете в окно настройки параметров сервера.
Разбираемся в параметрах:
- Имя присваивается автоматически;
- ОС — Ubuntu версии 22.04;
- Конфигурация — хватит минимума из всего, что доступно: 1 vCPU, 2 ГБ RAM, 10 ГБ SSD;
- Публичная подсеть — дороже, но не нужно настраивать вручную. Если готовы углубиться в нюансы настройки, выбирайте приватную.
Разделы «Безопасность», «Дополнительные настройки» и «Автоматизация» можно оставить без изменений.
В разделе «Доступ» необходимо добавить SSH-ключ и обязательно сохранить пароль, который уже сгенерировала нам система.
Чтобы получить SSH-ключ, нужно его сгенерировать. Для этого необходимо:
- Открыть Powershell от имени администратора;
- Ввести команду ssh-keygen -t ed25519;
- Нажимать enter, пока в терминале не начнет появляться строка вида С:\Users\*имя пользователя*.
После генерации найдите файл C:\Users\Имя_Пользователя\.ssh\id_ed25519.pub. Откройте этот файл блокнотом, там вы увидите одну строку символов. Скопируйте ее.
После этого:
- Вернитесь во вкладку с панелью Servercore;
- Кликните по окну «Выберите ключ»;
- В открывшемся подменю нажмите «Добавить SSH-ключ».
Откроется новое окно. Вставьте туда ключ и нажмите «добавить».
После этого нажимайте «Создать сервер». Сервер готов.
Шаг 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 — см. блок ниже.
Настройка выхода в интернет через 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
Имя интерфейса eth0 может отличаться в зависимости от образа ОС — уточните его командой ip a перед применением команды. Иначе NAT не заработает без явной ошибки.
Перезапустите интерфейс на сервере:
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 офиса при проверке должен показать адрес 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
Пакеты идут — филиалы объединены.
Настройка 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
1420 — типовое значение, но оптимальный MTU зависит от канала (PPPoE, мобильный оператор и проч.).
Оптимизация производительности WireGuard
Когда туннель поднят и стабильно держит Handshake, имеет смысл проверить, не теряете ли вы скорость на фрагментации пакетов или неоптимальных настройках.
Точный подбор MTU
В диагностике мы уже упоминали MTU=1420 как рабочее значение по умолчанию. Но оптимальный MTU зависит от канала — если провайдер использует PPPoE или это мобильный оператор, значение может быть другим. Чтобы найти точную цифру, а не подбирать наугад, отправьте пинг с флагом «не фрагментировать» и постепенно уменьшайте размер пакета:
ping -M do -s 1420 203.0.113.10
Если пакет проходит без ошибки «Packet needs to be fragmented», можно поднимать размер выше — пока не найдете потолок. Полученное значение минус заголовки WireGuard (обычно 60–80 байт) и станет вашим MTU.
Проверка реальной пропускной способности
Handshake и пинг подтверждают, что туннель работает, но не показывают, какую скорость он реально выдает. Проверьте пропускную способность через встроенный инструмент MikroTik:
/tool/bandwidth-test address=10.10.0.1 direction=both
Если результат заметно ниже канала до сервера — узкое место, скорее всего, не в WireGuard, а в производительности роутера или сервера на шифровании.
Баланс persistent-keepalive
Значение persistent-keepalive=25s, которое мы указали при настройке, — разумный дефолт, но не универсальный. Слишком частые keepalive-пакеты — лишняя нагрузка на канал и небольшой, но постоянный расход трафика. Слишком редкие — риск обрыва туннеля за NAT провайдера, особенно на нестабильном мобильном интернете, где NAT-таблицы держат соединение недолго. Если туннель периодически «отваливается» на мобильном канале, попробуйте снизить интервал до 15 секунд.
Производительность сервера — реальное узкое место
WireGuard шифрует трафик на уровне ядра, поэтому нагрузка на CPU ниже, чем у OpenVPN, но не нулевая. Это особенно заметно в сценарии полной маршрутизации (full tunnel), когда через один туннель идет весь интернет-трафик офиса — здесь сервер обрабатывает шифрование каждого пакета каждого сотрудника. Если планируете использовать WireGuard как основной канал выхода в интернет для офиса, закладывайте сервер с запасом по vCPU и пропускной способности сети — а не минимальную конфигурацию, которую мы использовали для первоначальной настройки.
Часто задаваемые вопросы
Работает ли 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-канал с минимальной нагрузкой на роутер.