WireGuard
Содержание
WireGuard в RouterOS
WireGuard доступен нативно начиная с RouterOS 7.1. Протокол работает в ядре, обеспечивая производительность значительно выше OpenVPN и сопоставимую с IPsec, при этом конфигурация минималистична.
| Параметр | WireGuard | IPsec | OpenVPN |
|---|---|---|---|
| Throughput (hAP ax³) | ~600 Mbps | ~500 Mbps | ~80 Mbps |
| Latency overhead | Минимальный | Средний | Высокий |
| Строки конфигурации | ~10 | ~30 | ~50 |
| Протокол | UDP | ESP/UDP | TCP/UDP |
Настройка сервера
# Создаём WireGuard интерфейс
/interface/wireguard/add name=wg0 listen-port=51820 mtu=1420
# Назначаем адрес
/ip/address/add address=10.10.0.1/24 interface=wg0
# Смотрим сгенерированный public key
/interface/wireguard/print
# Добавляем пиров (клиенты)
/interface/wireguard/peers
add interface=wg0 public-key="peer1_pubkey_here" allowed-address=10.10.0.2/32 comment="Laptop - Иванов"
add interface=wg0 public-key="peer2_pubkey_here" allowed-address=10.10.0.3/32 comment="Phone - Петров"
# Firewall — разрешить WireGuard
/ip/firewall/filter/add chain=input protocol=udp dst-port=51820 action=accept comment="WireGuard" place-before=4
# NAT для выхода WG-клиентов в интернет
/ip/firewall/nat/add chain=srcnat src-address=10.10.0.0/24 out-interface=ether1 action=masqueradeRouterOS CLI
Конфигурация клиента
Конфигурация для приложения WireGuard (Windows/macOS/iOS/Android):
# wg-client.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.10.0.2/32
DNS = 192.168.88.1
[Peer]
PublicKey = MIKROTIK_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25wg-client.conf
Site-to-Site туннель
# === Сторона A (офис Москва) ===
/interface/wireguard/add name=wg-spb listen-port=51821
/ip/address/add address=10.255.0.1/30 interface=wg-spb
/interface/wireguard/peers/add interface=wg-spb public-key="SIDE_B_PUBKEY" endpoint-address=spb.example.com endpoint-port=51821 allowed-address=10.255.0.2/32,192.168.200.0/24 persistent-keepalive=25
# Маршрут в подсеть SPB
/ip/route/add dst-address=192.168.200.0/24 gateway=wg-spb
# === Сторона B (офис СПб) — зеркально ===
/interface/wireguard/add name=wg-msk listen-port=51821
/ip/address/add address=10.255.0.2/30 interface=wg-msk
/interface/wireguard/peers/add interface=wg-msk public-key="SIDE_A_PUBKEY" endpoint-address=msk.example.com endpoint-port=51821 allowed-address=10.255.0.1/32,192.168.100.0/24 persistent-keepalive=25
/ip/route/add dst-address=192.168.100.0/24 gateway=wg-mskRouterOS CLI
DNS Leak Prevention
Чтобы предотвратить утечки DNS при использовании WireGuard, укажите DNS-сервер роутера в конфиге клиента и настройте DNS redirect на MikroTik:
# Принудительный DNS-redirect для WG-клиентов
/ip/firewall/nat/add chain=dstnat protocol=udp dst-port=53 src-address=10.10.0.0/24 action=redirect to-ports=53
/ip/firewall/nat/add chain=dstnat protocol=tcp dst-port=53 src-address=10.10.0.0/24 action=redirect to-ports=53RouterOS CLI
Производительность
Тесты throughput WireGuard на различных устройствах MikroTik (iperf3, single stream):
| Устройство | CPU | WireGuard throughput |
|---|---|---|
| hAP ac² | IPQ-4018 | ~180 Mbps |
| hAP ax² | IPQ-6010 | ~400 Mbps |
| hAP ax³ | IPQ-8074A | ~600 Mbps |
| RB5009 | Marvell 88F7040 | ~900 Mbps |
| CCR2004-1G-12S+2XS | AL32400 | ~2.5 Gbps |