2026-09-16
Настройка WireGuard VPN на Mikrotik RouterOS

Настройка WireGuard VPN на Mikrotik RouterOS

WireGuard — быстрый, простой и современный VPN-протокол. RouterOS 7 поддерживает WireGuard «из коробки». В этой статье — полная пошаговая настройка: от создания интерфейса до маршрутизации всего трафика через туннель.


Требования

  • RouterOS 7.1+ (WireGuard появился в 7.1)
  • Два роутера: «сервер» (с публичным IP) и «клиент» (за NAT или в другом месте)
  • Публичный IP у сервера (или статический внешний адрес)

Шаг 1. Создаём WireGuard интерфейс на сервере

В WinBox или SSH:

/interface wireguard add name=wg0 listen-port=13231 mtu=1420
  • listen-port — порт UDP, на котором будет слушать сервер (13231 — любой свободный)
  • mtu=1420 — рекомендованное для WireGuard (меньше стандартного 1500 из-за заголовков)

После создания интерфейса появится его public key — он понадобится клиенту. Посмотреть:

/interface wireguard print detail where name=wg0

Скопируйте public-key — он понадобится дальше.


Шаг 2. Добавляем peer (клиент) на сервер

Сгенерируйте ключевую пару на клиенте (на другом Mikrotik, Ubuntu или Windows). Клиент сам создаёт интерфейс WireGuard и генерирует ключи:

# На клиентском Mikrotik:
/interface wireguard add name=wg0 listen-port=13231 mtu=1420
/interface wireguard print detail where name=wg0

Теперь на сервере добавьте клиента как peer:

/interface wireguard peers add 
    interface=wg0 
    public-key="<PUBLIC_KEY_КЛИЕНТА>" 
    allowed-address=10.10.10.2/32 
    endpoint-address=<PUBLIC_IP_КЛИЕНТА> 
    endpoint-port=13231 
    persistent-keepalive=25
  • allowed-address — IP-адрес, который будет у клиента внутри туннеля (например 10.10.10.2)
  • endpoint-address — публичный IP или DNS клиента (если клиент за NAT, этот параметр не обязателен на первом этапе)
  • persistent-keepalive=25 — поддерживает туннель активным за NAT

Шаг 3. Назначаем IP-адреса интерфейсам WireGuard

На сервере:

/ip address add address=10.10.10.1/24 interface=wg0

На клиенте:

/ip address add address=10.10.10.2/24 interface=wg0

На этом этапе пинг между роутерами через WireGuard уже должен работать:

/ping 10.10.10.1 src-address=10.10.10.2

Шаг 4. Открываем порт на сервере

Без этого трафик от клиента не дойдёт до сервера:

/ip firewall nat add chain=dstnat protocol=udp dst-port=13231 
    action=dst-nat to-addresses=<LAN_IP_СЕРВЕРА> to-ports=13231 
    comment="WireGuard"

А также разрешающее правило в mangle/filter (если файрвол активен):

/ip firewall filter add chain=input protocol=udp dst-port=13231 
    action=accept place-before=0 comment="Allow WireGuard"

Шаг 5. Маршрутизация между сетями

Вариант А: точка-точка (два сайта с разными подсетями)

На сервере пропишите маршрут к подсети клиента:

/ip route add dst-address=192.168.20.0/24 gateway=10.10.10.2

На клиенте — обратно:

/ip route add dst-address=192.168.10.0/24 gateway=10.10.10.1

Вариант Б: весь трафик через туннель (privacy VPN)

На клиенте заменяете default route:

/ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1 distance=1

Тогда весь трафик клиента пойдёт через сервер. На сервере включите masquerade:

/ip firewall nat add chain=srcnat out-interface=wg0 
    action=masquerade comment="WG masq"

Важно: при таком варианте DNS тоже уйдут через туннель. Убедитесь, что DNS на клиенте настроен на сервер или публичные (1.1.1.1 / 8.8.8.8).


Шаг 6. Финальная проверка

  1. Пинг из одной сети в другую через WireGuard IP.
  2. tool sniffer или Wireshark на интерфейсе wg0 — видны handshake-пакеты.
  3. Счётчики: /interface wireguard monitor wg0 — показывает latest handshake и transfer.
  4. Проверка на Windows/Android: подключитесь к серверу и откройте сайт — внешний IP должен совпадать с сервером.

Тонкости и подводные камни

  • WireGuard не шифрует handshake ключевой фразой — публичный ключ и IP-адреса видны в открытом виде в первом пакете. Это нормально для приватного VPN, но не для обхода блокировок (цензура).
  • MTU: если туннель работает, но тормозит или «падает» крупный пакет — снизьте MTU ещё (1380 или 1360). WireGuard добавляет заголовок ~60 байт.
  • NAT traversal: WireGuard не умеет обходить NAT без дополнительных средств. Клиент за NAT должен сам инициировать соединение к серверу (endpoint). persistent-keepalive обязателен.
  • Двойной NAT: если обе стороны за NAT — туннель не поднимется без проброса порта или использования STUN. В офисе за корпоративным файрволом — лучше сервер на выделенном IP.
  • RouterOS 7 vs 6: WireGuard есть только в 7-й версии. В RouterOS 6 используйте OpenVPN или L2TP/IPsec.

Быстрый шпаргалка

/interface wireguard add name=wg0 listen-port=13231 mtu=1420
/ip address add address=10.10.10.1/24 interface=wg0
/interface wireguard peers add interface=wg0 public-key=<KEY> 
    allowed-address=10.10.10.2/32 persistent-keepalive=25
/ip route add dst-address=192.168.20.0/24 gateway=10.10.10.2
/ip firewall filter add chain=input protocol=udp dst-port=13231 action=accept

Проверено на: RouterOS 7.14+.
Дата: Сентябрь 2026.

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

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