<p><!-- SEO SEMANTIC CORE
Основной ключ: настройка wireguard на vps mikrotik клиент
LSI: wireguard vpn mikrotik, wireguard vps ubuntu, wg0 интерфейс, peer wireguard, iptables nat wireguard, wireguard tunnel, wireguard сервер, wireguard клиент mikrotik, установка wireguard ubuntu, роутер mikrotik wireguard
Long-tail: как настроить wireguard vpn на vps ubuntu, как поднять wireguard сервер на vps, mikrotik wireguard client настройка пошагово, wireguard mikrotik не подключается, как проверить что wireguard работает на vps
Интент: how-to / setup
--></p>
<h1>Настройка WireGuard на VPS и подключение MikroTik как клиента: пошаговое руководство</h1>
"Быстрый
<br />
Установи WireGuard на VPS с Ubuntu, сгенерируй пару ключей для <a href="https://it-apteka.com/vpn-na-mikrotik-polnyj-gajd-2026-wireguard-l2tp-ipsec-ikev2-nastrojka-servera-i-klienta/" title="VPN на MikroTik: полный гайд 2026 — WireGuard, L2TP/IPsec, IKEv2, настройка сервера и клиента" target="_blank" rel="noopener" data-wpil-monitor-id="1545">сервера и клиента</a>, создай конфиг /etc/wireguard/wg0.conf с пиром, включи IP-форвардинг и NAT через iptables. На MikroTik добавь интерфейс WireGuard, пропиши peer с публичным ключом VPS и IP-адрес, настрой маршрут. Туннель поднимается за 10-15 минут.<br />
<h2>Диагноз: в чём проблема и что ты получишь</h2>
<p>Поднял MikroTik. Хочешь завернуть трафик через VPS или получить фиксированный IP для доступа к ресурсам. OpenVPN — медленно и больно. Туннели через SSH — костыли. WireGuard — это то, что нужно.</p>
<p>По факту: WireGuard в RouterOS появился с версии 7.1. Если у тебя 6.x — сначала обнови, потом читай дальше. Версии 6.x не умеют WireGuard от слова совсем.</p>
<p><strong>Что получишь на выходе:</strong></p>
<ul>
<li>WireGuard сервер на VPS (Ubuntu 20.04 / 22.04 / 24.04)</li>
<li><a href="https://it-apteka.com/nastrojka-ntp-na-mikrotik-klient-i-server-shpargalka-dlja-ros-6-i-7/" title="Настройка NTP на MikroTik: клиент и сервер — шпаргалка для ROS 6 и 7" target="_blank" rel="noopener" data-wpil-monitor-id="1543">MikroTik в роли клиента</a> с туннелем до VPS</li>
<li>Весь трафик с MikroTik идёт через VPS или только нужные подсети — на выбор</li>
<li>Рабочий <a class="wpil_keyword_link" href="https://it-apteka.com/category/monitoring/" target="_blank" rel="noopener" title="Мониторинг" data-wpil-keyword-link="linked" data-wpil-monitor-id="1550">мониторинг</a> и автозапуск</li>
</ul>
<p><strong>Сколько займёт:</strong> 20-30 минут если всё идёт гладко. 45 минут если первый раз.</p>
<p><strong>Что нужно:</strong></p>
<ul>
<li>VPS с Ubuntu (любая актуальная версия), root или sudo</li>
<li><a href="https://it-apteka.com/rezervnoe-kopirovanie-mikrotik-routeros-7-v-telegram-avtomatizacija-za-20-minut/" title="Резервное копирование MikroTik RouterOS 7 в Telegram: автоматизация за 20 минут" target="_blank" rel="noopener" data-wpil-monitor-id="1544">MikroTik с RouterOS</a> 7.1 или новее</li>
<li>Базовые навыки работы с Linux командной строкой</li>
</ul>
<h2>Совместимость версий</h2>
<table>
<thead>
<tr>
<th>Компонент</th>
<th>Минимальная версия</th>
<th>Рекомендуется</th>
<th>Примечание</th>
</tr>
</thead>
<tbody>
<tr>
<td>RouterOS (MikroTik)</td>
<td>7.1</td>
<td>7.10+</td>
<td>WireGuard только в 7.x</td>
</tr>
<tr>
<td>Ubuntu (VPS)</td>
<td>20.04 LTS</td>
<td>22.04 / 24.04 LTS</td>
<td>В ядре начиная с 5.6</td>
</tr>
<tr>
<td>WireGuard (userspace tools)</td>
<td>1.0.0</td>
<td>Актуальная из репо</td>
<td>wireguard-tools пакет</td>
</tr>
<tr>
<td>Linux kernel</td>
<td>5.6</td>
<td>5.15+</td>
<td>Встроен в ядро с 5.6</td>
</tr>
</tbody>
</table>
<p>На момент публикации актуальна RouterOS 7.14. Перед установкой проверь свежие релизы на mikrotik.com.</p>
<h2>Таблица портов и протоколов</h2>
<table>
<thead>
<tr>
<th>Направление</th>
<th>Протокол</th>
<th>Порт</th>
<th>Назначение</th>
</tr>
</thead>
<tbody>
<tr>
<td>Входящий на VPS</td>
<td>UDP</td>
<td>51820</td>
<td>WireGuard туннель</td>
</tr>
<tr>
<td>Исходящий с VPS</td>
<td>UDP</td>
<td>51820</td>
<td>Ответы пирам</td>
</tr>
<tr>
<td>Управление VPS</td>
<td>TCP</td>
<td>22</td>
<td>SSH (лучше сменить)</td>
</tr>
<tr>
<td>Туннель (внутренний)</td>
<td>любой</td>
<td>любой</td>
<td>10.0.0.0/24 через wg0</td>
</tr>
</tbody>
</table>
<h2>Архитектура: как это работает</h2>
<p>Схема взаимодействия компонентов: MikroTik устанавливает зашифрованный UDP-туннель до VPS. VPS делает NAT и выпускает трафик в интернет через свой внешний интерфейс.</p>
<pre class="mermaid">
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart LR
A["LAN\n192.168.1.0/24"] --> B["MikroTik\nwg0: 10.0.0.2"]
B -->|"UDP 51820\nзашифровано"| C["VPS Ubuntu\nwg0: 10.0.0.1"]
C --> D["iptables NAT\nMASQUERADE"]
D --> E["Интернет\neth0"]
style A fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
style B fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style C fill:#f8fafc,stroke:#0f766e,stroke-width:2px,color:#134e4a
style D fill:#f8fafc,stroke:#d97706,stroke-width:1px,color:#92400e
style E fill:#f8fafc,stroke:#16a34a,stroke-width:1px,color:#14532d
</pre>
<h2>Почему именно WireGuard, а не OpenVPN или IPSec</h2>
<p>Три причины выбрать WireGuard:</p>
<p><strong>Скорость.</strong> WireGuard работает в пространстве ядра. OpenVPN — в userspace. На практике разница 2-3x по пропускной способности на одном и том же железе.</p>
<p><strong>Простота конфига.</strong> Конфиг сервера — 10 строк. Конфиг клиента — 8 строк. Не преувеличение — буквально столько. Против нескольких сотен строк в типичном OpenVPN сетапе.</p>
<p><strong>Поддержка в RouterOS.</strong> MikroTik нативно поддерживает WireGuard с RouterOS 7. IPSec тоже поддерживает, но его конфигурация — отдельный вид боевого искусства. WireGuard на MikroTik настраивается через GUI за 5 кликов или через terminal за 4 команды.</p>
<p>Минус один: WireGuard не скрывает факт использования VPN так хорошо, как Shadowsocks или V2Ray. Если задача — обход блокировок с DPI — это уже другой разговор.</p>
<h2>Установка WireGuard на VPS (Ubuntu)</h2>
<h3>Подготовка сервера</h3>
<p>Подключись к VPS по SSH. Обнови пакеты и установи WireGuard.</p>
<pre><code class="language-bash">
apt update && apt upgrade -y
apt install wireguard wireguard-tools -y
</code></pre>
<p>На Ubuntu 20.04/22.04/24.04 WireGuard уже встроен в ядро. Пакет wireguard-tools даёт утилиты wg и wg-quick.</p>
<p>Проверь что модуль загружен:</p>
<pre><code class="language-bash">
lsmod | grep wireguard
</code></pre>
<p>Если вывод пустой — загрузи вручную:</p>
<pre><code class="language-bash">
modprobe wireguard
</code></pre>
<h3>Генерация ключей сервера</h3>
<p>WireGuard использует пару ключей: приватный (только у тебя) и публичный (отдаёшь клиентам). Потеряешь приватный — заново генерируй всё.</p>
<pre><code class="language-bash">
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
</code></pre>
<p>Посмотри что получилось:</p>
<pre><code class="language-bash">
cat server_private.key
cat server_public.key
</code></pre>
<p>Запиши оба ключа. Публичный ключ <a href="https://it-apteka.com/bjekap-i-vosstanovlenie-servera-the-dude-mikrotik/" title="Бэкап и восстановление сервера The Dude (MikroTik)" target="_blank" rel="noopener" data-wpil-monitor-id="1549">сервера надо будет вставить в конфиг MikroTik</a>.</p>
<h3>Генерация ключей для MikroTik клиента</h3>
<p>Ключи для клиента можно сгенерировать прямо на VPS:</p>
<pre><code class="language-bash">
wg genkey | tee mikrotik_private.key | wg pubkey > mikrotik_public.key
cat mikrotik_private.key
cat mikrotik_public.key
</code></pre>
<p>Либо сгенерировать прямо на MikroTik — раздел про это ниже. Если генеришь здесь — запиши оба ключа.</p>
<h3>Конфигурация WireGuard сервера</h3>
<p>Создай файл конфига:</p>
<pre><code class="language-bash">
nano /etc/wireguard/wg0.conf
</code></pre>
<p>Вставь содержимое (замени ключи на свои):</p>
<pre><code class="language-text">
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <сюда_приватный_ключ_сервера>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# MikroTik client
PublicKey = <сюда_публичный_ключ_mikrotik>
AllowedIPs = 10.0.0.2/32
</code></pre>
"Важно
<br />
В строке PostUp/PostDown стоит eth0 — это имя внешнего интерфейса на VPS. Проверь своё имя через команду ip a. На многих VPS это может быть ens3, ens18, enp0s3 или venet0. Если поставишь неправильное имя — NAT не заработает.<br />
<p>Проверь имя своего интерфейса:</p>
<pre><code class="language-bash">
ip -o link show | grep -v lo | awk '{print $2}' | tr -d ':'
</code></pre>
<h3>Включение IP-форвардинга</h3>
<p>Без этого пакеты не будут маршрутизироваться через туннель.</p>
<pre><code class="language-bash">
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
</code></pre>
<p>Проверь что применилось:</p>
<pre><code class="language-bash">
sysctl net.ipv4.ip_forward
</code></pre>
<p>Результат должен быть <code>net.ipv4.ip_forward = 1</code>. Если 0 — форвардинг не включён, трафик через туннель идти не будет.</p>
<h3>Запуск WireGuard</h3>
<pre><code class="language-bash">
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0
</code></pre>
<p>Должно быть <code>active (running)</code>. Если падает — смотри <code>journalctl -xe | grep wireguard</code>.</p>
<h2>Настройка Firewall на VPS</h2>
<h3>UFW (если используешь)</h3>
<pre><code class="language-bash">
ufw allow 51820/udp
ufw allow ssh
ufw enable
ufw status
</code></pre>
"Не
<br />
Если включаешь UFW первый раз — сначала разреши SSH, потом включай файрвол. Иначе заблокируешь себя и придётся идти в консоль VPS через панель провайдера.<br />
<h3>iptables (без UFW)</h3>
<p>Правила NAT уже прописаны через PostUp в конфиге wg0.conf. Дополнительно можно закрыть ненужные порты:</p>
<pre><code class="language-bash">
iptables -A INPUT -p udp --dport 51820 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
</code></pre>
<p>Сохрани правила:</p>
<pre><code class="language-bash">
apt install iptables-persistent -y
netfilter-persistent save
</code></pre>
<h2>Настройка MikroTik как WireGuard клиента</h2>
<h3>Через Winbox / WebFig (GUI)</h3>
<p>Открой Winbox. Перейди в WireGuard.</p>
<p>Нажми плюс — создай новый интерфейс. Имя: wg0. Listen Port можно оставить 13231 или любой другой — для клиента не критично, если нет входящих подключений. Нажми Apply — MikroTik сам сгенерирует пару ключей. Скопируй Public Key — он понадобится на сервере.</p>
<p>Переходи в WireGuard — Peers. Нажми плюс:</p>
<ul>
<li>Interface: wg0</li>
<li>Public Key: публичный ключ VPS сервера</li>
<li>Endpoint: IP-адрес VPS:51820</li>
<li>Allowed Address: 0.0.0.0/0 (весь трафик через туннель) или конкретная подсеть</li>
</ul>
<h3>Через Terminal (CLI)</h3>
<p>Это быстрее. Подключись к MikroTik через SSH или открой Terminal в Winbox.</p>
<p>Создай WireGuard интерфейс:</p>
<pre><code class="language-bash">
/interface wireguard add name=wg0 listen-port=13231 comment="WireGuard to VPS"
</code></pre>
<p>Посмотри сгенерированные ключи:</p>
<pre><code class="language-bash">
/interface wireguard print
</code></pre>
<p>В выводе будет поле <code>public-key</code> — скопируй его. Это публичный ключ MikroTik, который нужно вставить в конфиг сервера в поле <code>PublicKey</code> секции <code>[Peer]</code>.</p>
<p>Если <a href="https://it-apteka.com/avtomaticheskaja-ustanovka-wordpress-na-vps-za-5-minut-skript-pod-kljuch/" title="Автоматическая установка WordPress на VPS за 5 минут (Скрипт под ключ)" target="_blank" rel="noopener" data-wpil-monitor-id="1542">ключи генерировал на VPS</a>, задай приватный ключ вручную:</p>
<pre><code class="language-bash">
/interface wireguard set wg0 private-key="<приватный_ключ_mikrotik>"
</code></pre>
<p>Добавь IP-адрес на WireGuard интерфейс:</p>
<pre><code class="language-bash">
/ip address add address=10.0.0.2/24 interface=wg0
</code></pre>
<p>Добавь пир — это сам VPS сервер:</p>
<pre><code class="language-bash">
/interface wireguard peers add interface=wg0 \
public-key="<публичный_ключ_vps_сервера>" \
endpoint-address=<IP_VPS> \
endpoint-port=51820 \
allowed-address=0.0.0.0/0 \
persistent-keepalive=25
</code></pre>
<p>Параметр <code>persistent-keepalive=25</code> нужен обязательно. MikroTik за NAT не может принять входящие соединения — только инициировать исходящие. Keepalive каждые 25 секунд держит туннель живым и позволяет серверу слать ответы обратно.</p>
<h3>Настройка маршрутизации на MikroTik</h3>
<p>Если хочешь завернуть весь трафик через VPS:</p>
<pre><code class="language-bash">
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 distance=1 comment="VPN route via WireGuard"
</code></pre>
"Осторожно
<br />
Если добавишь маршрут 0.0.0.0/0 через wg0 без исключения для адреса самого VPS — туннель упадёт. Трафик до VPS пойдёт через туннель, туннель потеряет endpoint, туннель упадёт. Классический lockout. Добавь исключение для IP VPS через основной интерфейс.<br />
<p>Правильный вариант — добавить маршрут до IP VPS через основной шлюз:</p>
<pre><code class="language-bash">
/ip route add dst-address=<IP_VPS>/32 gateway=<шлюз_провайдера> distance=1 comment="Direct route to VPS"
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 distance=2 comment="Default via WireGuard"
</code></pre>
<p>Если хочешь пускать через VPN только конкретные подсети:</p>
<pre><code class="language-bash">
/ip route add dst-address=192.168.100.0/24 gateway=10.0.0.1 comment="Office network via VPN"
</code></pre>
<h3>Обновление конфига сервера</h3>
<p>После того как узнал публичный ключ MikroTik, обнови конфиг на VPS:</p>
<pre><code class="language-bash">
nano /etc/wireguard/wg0.conf
</code></pre>
<p>Замени заглушку в секции [Peer]:</p>
<pre><code class="language-text">
[Peer]
# MikroTik client
PublicKey = <реальный_публичный_ключ_mikrotik>
AllowedIPs = 10.0.0.2/32
</code></pre>
<p>Перезапусти WireGuard на сервере:</p>
<pre><code class="language-bash">
systemctl restart wg-quick@wg0
</code></pre>
<p>Или добавь пира без перезапуска:</p>
<pre><code class="language-bash">
wg set wg0 peer <публичный_ключ_mikrotik> allowed-ips 10.0.0.2/32
</code></pre>
<h2>Проверка туннеля</h2>
<h3>На VPS</h3>
<pre><code class="language-bash">
wg show
</code></pre>
<p>Смотри на секцию peer. Должно быть:</p>
<ul>
<li><code>latest handshake</code> — время последнего хэндшейка (должно обновляться)</li>
<li><code>transfer</code> — количество переданных данных (должно расти)</li>
<li><code>endpoint</code> — IP:порт с которого подключился MikroTik</li>
</ul>
<p>Если <code>latest handshake</code> пусто или давно — туннель не установлен.</p>
<pre><code class="language-bash">
wg show wg0
ping -c 4 10.0.0.2
</code></pre>
<h3>На MikroTik</h3>
<pre><code class="language-bash">
/interface wireguard peers print
</code></pre>
<p>Смотри поле <code>last-handshake</code> — должно обновляться каждые ~2 минуты.</p>
<pre><code class="language-bash">
/ping address=10.0.0.1 count=4
</code></pre>
<p>Пинг до 10.0.0.1 (VPS) должен проходить. Если проходит — туннель живой.</p>
<p>Проверь маршрутизацию:</p>
<pre><code class="language-bash">
/ip route print where gateway=10.0.0.1
</code></pre>
<p>Проверь что трафик идёт через VPN:</p>
<pre><code class="language-bash">
/tool fetch url="https://api.ipify.org" as-value output=user
</code></pre>
<p>Должен вернуть IP-адрес VPS, а не реальный IP провайдера.</p>
<h2>Осложнения и типовые ошибки</h2>
<p>Всё не так плохо, как ты думаешь. Всё намного предсказуемее.</p>
<h3>Туннель не поднимается — нет handshake</h3>
<p><strong>Причина 1:</strong> Порт 51820/UDP закрыт на VPS</p>
<pre><code class="language-bash">
# На VPS:
ufw status | grep 51820
# Или проверь iptables:
iptables -L INPUT -n | grep 51820
# Если правила нет:
ufw allow 51820/udp
</code></pre>
<p><strong>Причина 2:</strong> Неправильный публичный ключ в конфиге пира.</p>
<p>Перепроверь ключи. Публичный ключ MikroTik должен быть в [Peer] на сервере. Публичный ключ сервера должен быть в параметре public-key пира на MikroTik.</p>
<p><a href="https://it-apteka.com/doh-server-connection-error-prichiny-i-reshenija-mikrotik-ssl-timeout/" title="DoH Server Connection Error: причины и решения (MikroTik, SSL, Timeout)" target="_blank" rel="noopener" data-wpil-monitor-id="1546">Причина 3: Неправильный endpoint на MikroTik</a></p>
<pre><code class="language-bash">
/interface wireguard peers print detail
</code></pre>
<p>Поле endpoint-address должно содержать реальный IP VPS, не приватный.</p>
<h3>Туннель поднят, но трафик не идёт</h3>
<p><strong>Причина 1:</strong> IP-форвардинг не включён на VPS</p>
<pre><code class="language-bash">
sysctl net.ipv4.ip_forward
# Должно быть: net.ipv4.ip_forward = 1
# Если 0:
sysctl -w net.ipv4.ip_forward=1
</code></pre>
<p><strong>Причина 2:</strong> NAT не работает — неправильное имя интерфейса в PostUp</p>
<pre><code class="language-bash">
# Проверь правила iptables:
iptables -t nat -L POSTROUTING -n -v
# Должна быть строка с MASQUERADE и правильным интерфейсом
</code></pre>
<p>Если строки нет — в конфиге wg0.conf указан неправильный интерфейс в PostUp. Исправь и перезапусти:</p>
<pre><code class="language-bash">
systemctl restart wg-quick@wg0
</code></pre>
<p><strong>Причина 3:</strong> AllowedIPs на MikroTik не включает нужные подсети</p>
<pre><code class="language-bash">
/interface wireguard peers print
</code></pre>
<p>Поле allowed-address должно содержать 0.0.0.0/0 для полного туннелирования или нужные подсети.</p>
<h3>Туннель падает через время</h3>
<p><strong>Причина:</strong> Нет persistent-keepalive, NAT-сессия на провайдере умирает.</p>
<pre><code class="language-bash">
/interface wireguard peers set [find] persistent-keepalive=25
</code></pre>
<p>25 секунд — стандартное значение. Можно поставить 15-30.</p>
<h3>MikroTik теряет связь с VPS после добавления дефолтного маршрута</h3>
<p>Это классика. Нужен явный маршрут до IP VPS через основной шлюз провайдера.</p>
<pre><code class="language-bash">
# Узнай текущий шлюз:
/ip route print where dst-address=0.0.0.0/0
# Добавь исключение для VPS:
/ip route add dst-address=<IP_VPS>/32 gateway=<текущий_шлюз> distance=1
</code></pre>
<h3>wg-quick не запускается при старте системы</h3>
<pre><code class="language-bash">
systemctl is-enabled wg-quick@wg0
# Если disabled:
systemctl enable wg-quick@wg0
</code></pre>
<h2>Безопасность</h2>
"Это
<br />
Голый VPS с включённым форвардингом и без нормального файрвола — это не VPN сервер, это открытый прокси. Минимальные меры безопасности ниже обязательны.<br />
<h3>SSH hardening на VPS</h3>
<p>Смени порт SSH и отключи парольную аутентификацию:</p>
<pre><code class="language-bash">
nano /etc/ssh/sshd_config
</code></pre>
<pre><code class="language-text">
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
</code></pre>
<pre><code class="language-bash">
systemctl restart sshd
</code></pre>
<h3>Fail2ban против брутфорса</h3>
<pre><code class="language-bash">
apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
</code></pre>
<pre><code class="language-bash">
nano /etc/fail2ban/jail.local
</code></pre>
<pre><code class="language-text">
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
</code></pre>
<h3>Ограничить AllowedIPs на сервере</h3>
<p>В конфиге сервера AllowedIPs для MikroTik должен быть <code>10.0.0.2/32</code>, не <code>0.0.0.0/0</code>. Это значит: сервер принимает пакеты от этого пира только если их source IP — 10.0.0.2. Защита от спуфинга.</p>
<h2>Альтернативные варианты настройки</h2>
<h3>WireGuard с несколькими клиентами</h3>
<p>Если нужно подключить несколько устройств — добавь секцию [Peer] для каждого:</p>
<pre><code class="language-text">
[Peer]
# MikroTik office
PublicKey = <ключ_mikrotik_1>
AllowedIPs = 10.0.0.2/32
[Peer]
# Laptop
PublicKey = <ключ_ноутбука>
AllowedIPs = 10.0.0.3/32
[Peer]
# Phone
PublicKey = <ключ_телефона>
AllowedIPs = 10.0.0.4/32
</code></pre>
<p>Каждый клиент получает свой IP из подсети 10.0.0.0/24.</p>
<h3>Site-to-site: пробросить подсеть офиса</h3>
<p>Если за MikroTik стоит офисная сеть 192.168.1.0/24 и хочешь иметь к ней доступ через VPS. На сервере в секции [Peer] для MikroTik:</p>
<pre><code class="language-text">
[Peer]
PublicKey = <ключ_mikrotik>
AllowedIPs = 10.0.0.2/32, 192.168.1.0/24
</code></pre>
<h3>Скрипт автоматической установки</h3>
<p>Если поднимаешь не первый раз — есть готовые скрипты:</p>
<pre><code class="language-bash">
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh
</code></pre>
<p>Скрипт задаёт несколько вопросов и поднимает всё сам. Удобно для быстрого старта, но не даёт понимания что происходит. Если что-то сломается — будешь разбираться вслепую.</p>
<h2>Резервное копирование</h2>
<p><strong>Что бэкапить на VPS:</strong> <code>/etc/wireguard/wg0.conf</code> с ключами и сами файлы ключей.</p>
<pre><code class="language-bash">
cp -r /etc/wireguard /root/wireguard_backup_$(date +%Y%m%d)
tar czf wireguard_backup.tar.gz /etc/wireguard/
</code></pre>
<p>Храни бэкапы не на том же сервере. Если VPS упадёт — бэкап на нём бесполезен.</p>
<p><strong>Восстановление:</strong></p>
<pre><code class="language-bash">
tar xzf wireguard_backup.tar.gz -C /
systemctl restart wg-quick@wg0
</code></pre>
<p><strong>Бэкап MikroTik:</strong></p>
<pre><code class="language-bash">
/export > backup.rsc
/system backup save name=wg-backup
</code></pre>
<h2>Обновление WireGuard</h2>
<h3>На VPS</h3>
<p>WireGuard встроен в ядро. Обновляется с системными обновлениями:</p>
<pre><code class="language-bash">
apt update && apt upgrade -y
wg --version
</code></pre>
<p>Если обновляешь ядро — нужна перезагрузка:</p>
<pre><code class="language-bash">
reboot
# После перезагрузки:
systemctl status wg-quick@wg0
</code></pre>
<h3>На MikroTik</h3>
<p>Обновление RouterOS через Winbox: System — Package — Check For Updates. Или через CLI:</p>
<pre><code class="language-bash">
/system package update check-for-updates
/system package update install
</code></pre>
<p>Перед обновлением RouterOS — сделай бэкап. Иногда обновления меняют поведение WireGuard.</p>
<p>Одна строка в конфиге без комментария живёт годами. А потом ты уходишь в отпуск.</p>
<h2>Мониторинг и профилактика</h2>
<h3>Скрипт мониторинга туннеля на VPS</h3>
<pre><code class="language-bash">
nano /usr/local/bin/wg-monitor.sh
</code></pre>
<pre><code class="language-bash">
#!/bin/bash
PEER_IP="10.0.0.2"
if ! ping -c 2 -W 3 $PEER_IP > /dev/null 2>&1; then
echo "WireGuard peer $PEER_IP unreachable, restarting..."
systemctl restart wg-quick@wg0
fi
</code></pre>
<pre><code class="language-bash">
chmod +x /usr/local/bin/wg-monitor.sh
echo "*/5 * * * * root /usr/local/bin/wg-monitor.sh" >> /etc/crontab
</code></pre>
<h3>Просмотр состояния туннеля в реальном времени</h3>
<pre><code class="language-bash">
watch -n 5 'wg show'
</code></pre>
<p>Обновляет вывод каждые 5 секунд. Смотри на <code>latest handshake</code> и <code>transfer</code>.</p>
<h3>Логи WireGuard</h3>
<pre><code class="language-bash">
journalctl -u wg-quick@wg0 -f
journalctl -u wg-quick@wg0 --since "1 hour ago"
</code></pre>
<h2>FAQ</h2>
<h3>Почему MikroTik не поддерживает WireGuard на RouterOS 6?</h3>
<p>WireGuard интегрировали в RouterOS только в версии 7. В 6.x его нет и не будет — MikroTik прекратил развитие ветки 6.x. Единственный путь — обновить RouterOS до 7.x. Перед обновлением проверь совместимость железа: не всё старое оборудование поддерживает 7.x.</p>
<h3>Как проверить что трафик реально идёт через VPN?</h3>
<pre><code class="language-bash">
# На MikroTik:
/tool fetch url="https://api.ipify.org" as-value output=user
# На компьютере за MikroTik:
curl https://api.ipify.org
</code></pre>
<p>Должен вернуть IP-адрес VPS. Если возвращает IP провайдера — маршрутизация не настроена или туннель упал.</p>
<h3>Что если VPS сменит IP-адрес?</h3>
<p>Возьми статический IP у провайдера или используй DNS-имя в endpoint. RouterOS поддерживает DNS в endpoint-address. При каждом keepalive MikroTik резолвит имя заново. Если IP сменился а DNS нет — просто обнови endpoint:</p>
<pre><code class="language-bash">
/interface wireguard peers set [find] endpoint-address=<новый_IP>
</code></pre>
<h3>Можно ли подключить несколько MikroTik к одному VPS?</h3>
<p>Да. Добавь отдельную секцию [Peer] для каждого MikroTik в конфиге сервера. Каждому пиру назначь свой IP из туннельной подсети: 10.0.0.2/32, 10.0.0.3/32 и т.д.</p>
<h3>Почему туннель поднимается но DNS не работает?</h3>
<p>При полном туннелировании DNS-запросы тоже идут через VPN. Укажи публичный <a href="https://it-apteka.com/dyndns-polnyj-gajd-po-nastrojke-dinamicheskogo-dns-na-routere-keenetic-i-mikrotik-besplatno-i-bez-boli/" title="DynDNS: полный гайд по настройке динамического DNS на роутере, Keenetic и MikroTik — бесплатно и без боли" target="_blank" rel="noopener" data-wpil-monitor-id="1547">DNS на MikroTik</a>:</p>
<pre><code class="language-bash">
/ip dns set servers=1.1.1.1,8.8.8.8
</code></pre>
<h3>Как временно отключить пира не удаляя конфиг?</h3>
<p>На VPS:</p>
<pre><code class="language-bash">
# Убрать пира:
wg set wg0 peer <публичный_ключ> remove
# Добавить обратно из конфига:
wg addconf wg0 /etc/wireguard/wg0.conf
</code></pre>
<p>На MikroTik:</p>
<pre><code class="language-bash">
/interface wireguard peers disable [find]
</code></pre>
<h2>Итог</h2>
<p>Сделал вот что: поднял WireGuard сервер на VPS с корректным NAT и форвардингом, настроил <a href="https://it-apteka.com/ntp-cherez-dhcp-options-v-mikrotik-avtomaticheskaja-razdacha-vremeni-klientam/" title="NTP через DHCP Options в MikroTik: автоматическая раздача времени клиентам" target="_blank" rel="noopener" data-wpil-monitor-id="1548">MikroTik как клиента</a> с persistent-keepalive, добавил маршрутизацию и проверил туннель.</p>
<p>Теперь MikroTik держит постоянный зашифрованный туннель до VPS. Весь трафик или нужные подсети идут через него. Туннель автоматически восстанавливается после разрыва. При перезапуске VPS сервис поднимается сам через systemd.</p>
<p>WireGuard — это тот редкий случай когда «просто работает» не маркетинговое клише, а инженерная реальность. 10 строк конфига и нет никаких сертификатов, CA, сложных согласований алгоритмов.</p>
"Не
<br />
Опиши в комментариях: какой шаг выполнил, что получил в выводе wg show, какая ошибка в journalctl. Без этой информации помочь сложно.<br />
Настройка WireGuard на VPS и подключение MikroTik как клиента: пошаговое руководство
Быстрый ответ
Установи WireGuard на VPS с Ubuntu, сгенерируй пару ключей для
сервера и клиента, создай конфиг /etc/wireguard/wg0.conf с пиром, включи IP-форвардинг и NAT через iptables. На MikroTik добавь интерфейс WireGuard, пропиши peer с публичным ключом VPS и IP-адрес, настрой маршрут. Туннель поднимается за 10-15 минут.
Диагноз: в чём проблема и что ты получишь
Поднял MikroTik. Хочешь завернуть трафик через VPS или получить фиксированный IP для доступа к ресурсам. OpenVPN — медленно и больно. Туннели через SSH — костыли. WireGuard — это то, что нужно.
По факту: WireGuard в RouterOS появился с версии 7.1. Если у тебя 6.x — сначала обнови, потом читай дальше. Версии 6.x не умеют WireGuard от слова совсем.
Что получишь на выходе:
- WireGuard сервер на VPS (Ubuntu 20.04 / 22.04 / 24.04)
- MikroTik в роли клиента с туннелем до VPS
- Весь трафик с MikroTik идёт через VPS или только нужные подсети — на выбор
- Рабочий мониторинг и автозапуск
Сколько займёт: 20-30 минут если всё идёт гладко. 45 минут если первый раз.
Что нужно:
- VPS с Ubuntu (любая актуальная версия), root или sudo
- MikroTik с RouterOS 7.1 или новее
- Базовые навыки работы с Linux командной строкой
Совместимость версий
| Компонент |
Минимальная версия |
Рекомендуется |
Примечание |
| RouterOS (MikroTik) |
7.1 |
7.10+ |
WireGuard только в 7.x |
| Ubuntu (VPS) |
20.04 LTS |
22.04 / 24.04 LTS |
В ядре начиная с 5.6 |
| WireGuard (userspace tools) |
1.0.0 |
Актуальная из репо |
wireguard-tools пакет |
| Linux kernel |
5.6 |
5.15+ |
Встроен в ядро с 5.6 |
На момент публикации актуальна RouterOS 7.14. Перед установкой проверь свежие релизы на mikrotik.com.
Таблица портов и протоколов
| Направление |
Протокол |
Порт |
Назначение |
| Входящий на VPS |
UDP |
51820 |
WireGuard туннель |
| Исходящий с VPS |
UDP |
51820 |
Ответы пирам |
| Управление VPS |
TCP |
22 |
SSH (лучше сменить) |
| Туннель (внутренний) |
любой |
любой |
10.0.0.0/24 через wg0 |
Архитектура: как это работает
Схема взаимодействия компонентов: MikroTik устанавливает зашифрованный UDP-туннель до VPS. VPS делает NAT и выпускает трафик в интернет через свой внешний интерфейс.
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart LR
A["LAN\n192.168.1.0/24"] --> B["MikroTik\nwg0: 10.0.0.2"]
B -->|"UDP 51820\nзашифровано"| C["VPS Ubuntu\nwg0: 10.0.0.1"]
C --> D["iptables NAT\nMASQUERADE"]
D --> E["Интернет\neth0"]
style A fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
style B fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style C fill:#f8fafc,stroke:#0f766e,stroke-width:2px,color:#134e4a
style D fill:#f8fafc,stroke:#d97706,stroke-width:1px,color:#92400e
style E fill:#f8fafc,stroke:#16a34a,stroke-width:1px,color:#14532d
Почему именно WireGuard, а не OpenVPN или IPSec
Три причины выбрать WireGuard:
Скорость. WireGuard работает в пространстве ядра. OpenVPN — в userspace. На практике разница 2-3x по пропускной способности на одном и том же железе.
Простота конфига. Конфиг сервера — 10 строк. Конфиг клиента — 8 строк. Не преувеличение — буквально столько. Против нескольких сотен строк в типичном OpenVPN сетапе.
Поддержка в RouterOS. MikroTik нативно поддерживает WireGuard с RouterOS 7. IPSec тоже поддерживает, но его конфигурация — отдельный вид боевого искусства. WireGuard на MikroTik настраивается через GUI за 5 кликов или через terminal за 4 команды.
Минус один: WireGuard не скрывает факт использования VPN так хорошо, как Shadowsocks или V2Ray. Если задача — обход блокировок с DPI — это уже другой разговор.
Установка WireGuard на VPS (Ubuntu)
Подготовка сервера
Подключись к VPS по SSH. Обнови пакеты и установи WireGuard.
apt update && apt upgrade -y
apt install wireguard wireguard-tools -y
На Ubuntu 20.04/22.04/24.04 WireGuard уже встроен в ядро. Пакет wireguard-tools даёт утилиты wg и wg-quick.
Проверь что модуль загружен:
lsmod | grep wireguard
Если вывод пустой — загрузи вручную:
modprobe wireguard
Генерация ключей сервера
WireGuard использует пару ключей: приватный (только у тебя) и публичный (отдаёшь клиентам). Потеряешь приватный — заново генерируй всё.
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
Посмотри что получилось:
cat server_private.key
cat server_public.key
Запиши оба ключа. Публичный ключ сервера надо будет вставить в конфиг MikroTik.
Генерация ключей для MikroTik клиента
Ключи для клиента можно сгенерировать прямо на VPS:
wg genkey | tee mikrotik_private.key | wg pubkey > mikrotik_public.key
cat mikrotik_private.key
cat mikrotik_public.key
Либо сгенерировать прямо на MikroTik — раздел про это ниже. Если генеришь здесь — запиши оба ключа.
Конфигурация WireGuard сервера
Создай файл конфига:
nano /etc/wireguard/wg0.conf
Вставь содержимое (замени ключи на свои):
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <сюда_приватный_ключ_сервера>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# MikroTik client
PublicKey = <сюда_публичный_ключ_mikrotik>
AllowedIPs = 10.0.0.2/32
Важно про имя интерфейса
В строке PostUp/PostDown стоит eth0 — это имя внешнего интерфейса на VPS. Проверь своё имя через команду ip a. На многих VPS это может быть ens3, ens18, enp0s3 или venet0. Если поставишь неправильное имя — NAT не заработает.
Проверь имя своего интерфейса:
ip -o link show | grep -v lo | awk '{print $2}' | tr -d ':'
Включение IP-форвардинга
Без этого пакеты не будут маршрутизироваться через туннель.
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Проверь что применилось:
sysctl net.ipv4.ip_forward
Результат должен быть net.ipv4.ip_forward = 1. Если 0 — форвардинг не включён, трафик через туннель идти не будет.
Запуск WireGuard
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0
Должно быть active (running). Если падает — смотри journalctl -xe | grep wireguard.
Настройка Firewall на VPS
UFW (если используешь)
ufw allow 51820/udp
ufw allow ssh
ufw enable
ufw status
Не забудь про SSH
Если включаешь UFW первый раз — сначала разреши SSH, потом включай файрвол. Иначе заблокируешь себя и придётся идти в консоль VPS через панель провайдера.
iptables (без UFW)
Правила NAT уже прописаны через PostUp в конфиге wg0.conf. Дополнительно можно закрыть ненужные порты:
iptables -A INPUT -p udp --dport 51820 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
Сохрани правила:
apt install iptables-persistent -y
netfilter-persistent save
Настройка MikroTik как WireGuard клиента
Через Winbox / WebFig (GUI)
Открой Winbox. Перейди в WireGuard.
Нажми плюс — создай новый интерфейс. Имя: wg0. Listen Port можно оставить 13231 или любой другой — для клиента не критично, если нет входящих подключений. Нажми Apply — MikroTik сам сгенерирует пару ключей. Скопируй Public Key — он понадобится на сервере.
Переходи в WireGuard — Peers. Нажми плюс:
- Interface: wg0
- Public Key: публичный ключ VPS сервера
- Endpoint: IP-адрес VPS:51820
- Allowed Address: 0.0.0.0/0 (весь трафик через туннель) или конкретная подсеть
Через Terminal (CLI)
Это быстрее. Подключись к MikroTik через SSH или открой Terminal в Winbox.
Создай WireGuard интерфейс:
/interface wireguard add name=wg0 listen-port=13231 comment="WireGuard to VPS"
Посмотри сгенерированные ключи:
/interface wireguard print
В выводе будет поле public-key — скопируй его. Это публичный ключ MikroTik, который нужно вставить в конфиг сервера в поле PublicKey секции [Peer].
Если ключи генерировал на VPS, задай приватный ключ вручную:
/interface wireguard set wg0 private-key="<приватный_ключ_mikrotik>"
Добавь IP-адрес на WireGuard интерфейс:
/ip address add address=10.0.0.2/24 interface=wg0
Добавь пир — это сам VPS сервер:
/interface wireguard peers add interface=wg0 \
public-key="<публичный_ключ_vps_сервера>" \
endpoint-address=<IP_VPS> \
endpoint-port=51820 \
allowed-address=0.0.0.0/0 \
persistent-keepalive=25
Параметр persistent-keepalive=25 нужен обязательно. MikroTik за NAT не может принять входящие соединения — только инициировать исходящие. Keepalive каждые 25 секунд держит туннель живым и позволяет серверу слать ответы обратно.
Настройка маршрутизации на MikroTik
Если хочешь завернуть весь трафик через VPS:
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 distance=1 comment="VPN route via WireGuard"
Осторожно с дефолтным маршрутом
Если добавишь маршрут 0.0.0.0/0 через wg0 без исключения для адреса самого VPS — туннель упадёт. Трафик до VPS пойдёт через туннель, туннель потеряет endpoint, туннель упадёт. Классический lockout. Добавь исключение для IP VPS через основной интерфейс.
Правильный вариант — добавить маршрут до IP VPS через основной шлюз:
/ip route add dst-address=<IP_VPS>/32 gateway=<шлюз_провайдера> distance=1 comment="Direct route to VPS"
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 distance=2 comment="Default via WireGuard"
Если хочешь пускать через VPN только конкретные подсети:
/ip route add dst-address=192.168.100.0/24 gateway=10.0.0.1 comment="Office network via VPN"
Обновление конфига сервера
После того как узнал публичный ключ MikroTik, обнови конфиг на VPS:
nano /etc/wireguard/wg0.conf
Замени заглушку в секции [Peer]:
[Peer]
# MikroTik client
PublicKey = <реальный_публичный_ключ_mikrotik>
AllowedIPs = 10.0.0.2/32
Перезапусти WireGuard на сервере:
systemctl restart wg-quick@wg0
Или добавь пира без перезапуска:
wg set wg0 peer <публичный_ключ_mikrotik> allowed-ips 10.0.0.2/32
Проверка туннеля
На VPS
wg show
Смотри на секцию peer. Должно быть:
latest handshake — время последнего хэндшейка (должно обновляться)
transfer — количество переданных данных (должно расти)
endpoint — IP:порт с которого подключился MikroTik
Если latest handshake пусто или давно — туннель не установлен.
wg show wg0
ping -c 4 10.0.0.2
На MikroTik
/interface wireguard peers print
Смотри поле last-handshake — должно обновляться каждые ~2 минуты.
/ping address=10.0.0.1 count=4
Пинг до 10.0.0.1 (VPS) должен проходить. Если проходит — туннель живой.
Проверь маршрутизацию:
/ip route print where gateway=10.0.0.1
Проверь что трафик идёт через VPN:
/tool fetch url="https://api.ipify.org" as-value output=user
Должен вернуть IP-адрес VPS, а не реальный IP провайдера.
Осложнения и типовые ошибки
Всё не так плохо, как ты думаешь. Всё намного предсказуемее.
Туннель не поднимается — нет handshake
Причина 1: Порт 51820/UDP закрыт на VPS
# На VPS:
ufw status | grep 51820
# Или проверь iptables:
iptables -L INPUT -n | grep 51820
# Если правила нет:
ufw allow 51820/udp
Причина 2: Неправильный публичный ключ в конфиге пира.
Перепроверь ключи. Публичный ключ MikroTik должен быть в [Peer] на сервере. Публичный ключ сервера должен быть в параметре public-key пира на MikroTik.
Причина 3: Неправильный endpoint на MikroTik
/interface wireguard peers print detail
Поле endpoint-address должно содержать реальный IP VPS, не приватный.
Туннель поднят, но трафик не идёт
Причина 1: IP-форвардинг не включён на VPS
sysctl net.ipv4.ip_forward
# Должно быть: net.ipv4.ip_forward = 1
# Если 0:
sysctl -w net.ipv4.ip_forward=1
Причина 2: NAT не работает — неправильное имя интерфейса в PostUp
# Проверь правила iptables:
iptables -t nat -L POSTROUTING -n -v
# Должна быть строка с MASQUERADE и правильным интерфейсом
Если строки нет — в конфиге wg0.conf указан неправильный интерфейс в PostUp. Исправь и перезапусти:
systemctl restart wg-quick@wg0
Причина 3: AllowedIPs на MikroTik не включает нужные подсети
/interface wireguard peers print
Поле allowed-address должно содержать 0.0.0.0/0 для полного туннелирования или нужные подсети.
Туннель падает через время
Причина: Нет persistent-keepalive, NAT-сессия на провайдере умирает.
/interface wireguard peers set [find] persistent-keepalive=25
25 секунд — стандартное значение. Можно поставить 15-30.
MikroTik теряет связь с VPS после добавления дефолтного маршрута
Это классика. Нужен явный маршрут до IP VPS через основной шлюз провайдера.
# Узнай текущий шлюз:
/ip route print where dst-address=0.0.0.0/0
# Добавь исключение для VPS:
/ip route add dst-address=<IP_VPS>/32 gateway=<текущий_шлюз> distance=1
wg-quick не запускается при старте системы
systemctl is-enabled wg-quick@wg0
# Если disabled:
systemctl enable wg-quick@wg0
Безопасность
Это не опционально
Голый VPS с включённым форвардингом и без нормального файрвола — это не VPN сервер, это открытый прокси. Минимальные меры безопасности ниже обязательны.
SSH hardening на VPS
Смени порт SSH и отключи парольную аутентификацию:
nano /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
systemctl restart sshd
Fail2ban против брутфорса
apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
Ограничить AllowedIPs на сервере
В конфиге сервера AllowedIPs для MikroTik должен быть 10.0.0.2/32, не 0.0.0.0/0. Это значит: сервер принимает пакеты от этого пира только если их source IP — 10.0.0.2. Защита от спуфинга.
Альтернативные варианты настройки
WireGuard с несколькими клиентами
Если нужно подключить несколько устройств — добавь секцию [Peer] для каждого:
[Peer]
# MikroTik office
PublicKey = <ключ_mikrotik_1>
AllowedIPs = 10.0.0.2/32
[Peer]
# Laptop
PublicKey = <ключ_ноутбука>
AllowedIPs = 10.0.0.3/32
[Peer]
# Phone
PublicKey = <ключ_телефона>
AllowedIPs = 10.0.0.4/32
Каждый клиент получает свой IP из подсети 10.0.0.0/24.
Site-to-site: пробросить подсеть офиса
Если за MikroTik стоит офисная сеть 192.168.1.0/24 и хочешь иметь к ней доступ через VPS. На сервере в секции [Peer] для MikroTik:
[Peer]
PublicKey = <ключ_mikrotik>
AllowedIPs = 10.0.0.2/32, 192.168.1.0/24
Скрипт автоматической установки
Если поднимаешь не первый раз — есть готовые скрипты:
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh
Скрипт задаёт несколько вопросов и поднимает всё сам. Удобно для быстрого старта, но не даёт понимания что происходит. Если что-то сломается — будешь разбираться вслепую.
Резервное копирование
Что бэкапить на VPS: /etc/wireguard/wg0.conf с ключами и сами файлы ключей.
cp -r /etc/wireguard /root/wireguard_backup_$(date +%Y%m%d)
tar czf wireguard_backup.tar.gz /etc/wireguard/
Храни бэкапы не на том же сервере. Если VPS упадёт — бэкап на нём бесполезен.
Восстановление:
tar xzf wireguard_backup.tar.gz -C /
systemctl restart wg-quick@wg0
Бэкап MikroTik:
/export > backup.rsc
/system backup save name=wg-backup
Обновление WireGuard
На VPS
WireGuard встроен в ядро. Обновляется с системными обновлениями:
apt update && apt upgrade -y
wg --version
Если обновляешь ядро — нужна перезагрузка:
reboot
# После перезагрузки:
systemctl status wg-quick@wg0
На MikroTik
Обновление RouterOS через Winbox: System — Package — Check For Updates. Или через CLI:
/system package update check-for-updates
/system package update install
Перед обновлением RouterOS — сделай бэкап. Иногда обновления меняют поведение WireGuard.
Одна строка в конфиге без комментария живёт годами. А потом ты уходишь в отпуск.
Мониторинг и профилактика
Скрипт мониторинга туннеля на VPS
nano /usr/local/bin/wg-monitor.sh
#!/bin/bash
PEER_IP="10.0.0.2"
if ! ping -c 2 -W 3 $PEER_IP > /dev/null 2>&1; then
echo "WireGuard peer $PEER_IP unreachable, restarting..."
systemctl restart wg-quick@wg0
fi
chmod +x /usr/local/bin/wg-monitor.sh
echo "*/5 * * * * root /usr/local/bin/wg-monitor.sh" >> /etc/crontab
Просмотр состояния туннеля в реальном времени
watch -n 5 'wg show'
Обновляет вывод каждые 5 секунд. Смотри на latest handshake и transfer.
Логи WireGuard
journalctl -u wg-quick@wg0 -f
journalctl -u wg-quick@wg0 --since "1 hour ago"
FAQ
Почему MikroTik не поддерживает WireGuard на RouterOS 6?
WireGuard интегрировали в RouterOS только в версии 7. В 6.x его нет и не будет — MikroTik прекратил развитие ветки 6.x. Единственный путь — обновить RouterOS до 7.x. Перед обновлением проверь совместимость железа: не всё старое оборудование поддерживает 7.x.
Как проверить что трафик реально идёт через VPN?
# На MikroTik:
/tool fetch url="https://api.ipify.org" as-value output=user
# На компьютере за MikroTik:
curl https://api.ipify.org
Должен вернуть IP-адрес VPS. Если возвращает IP провайдера — маршрутизация не настроена или туннель упал.
Что если VPS сменит IP-адрес?
Возьми статический IP у провайдера или используй DNS-имя в endpoint. RouterOS поддерживает DNS в endpoint-address. При каждом keepalive MikroTik резолвит имя заново. Если IP сменился а DNS нет — просто обнови endpoint:
/interface wireguard peers set [find] endpoint-address=<новый_IP>
Можно ли подключить несколько MikroTik к одному VPS?
Да. Добавь отдельную секцию [Peer] для каждого MikroTik в конфиге сервера. Каждому пиру назначь свой IP из туннельной подсети: 10.0.0.2/32, 10.0.0.3/32 и т.д.
Почему туннель поднимается но DNS не работает?
При полном туннелировании DNS-запросы тоже идут через VPN. Укажи публичный DNS на MikroTik:
/ip dns set servers=1.1.1.1,8.8.8.8
Как временно отключить пира не удаляя конфиг?
На VPS:
# Убрать пира:
wg set wg0 peer <публичный_ключ> remove
# Добавить обратно из конфига:
wg addconf wg0 /etc/wireguard/wg0.conf
На MikroTik:
/interface wireguard peers disable [find]
Итог
Сделал вот что: поднял WireGuard сервер на VPS с корректным NAT и форвардингом, настроил MikroTik как клиента с persistent-keepalive, добавил маршрутизацию и проверил туннель.
Теперь MikroTik держит постоянный зашифрованный туннель до VPS. Весь трафик или нужные подсети идут через него. Туннель автоматически восстанавливается после разрыва. При перезапуске VPS сервис поднимается сам через systemd.
WireGuard — это тот редкий случай когда «просто работает» не маркетинговое клише, а инженерная реальность. 10 строк конфига и нет никаких сертификатов, CA, сложных согласований алгоритмов.
Не заработало? Пиши - разберёмся
Опиши в комментариях: какой шаг выполнил, что получил в выводе wg show, какая ошибка в journalctl. Без этой информации помочь сложно.