Настройка 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. Финальная проверка
- Пинг из одной сети в другую через WireGuard IP.
tool snifferили Wireshark на интерфейсеwg0— видны handshake-пакеты.- Счётчики:
/interface wireguard monitor wg0— показывает latest handshake и transfer. - Проверка на 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.