"⚡
<br />
Настройка VPN на MikroTik: создай IP-пул, PPP-профиль и пользователей, включи L2TP-сервер с use-ipsec=required, открой порты UDP 500/4500/1701 и ESP в firewall, добавь NAT для VPN-подсети.<br />
Для WireGuard — создай интерфейс wg0, назначь IP, добавь peer с публичным ключом клиента, открой UDP 51820. Всё это работает на RouterOS 7.x и занимает 15–30 минут.<br />
<p>
Сотрудники не могут подключиться к офисной 1С из дома? Три офиса гоняют данные через интернет без шифрования? Провайдер блокирует нужные сервисы?
</p>
<p>
Знакомо. <a href="https://it-apteka.com/mikrotik-hap-obzor-vseh-modelej-harakteristiki-i-nastrojka-routera/" target="_blank" rel="noopener" data-wpil-monitor-id="2050">MikroTik — это не просто роутер</a> за 50 евро. Это полноценная сетевая ОС RouterOS с нативной поддержкой <strong>WireGuard, L2TP/IPsec, IKEv2, SSTP, OpenVPN</strong>. Один раз настроил — и у тебя корпоративный VPN уровня Cisco. Только без ценника Cisco.
</p>
<p>
В этой статье — только практика. Без введения на 3000 слов. Каждый протокол — свой раздел, своя последовательность команд, свои грабли.
</p>
<p><strong>Что получишь на выходе:</strong></p>
<ul>
<li>Работающий VPN-сервер под любой протокол.</li>
<li><a href="https://it-apteka.com/dhcp-options-v-cisco-i-mikrotik-option-12-42-43-60-66-67-82-primery-nastrojki/" title="DHCP Options в Cisco и MikroTik: Option 12, 42, 43, 60, 66, 67, 82 - примеры настройки" target="_blank" rel="noopener" data-wpil-monitor-id="1460">MikroTik как VPN-клиент —</a> для подключения к внешнему VPN или другому офису.</li>
<li>Гибкую маршрутизацию: Split Tunnel, Policy Routing.</li>
<li>Разбор ошибок 789, 809 и проблем с MTU.</li>
<li>Готовые <a href="https://it-apteka.com/docker-compose-ustanovka-komandy-i-nastrojka-kontejnerov/" title="Docker Compose - установка, команды и настройка контейнеров" target="_blank" rel="noopener" data-wpil-monitor-id="1461">команды CLI —</a> копируй и вставляй.</li>
</ul>
"ℹ️
<br />
Все команды проверены на RouterOS 7.x. На 6.x — большинство работает, но WireGuard доступен только с версии 7.1. Обновиться: /system package update install<br />
<p><strong>Навигация по протоколу — иди сразу куда нужно:</strong></p>
<table>
<thead>
<tr>
<th>Что нужно</th>
<th>Куда</th>
</tr>
</thead>
<tbody>
<tr>
<td>Настроить WireGuard-сервер</td>
<td><a href="#wireguard">→ Раздел WireGuard</a></td>
</tr>
<tr>
<td>Настроить L2TP/IPsec</td>
<td><a href="#l2tp">→ Раздел L2TP/IPsec</a></td>
</tr>
<tr>
<td>Настроить IKEv2</td>
<td><a href="#ikev2">→ Раздел IKEv2</a></td>
</tr>
<tr>
<td>MikroTik как клиент VPN</td>
<td><a href="#client">→ Раздел «Клиент»</a></td>
</tr>
<tr>
<td>VPN не работает / ошибка 789/809</td>
<td><a href="#troubleshooting">→ Troubleshooting</a></td>
</tr>
</tbody>
</table>
<p><!-- ============================================================ --></p>
<h2>Выбор протокола: WireGuard vs L2TP/IPsec vs IKEv2 vs SSTP</h2>
<p><!-- ============================================================ --></p>
<p>
Прежде чем лезть в консоль — выбери протокол. Это как антибиотик: широкий спектр не всегда лучшее решение. У каждого — своё показание.
</p>
<table>
<thead>
<tr>
<th>Протокол</th>
<th>Скорость</th>
<th>Безопасность</th>
<th>Сложность</th>
<th>Поддержка клиентов</th>
<th>Когда брать</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>WireGuard</strong></td>
<td>🔥 Высокая</td>
<td>Высокая</td>
<td>Средняя</td>
<td>Win 10+, Linux, macOS, iOS, Android</td>
<td>Выбор №1 в 2026</td>
</tr>
<tr>
<td><strong>L2TP/IPsec</strong></td>
<td>Средняя</td>
<td>Высокая</td>
<td>Средняя</td>
<td>Все ОС из коробки</td>
<td>Корпоративный парк <a class="wpil_keyword_link" href="https://it-apteka.com/category/windows-server/" target="_blank" rel="noopener" title="Windows Server" data-wpil-keyword-link="linked" data-wpil-monitor-id="1454">Windows</a> без доп. ПО</td>
</tr>
<tr>
<td><strong>IKEv2</strong></td>
<td>Высокая</td>
<td>Очень высокая</td>
<td>Высокая (сертификаты)</td>
<td>Win 7+, iOS, Android (с приложением)</td>
<td>Мобильные клиенты, частая смена сетей</td>
</tr>
<tr>
<td><strong>SSTP</strong></td>
<td>Средняя</td>
<td>Высокая</td>
<td>Средняя</td>
<td>Только Windows нативно</td>
<td>Заблокированы стандартные порты VPN</td>
</tr>
<tr>
<td><strong>PPTP</strong></td>
<td>Быстрая</td>
<td>Дыры везде</td>
<td>Простая</td>
<td>Везде</td>
<td>Не использовать.</td>
</tr>
</tbody>
</table>
<p>
<strong>Нет времени думать — бери WireGuard.</strong> Если клиенты — Windows без стороннего ПО — бери L2TP/IPsec. Едут в командировки, часто теряют связь — IKEv2. Всё заблокировано, только 443 живой — SSTP.
</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 TD
A["Нужен VPN на MikroTik"] --> B{"Клиенты\nбез доп. ПО?"}
B -->|Да| C{"Только Windows?"}
B -->|Нет| D["WireGuard\nUDP 51820"]
C -->|Да| E["L2TP/IPsec\nUDP 500/4500"]
C -->|Нет, мобильные| F["IKEv2\nUDP 500/4500"]
D --> G["Быстро. Безопасно.\nНастраивается за 10 минут"]
E --> H["Работает из коробки\nна всех ОС"]
F --> I["Держит сессию\nпри смене 4G/Wi-Fi"]
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style D fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style E fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style F fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style G fill:#f0fdf4,stroke:#22c55e,stroke-width:2px,color:#15803d
style H fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style I fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e40af
</pre>
<p><!-- ============================================================ --></p>
<h2>Подготовка: что нужно до начала</h2>
<p><!-- ============================================================ --></p>
<p>
Прежде чем крутить конфиги — проверь аптечку. Без этого лечение не начнём.
</p>
"✅
<br />
— RouterOS 7.x: проверь командой /system resource print<br />
— Белый (публичный) IP на WAN-интерфейсе. Нет — нужен DDNS.<br />
— WinBox или SSH/Telnet доступ к CLI.<br />
— Знаешь свою топологию: LAN (например 192.168.88.0/24), WAN-интерфейс (например ether1).<br />
— Провайдер не закрывает UDP 500, 4500. У части ISP это закрыто по умолчанию.<br />
<h3>Нет статического IP? Включи DDNS</h3>
<p>
MikroTik умеет в динамический DNS из коробки. Включается одной командой:
</p>
<pre><code class="language-bash">
/ip cloud set ddns-enabled=yes
/ip cloud print
</code></pre>
<p>
В поле <code>dns-name</code> появится адрес вида <code>xxxxxxxx.sn.mynetname.net</code>. Вот его и давай клиентам вместо IP.
</p>
"⚠️
<br />
Без этого VPN-клиенты не увидят твою локальную сеть. Проверь и включи: /ip settings set ip-forward=yes<br />
<h3>Стоишь за CGNAT провайдера?</h3>
<p>
Если роутер за двойным NAT — VPN-сервер на нём не поднять. Провайдер просто не пустит трафик. Вариант один: поднять VPN на VPS с белым IP, MikroTik подключается к нему как клиент. Об этом — в разделе <a href="#client">«MikroTik как клиент»</a>.
</p>
Белый IP: что это и где взять
<p><!-- ============================================================ --></p>
<h2 id="l2tp">Настройка L2TP/IPsec VPN-сервера на MikroTik</h2>
<p><!-- ============================================================ --></p>
<p>
L2TP/IPsec — проверенный тяжеловес. Протокол из тех, что знал ещё до когда ты пришёл в профессию. Встроен в Windows, macOS, iOS, Android. Ставить ничего не надо — директор сам подключится из дома по инструкции на двух листах А4. Из минусов — двойная инкапсуляция (L2TP поверх IPsec) съедает немного скорости и CPU. Для офисных задач это не заметно.
</p>
<h3>Шаг 1: IP-пул для клиентов</h3>
<pre><code class="language-bash">
/ip pool add name=vpn-pool ranges=192.168.200.2-192.168.200.254
</code></pre>
<h3>Шаг 2: PPP-профиль</h3>
<pre><code class="language-bash">
/ppp profile add name=vpn-profile \
local-address=192.168.200.1 \
remote-address=vpn-pool \
dns-server=8.8.8.8,1.1.1.1 \
use-encryption=yes
</code></pre>
<h3>Шаг 3: Пользователи</h3>
<pre><code class="language-bash">
/ppp secret add name=user1 password=SuperSecurePass123 profile=vpn-profile service=l2tp
/ppp secret add name=user2 password=AnotherPass456 profile=vpn-profile service=l2tp
</code></pre>
"🚨
<br />
Никакого password=123456. Минимум 12 символов, буквы + цифры + спецсимволы. L2TP с weak-паролями ломают брутфорсом за часы. Там снаружи не скучают.<br />
<h3>Шаг 4: Включение L2TP-сервера</h3>
<pre><code class="language-bash">
/interface l2tp-server server set enabled=yes \
default-profile=vpn-profile \
use-ipsec=required \
ipsec-secret=YourIPsecPreSharedKey2026
</code></pre>
<p>
Параметр <code>use-ipsec=required</code> — только зашифрованные соединения. Значение <code>yes</code> разрешает и без IPsec. Не надо так.
</p>
<h3>Шаг 5: Алгоритмы шифрования IPsec</h3>
<p>
RouterOS создаёт IPsec-политику автоматически. Но лучше задай явно — некоторые клиенты не договариваются с дефолтными настройками:
</p>
<pre><code class="language-bash">
/ip ipsec proposal set [ find default=yes ] \
auth-algorithms=sha256 \
enc-algorithms=aes-256-cbc \
pfs-group=modp2048
</code></pre>
<h3>Шаг 6: Открытие портов в Firewall</h3>
<p>
Без этого клиенты будут молча висеть и не подключаться. L2TP/IPsec требует четырёх правил:
</p>
<pre><code class="language-bash">
# IKE - обмен ключами IPsec
/ip firewall filter add chain=input protocol=udp dst-port=500 \
action=accept comment="IPsec IKE" place-before=0
# NAT-T - IPsec за NAT
/ip firewall filter add chain=input protocol=udp dst-port=4500 \
action=accept comment="IPsec NAT-T" place-before=0
# L2TP
/ip firewall filter add chain=input protocol=udp dst-port=1701 \
action=accept comment="L2TP" place-before=0
# ESP протокол
/ip firewall filter add chain=input protocol=ipsec-esp \
action=accept comment="IPsec ESP" place-before=0
</code></pre>
<h3>Шаг 7: NAT для VPN-клиентов</h3>
<pre><code class="language-bash">
/ip firewall nat add chain=srcnat src-address=192.168.200.0/24 \
action=masquerade out-interface=ether1 comment="NAT for VPN clients"
</code></pre>
<p>
Замени <code>ether1</code> на свой WAN-интерфейс.
</p>
<h3>Шаг 8: Доступ к локальной сети</h3>
<p>
Хочешь, чтобы клиенты видели принтеры, NAS, 1С — добавь маршрут в профиль:
</p>
<pre><code class="language-bash">
/ppp profile set vpn-profile routes=192.168.88.0/24
</code></pre>
"✅
<br />
Windows: Параметры → VPN → Добавить VPN → Тип: L2TP/IPsec с общим ключом. Введи IP роутера, логин, пароль и IPsec-ключ. Соединение должно установиться за 5–15 секунд.<br />
<p><!-- ============================================================ --></p>
<h2 id="wireguard">Настройка WireGuard VPN-сервера на MikroTik</h2>
<p><!-- ============================================================ --></p>
<p>
WireGuard — 4000 строк кода против 600 000 у OpenVPN. Меньше кода — меньше поверхности атаки. Меньше поверхности атаки — меньше инцидентов в 3 ночи. В RouterOS появился с версии 7.1 и с тех пор стал де-факто стандартом для новых установок. Аутентификация — только по публичным ключам. Никаких логинов-паролей. Это не баг — это фича.
</p>
<h3>Шаг 1: Создание интерфейса</h3>
<pre><code class="language-bash">
/interface wireguard add name=wg0 listen-port=51820 mtu=1420
</code></pre>
<p>
Сразу запиши публичный ключ <a href="https://it-apteka.com/server-aktivacii-windows-podkljuchenie-nastrojka-i-reshenie-oshibok-kms/" title="Сервер активации Windows: подключение, настройка и решение ошибок KMS" target="_blank" rel="noopener" data-wpil-monitor-id="1462">сервера — он нужен для настройки</a> клиентов:
</p>
<pre><code class="language-bash">
/interface wireguard print detail
# Поле public-key - это серверный ключ для клиентских конфигов
</code></pre>
<h3>Шаг 2: IP-адрес интерфейса</h3>
<pre><code class="language-bash">
/ip address add address=10.10.10.1/24 interface=wg0
</code></pre>
<h3>Шаг 3: Добавление клиентов (peers)</h3>
<p>
Сначала генерируй ключи на стороне клиента. В официальном WireGuard-клиенте (Windows/macOS) — кнопка «Добавить туннель» → «Создать из пустого». Берёшь публичный ключ <a href="https://it-apteka.com/kakoj-vpn-server-ustanovit-na-ubuntu-dlja-nativnogo-podkljuchenija/" title="Настройка IKEv2 VPN сервера на Ubuntu 24.04: StrongSwan без лишних клиентов" target="_blank" rel="noopener" data-wpil-monitor-id="2764">клиента и добавляешь на сервере:</a>
</p>
<pre><code class="language-bash">
/interface wireguard peers add \
interface=wg0 \
public-key="CLIENT_PUBLIC_KEY_HERE==" \
allowed-address=10.10.10.2/32 \
comment="user1-laptop"
# Второй клиент
/interface wireguard peers add \
interface=wg0 \
public-key="CLIENT2_KEY==" \
allowed-address=10.10.10.3/32 \
comment="user2-phone"
</code></pre>
<h3>Шаг 4: Firewall</h3>
<pre><code class="language-bash">
# Открываем порт WireGuard
/ip firewall filter add chain=input protocol=udp dst-port=51820 \
action=accept comment="WireGuard" place-before=0
# Форвардинг трафика из WireGuard-сети
/ip firewall filter add chain=forward in-interface=wg0 \
action=accept comment="WG forward" place-before=0
</code></pre>
<h3>Шаг 5: NAT</h3>
<pre><code class="language-bash">
/ip firewall nat add chain=srcnat src-address=10.10.10.0/24 \
action=masquerade out-interface=ether1 comment="WireGuard NAT"
</code></pre>
<h3>Конфиг клиента (Windows / Linux / macOS)</h3>
<p>
Создай файл <code>wg0-client.conf</code>:
</p>
<pre><code class="language-text">
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY_HERE
Address = 10.10.10.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY_HERE
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
</code></pre>
<p>
<code>AllowedIPs = 0.0.0.0/0</code> — Full Tunnel, весь трафик через VPN. Нужен Split Tunnel — замени на <code>192.168.88.0/24, 10.10.10.0/24</code>.
</p>
<h3>Скрипт добавления нового peer</h3>
<pre><code class="language-bash">
:local peerKey "NEW_USER_KEY=="
:local peerIP "10.10.10.5/32"
:local peerComment "new-user"
/interface wireguard peers add \
interface=wg0 \
public-key=$peerKey \
allowed-address=$peerIP \
comment=$peerComment
:log info "WireGuard peer $peerComment added with IP $peerIP"
</code></pre>
<a href="https://it-apteka.com/arp-mikrotik-nastrojka-tablica-proxy-arp-i-reply-only-polnyj-razbor/" title="ARP MikroTik: настройка, таблица, proxy-arp и reply-only - полный разбор" target="_blank" rel="noopener" data-wpil-monitor-id="1456">Настройка VLAN на MikroTik —</a> следующий шаг
<p><!-- ============================================================ --></p>
<h2 id="ikev2">Настройка IKEv2 VPN на MikroTik</h2>
<p><!-- ============================================================ --></p>
<p>
IKEv2 — золотой стандарт для мобильников. Телефон переключается с 4G на Wi-Fi в метро — туннель не рвётся. Для командировочных незаменим.
</p>
<p>
Минус один: нужны сертификаты. Без PKI не обойтись. Многие на этом месте закрывают вкладку и ставят L2TP. Не делай так — разберём по шагам, там ничего страшного.
</p>
<h3>Шаг 1: Создание CA</h3>
<pre><code class="language-bash">
/certificate add name=ca-cert common-name=MikroTik-CA \
key-size=2048 days-valid=3650 key-usage=key-cert-sign,crl-sign
/certificate sign ca-cert ca-certificate=ca-cert name=ca-cert
</code></pre>
<h3>Шаг 2: Серверный сертификат</h3>
<pre><code class="language-bash">
# Замени YOUR_SERVER_IP на реальный IP или FQDN
/certificate add name=server-cert common-name=YOUR_SERVER_IP \
subject-alt-name=IP:YOUR_SERVER_IP \
key-size=2048 days-valid=3650 \
key-usage=digital-signature,key-encipherment,tls-server
/certificate sign server-cert ca-certificate=ca-cert name=server-cert
</code></pre>
<h3>Шаг 3: Клиентский сертификат</h3>
<pre><code class="language-bash">
/certificate add name=client-cert common-name=vpn-client \
key-size=2048 days-valid=3650 key-usage=tls-client
/certificate sign client-cert ca-certificate=ca-cert name=client-cert
</code></pre>
<h3>Шаг 4: IPsec — профиль, proposal, peer</h3>
<pre><code class="language-bash">
/ip ipsec profile add name=ike2-profile \
hash-algorithm=sha256 enc-algorithm=aes-256 \
dh-group=modp2048 dpd-interval=2m dpd-maximum-failures=5
/ip ipsec proposal add name=ike2-proposal \
auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp2048
/ip ipsec mode-config add name=ike2-mode-config \
address=192.168.201.0/24 address-pool=vpn-pool system-dns=no
/ip ipsec policy group add name=ike2-group
/ip ipsec policy add src-address=0.0.0.0/0 dst-address=0.0.0.0/0 \
proposal=ike2-proposal group=ike2-group template=yes
/ip ipsec peer add name=ike2-peer address=0.0.0.0/0 \
exchange-mode=ike2 certificate=server-cert \
send-initial-contact=yes profile=ike2-profile \
mode-config=ike2-mode-config policy-template-group=ike2-group \
passive=yes notrack-chain=input
</code></pre>
<h3>Шаг 5: Порты Firewall</h3>
<pre><code class="language-bash">
/ip firewall filter add chain=input protocol=udp dst-port=500 \
action=accept comment="IKEv2 IKE"
/ip firewall filter add chain=input protocol=udp dst-port=4500 \
action=accept comment="IKEv2 NAT-T"
/ip firewall filter add chain=input protocol=ipsec-esp \
action=accept comment="IKEv2 ESP"
</code></pre>
<h3>Экспорт сертификатов для клиентов</h3>
<pre><code class="language-bash">
/certificate export-certificate ca-cert type=pem
/certificate export-certificate client-cert type=pkcs12 export-passphrase=CertPassword123
# Файлы появятся в /Files - скачай через WinBox (Files → ПКМ → Download)
</code></pre>
<p><!-- ============================================================ --></p>
<h2 id="client">MikroTik как VPN-клиент</h2>
<p><!-- ============================================================ --></p>
<p>
Иногда задача обратная: не принимать подключения, а самому подключиться к VPN-серверу. Все устройства в <a class="wpil_keyword_link" href="https://it-apteka.com/category/networks/" target="_blank" rel="noopener" title="Сети" data-wpil-keyword-link="linked" data-wpil-monitor-id="1455">сети</a> уходят в интернет через VPS в другой стране — или два офиса связываются через туннель без выделенной линии. Каналы связи дорогие, а WireGuard бесплатный. Математика простая. Вот как это настраивается.
</p>
<h3>Вариант А: WireGuard-клиент</h3>
<pre><code class="language-bash">
# Создаём клиентский интерфейс
/interface wireguard add name=wg-client listen-port=51821 mtu=1420
# Смотрим свой публичный ключ - его нужно добавить на сервере как peer
/interface wireguard print detail
# Добавляем серверный peer
/interface wireguard peers add \
interface=wg-client \
public-key="SERVER_PUBLIC_KEY==" \
endpoint-address=SERVER_IP \
endpoint-port=51820 \
allowed-address=0.0.0.0/0 \
persistent-keepalive=25
# Назначаем IP, который выдал сервер
/ip address add address=10.10.10.100/24 interface=wg-client
</code></pre>
<h3>Вариант Б: L2TP-клиент</h3>
<pre><code class="language-bash">
/interface l2tp-client add name=l2tp-to-office \
connect-to=OFFICE_VPN_SERVER_IP \
user=vpn-user password=vpn-password \
use-ipsec=yes ipsec-secret=SharedKey123 \
profile=default disabled=no
</code></pre>
<h3>Маршрутизация через туннель</h3>
<pre><code class="language-bash">
# Весь трафик через VPN
/ip route add gateway=wg-client distance=1 comment="VPN default route"
# Только корпоративная подсеть
/ip route add dst-address=192.168.1.0/24 gateway=wg-client
</code></pre>
<p><!-- ============================================================ --></p>
<h2>Маршрутизация VPN-трафика: Policy Routing и Split Tunnel</h2>
<p><!-- ============================================================ --></p>
<p>
Вот тут начинается интересное. И вот тут обычно ломают. Задача: одни устройства ходят через VPN, другие — напрямую. Или весь корпоративный трафик в туннель, Netflix — мимо.
</p>
<h3>Метод 1: Policy Routing по IP устройства</h3>
<p>
Ноутбук <code>192.168.88.50</code> идёт через VPN, все остальные — напрямую:
</p>
<pre><code class="language-bash">
# Таблица маршрутизации
/routing table add name=vpn-table fib
# Маршрут через WireGuard в эту таблицу
/ip route add dst-address=0.0.0.0/0 gateway=wg0 routing-table=vpn-table
# Правило: трафик с ноутбука → vpn-table
/routing rule add src-address=192.168.88.50/32 table=vpn-table action=lookup
# NAT для трафика из vpn-table
/ip firewall nat add chain=srcnat src-address=192.168.88.50/32 \
action=masquerade out-interface=wg0 comment="Policy NAT for laptop"
</code></pre>
<h3>Метод 2: Mangle — маркировка трафика</h3>
<pre><code class="language-bash">
/ip firewall mangle add chain=prerouting \
src-address=192.168.88.50/32 \
action=mark-routing new-routing-mark=use-vpn passthrough=yes
/ip route add dst-address=0.0.0.0/0 gateway=wg0 \
routing-mark=use-vpn distance=1
</code></pre>
<h3>Split Tunnel: только корпоративный трафик через VPN</h3>
<p>
Для L2TP/PPP-клиентов — через профиль:
</p>
<pre><code class="language-bash">
/ppp profile set vpn-profile routes=192.168.88.0/24,10.0.0.0/8
</code></pre>
<p>
Для WireGuard-клиентов — в конфиге клиента меняй <code>AllowedIPs</code>:
</p>
<pre><code class="language-text">
# Вместо AllowedIPs = 0.0.0.0/0
AllowedIPs = 192.168.88.0/24, 10.10.10.0/24
</code></pre>
<p><!-- ============================================================ --></p>
<h2>Безопасность VPN: изоляция клиентов</h2>
<p><!-- ============================================================ --></p>
<p>
Поднял VPN — хорошо. Теперь сделай так, чтобы клиенты не лезли друг к другу.
</p>
<h3>Запрет общения VPN-клиентов между собой</h3>
<pre><code class="language-bash">
# Для L2TP/PPP
/ip firewall filter add chain=forward \
in-interface=l2tp-server out-interface=l2tp-server \
action=drop comment="Block inter-VPN traffic L2TP"
# Для WireGuard
/ip firewall filter add chain=forward \
in-interface=wg0 out-interface=wg0 \
action=drop comment="Block WG client-to-client"
</code></pre>
<h3>Ограничение доступа к конкретным ресурсам</h3>
<pre><code class="language-bash">
# VPN-клиенты видят только файловый сервер 192.168.88.10
/ip firewall filter add chain=forward \
src-address=192.168.200.0/24 dst-address=!192.168.88.10 \
in-interface=l2tp-server action=drop \
comment="VPN clients - only file server"
</code></pre>
<h3>Одна сессия на пользователя</h3>
<pre><code class="language-bash">
/ppp secret set user1 sessions-limit=1
</code></pre>
<p><!-- ============================================================ --></p>
<h2>Проверка подключений: как убедиться что всё работает</h2>
<p><!-- ============================================================ --></p>
<p>
Настроил — проверь. Вот команды которые реально показывают что происходит.
</p>
<pre><code class="language-bash">
# Активные L2TP-сессии
/ppp active print
# Состояние WireGuard peers - last handshake, rx/tx байты
/interface wireguard peers print detail
# Логи L2TP и IPsec в реальном времени
/log print follow where topics~"l2tp" or topics~"ipsec"
# Пинг из роутера через WireGuard-туннель
/ping 10.10.10.2 interface=wg0 count=4
# Текущие маршруты
/ip route print where active=yes
# Состояние NAT - убедись что правило активно
/ip firewall nat print stats
</code></pre>
<pre class="mermaid">
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#f8fafc',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'noteBkgColor': '#fefce8',
'noteTextColor': '#713f12',
'noteBorderColor': '#fbbf24',
'actorBkg': '#f8fafc',
'actorBorder': '#94a3b8',
'actorTextColor': '#1e293b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'sequence': {
'mirrorActors': false,
'messageAlign': 'center',
'actorMargin': 120,
'width': 160,
'noteMargin': 12
}
}}%%
sequenceDiagram
participant C as Клиент
participant WAN as MikroTik WAN
participant TUN as Туннель wg0/l2tp
participant LAN as LAN 192.168.88.0/24
C->>WAN: Handshake (UDP 51820 / UDP 500+4500)
WAN->>TUN: Создаёт туннель
TUN->>C: Выдаёт IP из пула
Note over C,TUN: VPN установлен
C->>TUN: Трафик (зашифрован)
TUN->>LAN: Форвард + NAT
LAN->>TUN: Ответ
TUN->>C: Ответ (зашифрован)
</pre>
<p><!-- ============================================================ --></p>
<h2 id="troubleshooting">Типичные ошибки при настройке VPN на MikroTik и их лечение</h2>
<p><!-- ============================================================ --></p>
<p>
Добро пожаловать в палату неотложной помощи. Разбираем по симптомам. Без «перезагрузи и посмотри» <a href="https://it-apteka.com/nslookup-i-dig-diagnostika-dns-dlja-sistemnogo-administratora/" title="nslookup и dig - диагностика DNS для системного администратора" target="_blank" rel="noopener" data-wpil-monitor-id="1457">— это не диагностика</a>, это молитва. У нас тут другой подход: смотрим логи, изолируем компонент, фиксим.
</p>
<h3>Ошибка 789: The L2TP connection attempt failed</h3>
<p>
IPsec не может установить соединение. Три основные причины: неверный Pre-Shared Key, заблокированы UDP 500/4500, или клиент и сервер не договорились по алгоритмам шифрования.
</p>
"Диагностика
<br />
1. Проверь что IPsec-ключ совпадает на сервере и клиенте — copy-paste, без пробелов.<br />
2. Убедись что UDP 500 и 4500 открыты в firewall.<br />
3. Проверь логи IPsec — там будет точная причина.<br />
4. Попробуй упростить алгоритмы шифрования.<br />
<pre><code class="language-bash">
# Смотрим логи IPsec в реальном времени - пока клиент пытается подключиться
/log print follow where topics~"ipsec"
# Проверяем установленные SA (должны появиться при подключении)
/ip ipsec installed-sa print
# Проверяем что порты открыты
/ip firewall filter print where dst-port=500 or dst-port=4500
# Упрощаем алгоритмы - добавляем sha1 и aes-128 для совместимости
/ip ipsec proposal set [ find default=yes ] \
enc-algorithms=aes-256-cbc,aes-128-cbc \
auth-algorithms=sha256,sha1
</code></pre>
<h3>Ошибка 809: VPN-подключение невозможно установить</h3>
"🚨
<br />
Это почти всегда CGNAT. IPsec и NAT — плохая компания. Нужно включить NAT Traversal на роутере. И добавить ключ реестра на Windows-клиенте.<br />
<pre><code class="language-bash">
# Включаем NAT Traversal
/ip ipsec profile set [ find default=yes ] nat-traversal=yes
</code></pre>
<p>
На Windows-клиенте дополнительно добавь ключ реестра (запуск от администратора):
</p>
<pre><code class="language-bash">
# PowerShell - запустить от администратора
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\PolicyAgent" `
-Name "AssumeUDPEncapsulationContextOnSendRule" -Value 2 -Type DWord
# После - перезагрузка Windows обязательна
</code></pre>
<h3>Туннель работает, но большие пакеты теряются (сайты не открываются)</h3>
<p>
Классика. VPN подключён, пинг проходит, но браузер зависает или открывает страницы очень медленно. Причина — MTU слишком большой, пакеты фрагментируются или дропаются.
</p>
<pre><code class="language-bash">
# WireGuard - рекомендуемый MTU 1420
/interface wireguard set wg0 mtu=1420
# L2TP - снижаем до 1400
/interface l2tp-server server set max-mtu=1400 max-mru=1400
# MSS Clamping - автоматическая коррекция MTU для TCP
/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn \
in-interface=wg0 action=change-mss \
new-mss=clamp-to-pmtu comment="MSS Clamping WireGuard"
</code></pre>
<h3>WireGuard: peer подключился, но трафик не идёт</h3>
<pre><code class="language-bash">
# Смотрим на rx/tx bytes у peer
# Если tx растёт, а rx=0 - проблема на стороне клиента (его маршруты)
# Если оба нули - нет handshake
/interface wireguard peers print detail
# Проверяем маршруты
/ip route print where active=yes
# Проверяем NAT
/ip firewall nat print stats
# Пинг из роутера напрямую через туннель
/ping 10.10.10.2 interface=wg0 count=4
</code></pre>
<h3>IKEv2: ошибка «Certificate not trusted»</h3>
<pre><code class="language-bash">
# Проверяем что CA-сертификат подписан корректно
/certificate print detail where name=ca-cert
# Поле "trusted" должно быть yes
# Если нет - подписываем вручную
/certificate sign ca-cert ca-certificate=ca-cert name=ca-cert
# Проверяем что серверный сертификат подписан CA
/certificate print detail where name=server-cert
# Поле "ca" должно указывать на ca-cert
# Убедись что subject-alt-name в сертификате совпадает с IP/FQDN, к которому подключается клиент
/certificate print detail where name=server-cert
# Ищи строку "subject-alt-name"
</code></pre>
<h3>L2TP: клиент подключился, но не пингует LAN</h3>
<pre><code class="language-bash">
# Проверяем что ip-forward включён
/ip settings print | grep ip-forward
# Должно быть: ip-forward: yes
# Проверяем маршрут до LAN в профиле
/ppp profile print detail where name=vpn-profile
# Должны быть routes=192.168.88.0/24
# Проверяем активную сессию - какой IP получил клиент
/ppp active print detail
# Пинг из роутера к клиенту
/ping 192.168.200.2 count=4
</code></pre>
<h3>WireGuard не стартует после перезагрузки роутера</h3>
<pre><code class="language-bash">
# Проверяем что интерфейс не disabled
/interface wireguard print
# Колонка "D" - если стоит, интерфейс отключён
# Включаем
/interface wireguard enable wg0
# Проверяем автозапуск - WireGuard поднимается автоматически если не disabled
# Убедись что disable=no
/interface wireguard set wg0 disabled=no
</code></pre>
<p><!-- ============================================================ --></p>
<h2>AdGuard + VPN на MikroTik: DNS-фильтрация поверх туннеля</h2>
<p><!-- ============================================================ --></p>
<p>
Отдельная история — когда хочется не просто шифровать трафик, но и фильтровать рекламу и трекеры для всей сети. Два пути.
</p>
<h3>Вариант 1: DoH (DNS over HTTPS) прямо на MikroTik</h3>
<pre><code class="language-bash">
# RouterOS 7.x поддерживает DoH нативно
/ip dns set use-doh-server=https://dns.adguard.com/dns-query \
verify-doh-cert=yes allow-remote-requests=yes
# Убираем обычные DNS-серверы
/ip dns set servers=""
</code></pre>
<h3>Вариант 2: AdGuard Home на VPS + DNS через WireGuard</h3>
<p>
На VPS ставишь AdGuard Home, он слушает на порту 53. В <a href="https://it-apteka.com/qos-v-mikrotik-nastrojka-prioritizacii-i-ogranichenij-skorosti/" title="QoS в MikroTik: настройка приоритизации и ограничений скорости" target="_blank" rel="noopener" data-wpil-monitor-id="1458">настройках WireGuard-клиента на MikroTik</a> прописываешь его IP как DNS-сервер:
</p>
<pre><code class="language-bash">
# На MikroTik - DNS через туннель на VPS с AdGuard
/ip dns set servers=10.10.10.1 allow-remote-requests=yes
# 10.10.10.1 - IP WireGuard-интерфейса на VPS где стоит AdGuard
</code></pre>
<p>
Все DNS-запросы клиентов пойдут зашифрованным туннелем на AdGuard. Реклама фильтруется до того как попадает в браузер.
</p>
<p><!-- ============================================================ --></p>
<h2>VLESS на MikroTik: что реально можно сделать</h2>
<p><!-- ============================================================ --></p>
<p>
Честный ответ: VLESS — не нативный протокол RouterOS. Это протокол из экосистемы Xray/V2Ray для обхода DPI. RouterOS его не поддерживает из коробки.
</p>
<p>
В RouterOS 7.x есть Container — запуск <a class="wpil_keyword_link" href="https://it-apteka.com/tag/docker/" target="_blank" rel="noopener" title="Docker" data-wpil-keyword-link="linked" data-wpil-monitor-id="1452">Docker</a>-образов прямо на роутере. Работает только на устройствах с достаточным RAM: hAP ax², CCR, RB5009.
</p>
"⚠️
<br />
Это задача для инженеров с опытом. Требует внешнего хранилища (USB/SD), <a href="https://it-apteka.com/openmediavault-8-ustanovka-i-nastrojka-nas-na-debian-docker-raid-smb-https/" title="OpenMediaVault 8: установка и настройка NAS на Debian (Docker, RAID, SMB, HTTPS)" target="_blank" rel="noopener" data-wpil-monitor-id="1451">настройки veth-интерфейсов и понимания Docker</a>. Для простого обхода блокировок — проще поднять Xray на отдельном VPS и подключить MikroTik через WireGuard.<br />
<pre><code class="language-bash">
# Включаем поддержку контейнеров (требует перезагрузки)
/system/device-mode/update container=yes
# После перезагрузки - устанавливаем пакет container
# Скачай с mikrotik.com → Extra Packages для своей архитектуры
# Добавляем контейнер с Xray
/container add remote-image=teddysun/xray interface=veth1 \
logging=yes root-dir=disk1/xray \
cmd="/usr/bin/xray run -config /etc/xray/config.json"
</code></pre>
<p>
Если цель — обход блокировок для всей сети: подними Xray/VLESS на VPS, подключи MikroTik к нему через WireGuard, настрой Policy Routing для нужных устройств. Это надёжнее и проще в обслуживании.
</p>
DynDNS на MikroTik: полный гайд
<p><!-- ============================================================ --></p>
<h2>Профилактика: как не сломать снова</h2>
<p><!-- ============================================================ --></p>
<p>
Один раз правильно настроить — мало. Нужно чтобы это работало через полгода после того как ты об этом забудешь.
</p>
<h3>Мониторинг VPN-туннелей</h3>
<pre><code class="language-bash">
# Скрипт проверки - добавь в Scheduler с запуском каждые 5 минут
/system scheduler add name=check-vpn interval=5m \
on-event={
:if ([/interface wireguard get wg0 running] = false) do={
/log warning "WireGuard wg0 is DOWN"
# Здесь можно добавить отправку уведомления в Telegram
}
}
</code></pre>
<h3>Резервная копия конфига</h3>
<pre><code class="language-bash">
# Экспорт конфига в файл
/export file=vpn-backup-2026
# Или полный бэкап (включая пароли)
/system backup save name=full-backup-vpn
</code></pre>
Автобэкап MikroTik в <a class="wpil_keyword_link" href="https://t.me/it_apteka_com/34" target="_blank" rel="noopener" title="Telegram" data-wpil-keyword-link="linked" data-wpil-monitor-id="1453">Telegram</a> — настройка за 20 минут
<h3>Автоматическое восстановление L2TP-клиента</h3>
<pre><code class="language-bash">
# Если используешь MikroTik как клиент - включи dial-on-demand
/interface l2tp-client set l2tp-to-office dial-on-demand=no
# dial-on-demand=no - всегда держит соединение активным
</code></pre>
<p><!-- ============================================================ --></p>
<h2 id="faq">FAQ — часто задаваемые вопросы</h2>
<p><!-- ============================================================ --></p>
<h3>Почему L2TP/IPsec не подключается с первого раза?</h3>
<p>
Чаще всего три причины. Первая — неверный Pre-Shared Key: один лишний пробел и всё. Вторая — UDP 500 или 4500 заблокированы провайдером или файрволом. Третья — Windows-клиент за NAT: нужен ключ реестра <code>AssumeUDPEncapsulationContextOnSendRule=2</code> и перезагрузка. Смотри в <a href="#troubleshooting">раздел Troubleshooting</a> — там пошагово.
</p>
<h3>Как проверить что VPN-туннель действительно работает?</h3>
<pre><code class="language-bash">
# WireGuard - смотрим last-handshake и трафик
/interface wireguard peers print detail
# L2TP - активные сессии
/ppp active print
# С клиента - проверь свой внешний IP
# Должен стать IP роутера, а не провайдерский
</code></pre>
<h3>Что если у MikroTik нет белого IP (CGNAT)?</h3>
<p>
Поднять VPN-сервер напрямую не получится — провайдер не пустит входящий трафик. Варианта два: купить статический IP у провайдера (обычно 3–10$/мес.) или арендовать VPS с белым IP и поднять WireGuard-сервер там. <a href="https://it-apteka.com/nastrojka-wireguard-na-vps-i-podkljuchenie-mikrotik-kak-klienta-poshagovoe-rukovodstvo/" title="Настройка WireGuard на VPS и подключение MikroTik как клиента: пошаговое руководство" target="_blank" rel="noopener" data-wpil-monitor-id="1551">MikroTik подключается к VPS как клиент</a> — все устройства в сети получают VPN-выход через него.
</p>
<h3>Сколько клиентов выдержит MikroTik с WireGuard?</h3>
<p>
Зависит от железа. На hAP ac² (ARM, 128MB RAM) — реально 10–20 активных туннелей при умеренном трафике. На RB4011 или RB5009 — 50+ без проблем. Узкое место — CPU при шифровании. Смотри загрузку: <code>/system resource print</code>.
</p>
<h3>Можно ли использовать один MikroTik как сервер и как клиент одновременно?</h3>
<p>
Да. Создаёшь два разных WireGuard-интерфейса: <code>wg0</code> — серверный (принимает клиентов), <code>wg-client</code> — клиентский (подключается к внешнему серверу). Разводишь маршрутами. Работает.
</p>
<h3>Почему после подключения VPN не виден интернет (только локальная сеть)?</h3>
<p>
Два места смотреть. Первое — NAT: убедись что есть правило <code>masquerade</code> для VPN-подсети через WAN-интерфейс. Второе — <code>AllowedIPs</code> в конфиге клиента: если там только <a href="https://it-apteka.com/qwen3-coder-next-besplatnyj-ii-dlja-kodinga-lokalno-ustanovka-cli-i-sravnenie-agentov-2026/" title="Qwen3 Coder Next: бесплатный ИИ для кодинга локально - установка, CLI и сравнение агентов 2026" target="_blank" rel="noopener" data-wpil-monitor-id="1459">локальные подсети —</a> интернет и не пойдёт. Для Full Tunnel нужно <code>AllowedIPs = 0.0.0.0/0</code>.
</p>
<h3>Как добавить нового WireGuard-пользователя без перезапуска сервера?</h3>
<p>
WireGuard не требует перезапуска. Просто добавь новый peer — он начнёт работать немедленно:
</p>
<pre><code class="language-bash">
/interface wireguard peers add \
interface=wg0 \
public-key="NEW_CLIENT_PUBLIC_KEY==" \
allowed-address=10.10.10.10/32 \
comment="new-employee"
</code></pre>
<p><!-- ============================================================ --></p>
<h2>Итоги</h2>
<p><!-- ============================================================ --></p>
<p>
Ты прошёл весь путь: от выбора протокола до рабочего туннеля. Если всё заработало с первого раза — поздравляю, ты в меньшинстве. WireGuard — для нового, L2TP/IPsec — для корпоративных Windows-парков без стороннего ПО, IKEv2 — для мобильников в командировках. Каждый протокол — свои порты, свой firewall, своя логика.
</p>
<p>
Главное что нужно помнить: VPN на MikroTik — это не магия и не чёрный ящик. Это набор конфигурируемых компонентов: интерфейс, профиль, пользователи, firewall, NAT, маршруты. Сломалось — смотри логи, проверяй каждый компонент по цепочке. Отлаживается за 15 минут если знаешь где смотреть.
</p>
"✅
<br />
Опиши симптом в комментариях: какой протокол, какая ошибка, что показывает /log print. Постараюсь ответить по делу, без «перезагрузи и посмотри».<br />
<p>
NTP на MikroTik: клиент и <a href="https://it-apteka.com/linux-sip-proksi-server-polnoe-rukovodstvo-po-kamailio-opensips-i-asterisk/" title="Linux SIP прокси сервер: полное руководство по Kamailio, OpenSIPS и Asterisk" target="_blank" rel="noopener" data-wpil-monitor-id="1712">сервер — шпаргалка</a><br />
MikroTik с <a href="https://it-apteka.com/freepbx-ustanovka-i-nastrojka-na-debian-s-nulja-polnoe-rukovodstvo/" target="_blank" rel="noopener" data-wpil-monitor-id="1516">нуля до production — полный</a> курс</p>
⚡ Быстрый ответ
Настройка VPN на MikroTik: создай IP-пул, PPP-профиль и пользователей, включи L2TP-сервер с use-ipsec=required, открой порты UDP 500/4500/1701 и ESP в firewall, добавь NAT для VPN-подсети.
Для WireGuard — создай интерфейс wg0, назначь IP, добавь peer с публичным ключом клиента, открой UDP 51820. Всё это работает на RouterOS 7.x и занимает 15–30 минут.
Сотрудники не могут подключиться к офисной 1С из дома? Три офиса гоняют данные через интернет без шифрования? Провайдер блокирует нужные сервисы?
Знакомо. MikroTik — это не просто роутер за 50 евро. Это полноценная сетевая ОС RouterOS с нативной поддержкой WireGuard, L2TP/IPsec, IKEv2, SSTP, OpenVPN. Один раз настроил — и у тебя корпоративный VPN уровня Cisco. Только без ценника Cisco.
В этой статье — только практика. Без введения на 3000 слов. Каждый протокол — свой раздел, своя последовательность команд, свои грабли.
Что получишь на выходе:
- Работающий VPN-сервер под любой протокол.
- MikroTik как VPN-клиент — для подключения к внешнему VPN или другому офису.
- Гибкую маршрутизацию: Split Tunnel, Policy Routing.
- Разбор ошибок 789, 809 и проблем с MTU.
- Готовые команды CLI — копируй и вставляй.
ℹ️ Версия RouterOS
Все команды проверены на RouterOS 7.x. На 6.x — большинство работает, но WireGuard доступен только с версии 7.1. Обновиться: /system package update install
Навигация по протоколу — иди сразу куда нужно:
Выбор протокола: WireGuard vs L2TP/IPsec vs IKEv2 vs SSTP
Прежде чем лезть в консоль — выбери протокол. Это как антибиотик: широкий спектр не всегда лучшее решение. У каждого — своё показание.
| Протокол |
Скорость |
Безопасность |
Сложность |
Поддержка клиентов |
Когда брать |
| WireGuard |
🔥 Высокая |
Высокая |
Средняя |
Win 10+, Linux, macOS, iOS, Android |
Выбор №1 в 2026 |
| L2TP/IPsec |
Средняя |
Высокая |
Средняя |
Все ОС из коробки |
Корпоративный парк Windows без доп. ПО |
| IKEv2 |
Высокая |
Очень высокая |
Высокая (сертификаты) |
Win 7+, iOS, Android (с приложением) |
Мобильные клиенты, частая смена сетей |
| SSTP |
Средняя |
Высокая |
Средняя |
Только Windows нативно |
Заблокированы стандартные порты VPN |
| PPTP |
Быстрая |
Дыры везде |
Простая |
Везде |
Не использовать. |
Нет времени думать — бери WireGuard. Если клиенты — Windows без стороннего ПО — бери L2TP/IPsec. Едут в командировки, часто теряют связь — IKEv2. Всё заблокировано, только 443 живой — SSTP.
%%{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 TD
A["Нужен VPN на MikroTik"] --> B{"Клиенты\nбез доп. ПО?"}
B -->|Да| C{"Только Windows?"}
B -->|Нет| D["WireGuard\nUDP 51820"]
C -->|Да| E["L2TP/IPsec\nUDP 500/4500"]
C -->|Нет, мобильные| F["IKEv2\nUDP 500/4500"]
D --> G["Быстро. Безопасно.\nНастраивается за 10 минут"]
E --> H["Работает из коробки\nна всех ОС"]
F --> I["Держит сессию\nпри смене 4G/Wi-Fi"]
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style D fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style E fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style F fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style G fill:#f0fdf4,stroke:#22c55e,stroke-width:2px,color:#15803d
style H fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style I fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e40af
Подготовка: что нужно до начала
Прежде чем крутить конфиги — проверь аптечку. Без этого лечение не начнём.
✅ Чеклист подготовки
— RouterOS 7.x: проверь командой /system resource print
— Белый (публичный) IP на WAN-интерфейсе. Нет — нужен DDNS.
— WinBox или SSH/Telnet доступ к CLI.
— Знаешь свою топологию: LAN (например 192.168.88.0/24), WAN-интерфейс (например ether1).
— Провайдер не закрывает UDP 500, 4500. У части ISP это закрыто по умолчанию.
Нет статического IP? Включи DDNS
MikroTik умеет в динамический DNS из коробки. Включается одной командой:
/ip cloud set ddns-enabled=yes
/ip cloud print
В поле dns-name появится адрес вида xxxxxxxx.sn.mynetname.net. Вот его и давай клиентам вместо IP.
⚠️ IP Forwarding - включи до начала
Без этого VPN-клиенты не увидят твою локальную сеть. Проверь и включи: /ip settings set ip-forward=yes
Стоишь за CGNAT провайдера?
Если роутер за двойным NAT — VPN-сервер на нём не поднять. Провайдер просто не пустит трафик. Вариант один: поднять VPN на VPS с белым IP, MikroTik подключается к нему как клиент. Об этом — в разделе «MikroTik как клиент».
Белый IP: что это и где взять
Настройка L2TP/IPsec VPN-сервера на MikroTik
L2TP/IPsec — проверенный тяжеловес. Протокол из тех, что знал ещё до когда ты пришёл в профессию. Встроен в Windows, macOS, iOS, Android. Ставить ничего не надо — директор сам подключится из дома по инструкции на двух листах А4. Из минусов — двойная инкапсуляция (L2TP поверх IPsec) съедает немного скорости и CPU. Для офисных задач это не заметно.
Шаг 1: IP-пул для клиентов
/ip pool add name=vpn-pool ranges=192.168.200.2-192.168.200.254
Шаг 2: PPP-профиль
/ppp profile add name=vpn-profile \
local-address=192.168.200.1 \
remote-address=vpn-pool \
dns-server=8.8.8.8,1.1.1.1 \
use-encryption=yes
Шаг 3: Пользователи
/ppp secret add name=user1 password=SuperSecurePass123 profile=vpn-profile service=l2tp
/ppp secret add name=user2 password=AnotherPass456 profile=vpn-profile service=l2tp
🚨 Безопасность паролей
Никакого password=123456. Минимум 12 символов, буквы + цифры + спецсимволы. L2TP с weak-паролями ломают брутфорсом за часы. Там снаружи не скучают.
Шаг 4: Включение L2TP-сервера
/interface l2tp-server server set enabled=yes \
default-profile=vpn-profile \
use-ipsec=required \
ipsec-secret=YourIPsecPreSharedKey2026
Параметр use-ipsec=required — только зашифрованные соединения. Значение yes разрешает и без IPsec. Не надо так.
Шаг 5: Алгоритмы шифрования IPsec
RouterOS создаёт IPsec-политику автоматически. Но лучше задай явно — некоторые клиенты не договариваются с дефолтными настройками:
/ip ipsec proposal set [ find default=yes ] \
auth-algorithms=sha256 \
enc-algorithms=aes-256-cbc \
pfs-group=modp2048
Шаг 6: Открытие портов в Firewall
Без этого клиенты будут молча висеть и не подключаться. L2TP/IPsec требует четырёх правил:
# IKE - обмен ключами IPsec
/ip firewall filter add chain=input protocol=udp dst-port=500 \
action=accept comment="IPsec IKE" place-before=0
# NAT-T - IPsec за NAT
/ip firewall filter add chain=input protocol=udp dst-port=4500 \
action=accept comment="IPsec NAT-T" place-before=0
# L2TP
/ip firewall filter add chain=input protocol=udp dst-port=1701 \
action=accept comment="L2TP" place-before=0
# ESP протокол
/ip firewall filter add chain=input protocol=ipsec-esp \
action=accept comment="IPsec ESP" place-before=0
Шаг 7: NAT для VPN-клиентов
/ip firewall nat add chain=srcnat src-address=192.168.200.0/24 \
action=masquerade out-interface=ether1 comment="NAT for VPN clients"
Замени ether1 на свой WAN-интерфейс.
Шаг 8: Доступ к локальной сети
Хочешь, чтобы клиенты видели принтеры, NAS, 1С — добавь маршрут в профиль:
/ppp profile set vpn-profile routes=192.168.88.0/24
✅ Проверка L2TP
Windows: Параметры → VPN → Добавить VPN → Тип: L2TP/IPsec с общим ключом. Введи IP роутера, логин, пароль и IPsec-ключ. Соединение должно установиться за 5–15 секунд.
Настройка WireGuard VPN-сервера на MikroTik
WireGuard — 4000 строк кода против 600 000 у OpenVPN. Меньше кода — меньше поверхности атаки. Меньше поверхности атаки — меньше инцидентов в 3 ночи. В RouterOS появился с версии 7.1 и с тех пор стал де-факто стандартом для новых установок. Аутентификация — только по публичным ключам. Никаких логинов-паролей. Это не баг — это фича.
Шаг 1: Создание интерфейса
/interface wireguard add name=wg0 listen-port=51820 mtu=1420
Сразу запиши публичный ключ сервера — он нужен для настройки клиентов:
/interface wireguard print detail
# Поле public-key - это серверный ключ для клиентских конфигов
Шаг 2: IP-адрес интерфейса
/ip address add address=10.10.10.1/24 interface=wg0
Шаг 3: Добавление клиентов (peers)
Сначала генерируй ключи на стороне клиента. В официальном WireGuard-клиенте (Windows/macOS) — кнопка «Добавить туннель» → «Создать из пустого». Берёшь публичный ключ клиента и добавляешь на сервере:
/interface wireguard peers add \
interface=wg0 \
public-key="CLIENT_PUBLIC_KEY_HERE==" \
allowed-address=10.10.10.2/32 \
comment="user1-laptop"
# Второй клиент
/interface wireguard peers add \
interface=wg0 \
public-key="CLIENT2_KEY==" \
allowed-address=10.10.10.3/32 \
comment="user2-phone"
Шаг 4: Firewall
# Открываем порт WireGuard
/ip firewall filter add chain=input protocol=udp dst-port=51820 \
action=accept comment="WireGuard" place-before=0
# Форвардинг трафика из WireGuard-сети
/ip firewall filter add chain=forward in-interface=wg0 \
action=accept comment="WG forward" place-before=0
Шаг 5: NAT
/ip firewall nat add chain=srcnat src-address=10.10.10.0/24 \
action=masquerade out-interface=ether1 comment="WireGuard NAT"
Конфиг клиента (Windows / Linux / macOS)
Создай файл wg0-client.conf:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY_HERE
Address = 10.10.10.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY_HERE
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0 — Full Tunnel, весь трафик через VPN. Нужен Split Tunnel — замени на 192.168.88.0/24, 10.10.10.0/24.
Скрипт добавления нового peer
:local peerKey "NEW_USER_KEY=="
:local peerIP "10.10.10.5/32"
:local peerComment "new-user"
/interface wireguard peers add \
interface=wg0 \
public-key=$peerKey \
allowed-address=$peerIP \
comment=$peerComment
:log info "WireGuard peer $peerComment added with IP $peerIP"
Настройка VLAN на MikroTik — следующий шаг
Настройка IKEv2 VPN на MikroTik
IKEv2 — золотой стандарт для мобильников. Телефон переключается с 4G на Wi-Fi в метро — туннель не рвётся. Для командировочных незаменим.
Минус один: нужны сертификаты. Без PKI не обойтись. Многие на этом месте закрывают вкладку и ставят L2TP. Не делай так — разберём по шагам, там ничего страшного.
Шаг 1: Создание CA
/certificate add name=ca-cert common-name=MikroTik-CA \
key-size=2048 days-valid=3650 key-usage=key-cert-sign,crl-sign
/certificate sign ca-cert ca-certificate=ca-cert name=ca-cert
Шаг 2: Серверный сертификат
# Замени YOUR_SERVER_IP на реальный IP или FQDN
/certificate add name=server-cert common-name=YOUR_SERVER_IP \
subject-alt-name=IP:YOUR_SERVER_IP \
key-size=2048 days-valid=3650 \
key-usage=digital-signature,key-encipherment,tls-server
/certificate sign server-cert ca-certificate=ca-cert name=server-cert
Шаг 3: Клиентский сертификат
/certificate add name=client-cert common-name=vpn-client \
key-size=2048 days-valid=3650 key-usage=tls-client
/certificate sign client-cert ca-certificate=ca-cert name=client-cert
Шаг 4: IPsec — профиль, proposal, peer
/ip ipsec profile add name=ike2-profile \
hash-algorithm=sha256 enc-algorithm=aes-256 \
dh-group=modp2048 dpd-interval=2m dpd-maximum-failures=5
/ip ipsec proposal add name=ike2-proposal \
auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp2048
/ip ipsec mode-config add name=ike2-mode-config \
address=192.168.201.0/24 address-pool=vpn-pool system-dns=no
/ip ipsec policy group add name=ike2-group
/ip ipsec policy add src-address=0.0.0.0/0 dst-address=0.0.0.0/0 \
proposal=ike2-proposal group=ike2-group template=yes
/ip ipsec peer add name=ike2-peer address=0.0.0.0/0 \
exchange-mode=ike2 certificate=server-cert \
send-initial-contact=yes profile=ike2-profile \
mode-config=ike2-mode-config policy-template-group=ike2-group \
passive=yes notrack-chain=input
Шаг 5: Порты Firewall
/ip firewall filter add chain=input protocol=udp dst-port=500 \
action=accept comment="IKEv2 IKE"
/ip firewall filter add chain=input protocol=udp dst-port=4500 \
action=accept comment="IKEv2 NAT-T"
/ip firewall filter add chain=input protocol=ipsec-esp \
action=accept comment="IKEv2 ESP"
Экспорт сертификатов для клиентов
/certificate export-certificate ca-cert type=pem
/certificate export-certificate client-cert type=pkcs12 export-passphrase=CertPassword123
# Файлы появятся в /Files - скачай через WinBox (Files → ПКМ → Download)
MikroTik как VPN-клиент
Иногда задача обратная: не принимать подключения, а самому подключиться к VPN-серверу. Все устройства в сети уходят в интернет через VPS в другой стране — или два офиса связываются через туннель без выделенной линии. Каналы связи дорогие, а WireGuard бесплатный. Математика простая. Вот как это настраивается.
Вариант А: WireGuard-клиент
# Создаём клиентский интерфейс
/interface wireguard add name=wg-client listen-port=51821 mtu=1420
# Смотрим свой публичный ключ - его нужно добавить на сервере как peer
/interface wireguard print detail
# Добавляем серверный peer
/interface wireguard peers add \
interface=wg-client \
public-key="SERVER_PUBLIC_KEY==" \
endpoint-address=SERVER_IP \
endpoint-port=51820 \
allowed-address=0.0.0.0/0 \
persistent-keepalive=25
# Назначаем IP, который выдал сервер
/ip address add address=10.10.10.100/24 interface=wg-client
Вариант Б: L2TP-клиент
/interface l2tp-client add name=l2tp-to-office \
connect-to=OFFICE_VPN_SERVER_IP \
user=vpn-user password=vpn-password \
use-ipsec=yes ipsec-secret=SharedKey123 \
profile=default disabled=no
Маршрутизация через туннель
# Весь трафик через VPN
/ip route add gateway=wg-client distance=1 comment="VPN default route"
# Только корпоративная подсеть
/ip route add dst-address=192.168.1.0/24 gateway=wg-client
Маршрутизация VPN-трафика: Policy Routing и Split Tunnel
Вот тут начинается интересное. И вот тут обычно ломают. Задача: одни устройства ходят через VPN, другие — напрямую. Или весь корпоративный трафик в туннель, Netflix — мимо.
Метод 1: Policy Routing по IP устройства
Ноутбук 192.168.88.50 идёт через VPN, все остальные — напрямую:
# Таблица маршрутизации
/routing table add name=vpn-table fib
# Маршрут через WireGuard в эту таблицу
/ip route add dst-address=0.0.0.0/0 gateway=wg0 routing-table=vpn-table
# Правило: трафик с ноутбука → vpn-table
/routing rule add src-address=192.168.88.50/32 table=vpn-table action=lookup
# NAT для трафика из vpn-table
/ip firewall nat add chain=srcnat src-address=192.168.88.50/32 \
action=masquerade out-interface=wg0 comment="Policy NAT for laptop"
Метод 2: Mangle — маркировка трафика
/ip firewall mangle add chain=prerouting \
src-address=192.168.88.50/32 \
action=mark-routing new-routing-mark=use-vpn passthrough=yes
/ip route add dst-address=0.0.0.0/0 gateway=wg0 \
routing-mark=use-vpn distance=1
Split Tunnel: только корпоративный трафик через VPN
Для L2TP/PPP-клиентов — через профиль:
/ppp profile set vpn-profile routes=192.168.88.0/24,10.0.0.0/8
Для WireGuard-клиентов — в конфиге клиента меняй AllowedIPs:
# Вместо AllowedIPs = 0.0.0.0/0
AllowedIPs = 192.168.88.0/24, 10.10.10.0/24
Безопасность VPN: изоляция клиентов
Поднял VPN — хорошо. Теперь сделай так, чтобы клиенты не лезли друг к другу.
Запрет общения VPN-клиентов между собой
# Для L2TP/PPP
/ip firewall filter add chain=forward \
in-interface=l2tp-server out-interface=l2tp-server \
action=drop comment="Block inter-VPN traffic L2TP"
# Для WireGuard
/ip firewall filter add chain=forward \
in-interface=wg0 out-interface=wg0 \
action=drop comment="Block WG client-to-client"
Ограничение доступа к конкретным ресурсам
# VPN-клиенты видят только файловый сервер 192.168.88.10
/ip firewall filter add chain=forward \
src-address=192.168.200.0/24 dst-address=!192.168.88.10 \
in-interface=l2tp-server action=drop \
comment="VPN clients - only file server"
Одна сессия на пользователя
/ppp secret set user1 sessions-limit=1
Проверка подключений: как убедиться что всё работает
Настроил — проверь. Вот команды которые реально показывают что происходит.
# Активные L2TP-сессии
/ppp active print
# Состояние WireGuard peers - last handshake, rx/tx байты
/interface wireguard peers print detail
# Логи L2TP и IPsec в реальном времени
/log print follow where topics~"l2tp" or topics~"ipsec"
# Пинг из роутера через WireGuard-туннель
/ping 10.10.10.2 interface=wg0 count=4
# Текущие маршруты
/ip route print where active=yes
# Состояние NAT - убедись что правило активно
/ip firewall nat print stats
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#f8fafc',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'noteBkgColor': '#fefce8',
'noteTextColor': '#713f12',
'noteBorderColor': '#fbbf24',
'actorBkg': '#f8fafc',
'actorBorder': '#94a3b8',
'actorTextColor': '#1e293b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'sequence': {
'mirrorActors': false,
'messageAlign': 'center',
'actorMargin': 120,
'width': 160,
'noteMargin': 12
}
}}%%
sequenceDiagram
participant C as Клиент
participant WAN as MikroTik WAN
participant TUN as Туннель wg0/l2tp
participant LAN as LAN 192.168.88.0/24
C->>WAN: Handshake (UDP 51820 / UDP 500+4500)
WAN->>TUN: Создаёт туннель
TUN->>C: Выдаёт IP из пула
Note over C,TUN: VPN установлен
C->>TUN: Трафик (зашифрован)
TUN->>LAN: Форвард + NAT
LAN->>TUN: Ответ
TUN->>C: Ответ (зашифрован)
Типичные ошибки при настройке VPN на MikroTik и их лечение
Добро пожаловать в палату неотложной помощи. Разбираем по симптомам. Без «перезагрузи и посмотри» — это не диагностика, это молитва. У нас тут другой подход: смотрим логи, изолируем компонент, фиксим.
Ошибка 789: The L2TP connection attempt failed
IPsec не может установить соединение. Три основные причины: неверный Pre-Shared Key, заблокированы UDP 500/4500, или клиент и сервер не договорились по алгоритмам шифрования.
Диагностика ошибки 789 - план действий
1. Проверь что IPsec-ключ совпадает на сервере и клиенте — copy-paste, без пробелов.
2. Убедись что UDP 500 и 4500 открыты в firewall.
3. Проверь логи IPsec — там будет точная причина.
4. Попробуй упростить алгоритмы шифрования.
# Смотрим логи IPsec в реальном времени - пока клиент пытается подключиться
/log print follow where topics~"ipsec"
# Проверяем установленные SA (должны появиться при подключении)
/ip ipsec installed-sa print
# Проверяем что порты открыты
/ip firewall filter print where dst-port=500 or dst-port=4500
# Упрощаем алгоритмы - добавляем sha1 и aes-128 для совместимости
/ip ipsec proposal set [ find default=yes ] \
enc-algorithms=aes-256-cbc,aes-128-cbc \
auth-algorithms=sha256,sha1
Ошибка 809: VPN-подключение невозможно установить
🚨 Ошибка 809 - MikroTik за NAT провайдера
Это почти всегда CGNAT. IPsec и NAT — плохая компания. Нужно включить NAT Traversal на роутере. И добавить ключ реестра на Windows-клиенте.
# Включаем NAT Traversal
/ip ipsec profile set [ find default=yes ] nat-traversal=yes
На Windows-клиенте дополнительно добавь ключ реестра (запуск от администратора):
# PowerShell - запустить от администратора
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\PolicyAgent" `
-Name "AssumeUDPEncapsulationContextOnSendRule" -Value 2 -Type DWord
# После - перезагрузка Windows обязательна
Туннель работает, но большие пакеты теряются (сайты не открываются)
Классика. VPN подключён, пинг проходит, но браузер зависает или открывает страницы очень медленно. Причина — MTU слишком большой, пакеты фрагментируются или дропаются.
# WireGuard - рекомендуемый MTU 1420
/interface wireguard set wg0 mtu=1420
# L2TP - снижаем до 1400
/interface l2tp-server server set max-mtu=1400 max-mru=1400
# MSS Clamping - автоматическая коррекция MTU для TCP
/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn \
in-interface=wg0 action=change-mss \
new-mss=clamp-to-pmtu comment="MSS Clamping WireGuard"
WireGuard: peer подключился, но трафик не идёт
# Смотрим на rx/tx bytes у peer
# Если tx растёт, а rx=0 - проблема на стороне клиента (его маршруты)
# Если оба нули - нет handshake
/interface wireguard peers print detail
# Проверяем маршруты
/ip route print where active=yes
# Проверяем NAT
/ip firewall nat print stats
# Пинг из роутера напрямую через туннель
/ping 10.10.10.2 interface=wg0 count=4
IKEv2: ошибка «Certificate not trusted»
# Проверяем что CA-сертификат подписан корректно
/certificate print detail where name=ca-cert
# Поле "trusted" должно быть yes
# Если нет - подписываем вручную
/certificate sign ca-cert ca-certificate=ca-cert name=ca-cert
# Проверяем что серверный сертификат подписан CA
/certificate print detail where name=server-cert
# Поле "ca" должно указывать на ca-cert
# Убедись что subject-alt-name в сертификате совпадает с IP/FQDN, к которому подключается клиент
/certificate print detail where name=server-cert
# Ищи строку "subject-alt-name"
L2TP: клиент подключился, но не пингует LAN
# Проверяем что ip-forward включён
/ip settings print | grep ip-forward
# Должно быть: ip-forward: yes
# Проверяем маршрут до LAN в профиле
/ppp profile print detail where name=vpn-profile
# Должны быть routes=192.168.88.0/24
# Проверяем активную сессию - какой IP получил клиент
/ppp active print detail
# Пинг из роутера к клиенту
/ping 192.168.200.2 count=4
WireGuard не стартует после перезагрузки роутера
# Проверяем что интерфейс не disabled
/interface wireguard print
# Колонка "D" - если стоит, интерфейс отключён
# Включаем
/interface wireguard enable wg0
# Проверяем автозапуск - WireGuard поднимается автоматически если не disabled
# Убедись что disable=no
/interface wireguard set wg0 disabled=no
AdGuard + VPN на MikroTik: DNS-фильтрация поверх туннеля
Отдельная история — когда хочется не просто шифровать трафик, но и фильтровать рекламу и трекеры для всей сети. Два пути.
Вариант 1: DoH (DNS over HTTPS) прямо на MikroTik
# RouterOS 7.x поддерживает DoH нативно
/ip dns set use-doh-server=https://dns.adguard.com/dns-query \
verify-doh-cert=yes allow-remote-requests=yes
# Убираем обычные DNS-серверы
/ip dns set servers=""
Вариант 2: AdGuard Home на VPS + DNS через WireGuard
На VPS ставишь AdGuard Home, он слушает на порту 53. В настройках WireGuard-клиента на MikroTik прописываешь его IP как DNS-сервер:
# На MikroTik - DNS через туннель на VPS с AdGuard
/ip dns set servers=10.10.10.1 allow-remote-requests=yes
# 10.10.10.1 - IP WireGuard-интерфейса на VPS где стоит AdGuard
Все DNS-запросы клиентов пойдут зашифрованным туннелем на AdGuard. Реклама фильтруется до того как попадает в браузер.
VLESS на MikroTik: что реально можно сделать
Честный ответ: VLESS — не нативный протокол RouterOS. Это протокол из экосистемы Xray/V2Ray для обхода DPI. RouterOS его не поддерживает из коробки.
В RouterOS 7.x есть Container — запуск Docker-образов прямо на роутере. Работает только на устройствах с достаточным RAM: hAP ax², CCR, RB5009.
⚠️ VLESS через Container - для продвинутых
Это задача для инженеров с опытом. Требует внешнего хранилища (USB/SD),
настройки veth-интерфейсов и понимания Docker. Для простого обхода блокировок — проще поднять Xray на отдельном VPS и подключить MikroTik через WireGuard.
# Включаем поддержку контейнеров (требует перезагрузки)
/system/device-mode/update container=yes
# После перезагрузки - устанавливаем пакет container
# Скачай с mikrotik.com → Extra Packages для своей архитектуры
# Добавляем контейнер с Xray
/container add remote-image=teddysun/xray interface=veth1 \
logging=yes root-dir=disk1/xray \
cmd="/usr/bin/xray run -config /etc/xray/config.json"
Если цель — обход блокировок для всей сети: подними Xray/VLESS на VPS, подключи MikroTik к нему через WireGuard, настрой Policy Routing для нужных устройств. Это надёжнее и проще в обслуживании.
DynDNS на MikroTik: полный гайд
Профилактика: как не сломать снова
Один раз правильно настроить — мало. Нужно чтобы это работало через полгода после того как ты об этом забудешь.
Мониторинг VPN-туннелей
# Скрипт проверки - добавь в Scheduler с запуском каждые 5 минут
/system scheduler add name=check-vpn interval=5m \
on-event={
:if ([/interface wireguard get wg0 running] = false) do={
/log warning "WireGuard wg0 is DOWN"
# Здесь можно добавить отправку уведомления в Telegram
}
}
Резервная копия конфига
# Экспорт конфига в файл
/export file=vpn-backup-2026
# Или полный бэкап (включая пароли)
/system backup save name=full-backup-vpn
Автобэкап MikroTik в Telegram — настройка за 20 минут
Автоматическое восстановление L2TP-клиента
# Если используешь MikroTik как клиент - включи dial-on-demand
/interface l2tp-client set l2tp-to-office dial-on-demand=no
# dial-on-demand=no - всегда держит соединение активным
FAQ — часто задаваемые вопросы
Почему L2TP/IPsec не подключается с первого раза?
Чаще всего три причины. Первая — неверный Pre-Shared Key: один лишний пробел и всё. Вторая — UDP 500 или 4500 заблокированы провайдером или файрволом. Третья — Windows-клиент за NAT: нужен ключ реестра AssumeUDPEncapsulationContextOnSendRule=2 и перезагрузка. Смотри в раздел Troubleshooting — там пошагово.
Как проверить что VPN-туннель действительно работает?
# WireGuard - смотрим last-handshake и трафик
/interface wireguard peers print detail
# L2TP - активные сессии
/ppp active print
# С клиента - проверь свой внешний IP
# Должен стать IP роутера, а не провайдерский
Что если у MikroTik нет белого IP (CGNAT)?
Поднять VPN-сервер напрямую не получится — провайдер не пустит входящий трафик. Варианта два: купить статический IP у провайдера (обычно 3–10$/мес.) или арендовать VPS с белым IP и поднять WireGuard-сервер там. MikroTik подключается к VPS как клиент — все устройства в сети получают VPN-выход через него.
Сколько клиентов выдержит MikroTik с WireGuard?
Зависит от железа. На hAP ac² (ARM, 128MB RAM) — реально 10–20 активных туннелей при умеренном трафике. На RB4011 или RB5009 — 50+ без проблем. Узкое место — CPU при шифровании. Смотри загрузку: /system resource print.
Можно ли использовать один MikroTik как сервер и как клиент одновременно?
Да. Создаёшь два разных WireGuard-интерфейса: wg0 — серверный (принимает клиентов), wg-client — клиентский (подключается к внешнему серверу). Разводишь маршрутами. Работает.
Почему после подключения VPN не виден интернет (только локальная сеть)?
Два места смотреть. Первое — NAT: убедись что есть правило masquerade для VPN-подсети через WAN-интерфейс. Второе — AllowedIPs в конфиге клиента: если там только локальные подсети — интернет и не пойдёт. Для Full Tunnel нужно AllowedIPs = 0.0.0.0/0.
Как добавить нового WireGuard-пользователя без перезапуска сервера?
WireGuard не требует перезапуска. Просто добавь новый peer — он начнёт работать немедленно:
/interface wireguard peers add \
interface=wg0 \
public-key="NEW_CLIENT_PUBLIC_KEY==" \
allowed-address=10.10.10.10/32 \
comment="new-employee"
Итоги
Ты прошёл весь путь: от выбора протокола до рабочего туннеля. Если всё заработало с первого раза — поздравляю, ты в меньшинстве. WireGuard — для нового, L2TP/IPsec — для корпоративных Windows-парков без стороннего ПО, IKEv2 — для мобильников в командировках. Каждый протокол — свои порты, свой firewall, своя логика.
Главное что нужно помнить: VPN на MikroTik — это не магия и не чёрный ящик. Это набор конфигурируемых компонентов: интерфейс, профиль, пользователи, firewall, NAT, маршруты. Сломалось — смотри логи, проверяй каждый компонент по цепочке. Отлаживается за 15 минут если знаешь где смотреть.
✅ Если не заработало - разберёмся
Опиши симптом в комментариях: какой протокол, какая ошибка, что показывает /log print. Постараюсь ответить по делу, без «перезагрузи и посмотри».
NTP на MikroTik: клиент и сервер — шпаргалка
MikroTik с нуля до production — полный курс