mikrotik-wiki.ru
Главная
Загрузка...

ZeroTier на MikroTik — P2P VPN без сервера

RouterOS 7.xVPN8 мин130 мар. 2026 г.
TelegramVK

ZeroTier на MikroTik — P2P VPN-сеть без сервера

ZeroTier — технология SD-WAN и P2P VPN, позволяющая объединить устройства в единую виртуальную сеть без выделенного VPN-сервера. В отличие от классических VPN (WireGuard, IPsec), где нужен сервер с публичным IP и ручная настройка маршрутов, ZeroTier автоматически решает проблемы NAT traversal и устанавливает прямые соединения между узлами. Начиная с RouterOS 7.1, MikroTik включает встроенную поддержку ZeroTier — не нужно устанавливать дополнительные пакеты.

Описание

Как работает ZeroTier

ZeroTier создаёт виртуальную Ethernet-сеть (Layer 2) поверх интернета. Архитектура состоит из трёх компонентов:

  1. ZeroTier Central (my.zerotier.com) — облачный контроллер, управляющий сетями и авторизацией устройств. Не передаёт трафик — только управляющую информацию.
  2. Root Servers (Planets) — серверы, помогающие узлам найти друг друга (discovery). После установки прямого соединения трафик идёт напрямую.
  3. ZeroTier Client — агент на каждом устройстве (включая MikroTik), создающий виртуальный сетевой интерфейс.

Процесс подключения:

  1. Клиент регистрируется на Root Server и сообщает свой публичный IP
  2. При обращении к другому узлу Root Server выполняет NAT traversal (hole punching)
  3. Между узлами устанавливается прямое P2P-соединение (UDP)
  4. Если прямое соединение невозможно (симметричный NAT) — трафик идёт через relay

ZeroTier vs WireGuard

КритерийZeroTierWireGuard
ТопологияMesh (P2P, каждый с каждым)Point-to-Point или Hub-and-Spoke
NAT traversalАвтоматическийТребует публичный IP на одной стороне
НастройкаМинимальная (ID сети)Обмен ключами, маршруты, firewall
УправлениеВеб-панель (my.zerotier.com)CLI или конфигурационные файлы
ШифрованиеChaCha20-Poly1305 (Salsa20)ChaCha20-Poly1305
Производительность~300-500 Mbps на MikroTik~500-900 Mbps на MikroTik
Уровень OSIL2 (Ethernet)L3 (IP)
Зависимость от облакаДа (ZeroTier Central)Нет

Вывод: ZeroTier проще в настройке и лучше работает за NAT. WireGuard быстрее и не зависит от внешних сервисов. Для связки 2-5 офисов через NAT ZeroTier часто удобнее. Для высоконагруженных site-to-site — WireGuard.

ZeroTier vs Tailscale

КритерийZeroTierTailscale
Поддержка MikroTikВстроенная (RouterOS 7.1+)Нет (только Linux/Windows/Mac)
ПротоколСобственныйWireGuard
Уровень OSIL2 (можно bridge)L3
Self-hosted контроллерДа (ZeroTier Controller)Headscale (сторонний)
Бесплатный тариф25 устройств100 устройств

Для MikroTik выбор очевиден — ZeroTier имеет нативную поддержку, Tailscale — нет.

Ограничения ZeroTier на MikroTik

  • Только один ZeroTier-интерфейс (одна сеть) на RouterOS
  • Производительность ниже, чем у WireGuard (дополнительный overhead протокола)
  • Зависимость от облака ZeroTier Central для авторизации
  • Bridge mode потребляет больше ресурсов (L2 broadcast трафик через интернет)
  • На некоторых младших моделях (hAP lite) CPU может быть узким местом

Настройка

Предварительные требования

  • RouterOS 7.20+ (ZeroTier доступен с 7.1, но в ранних версиях были баги)
  • Аккаунт на my.zerotier.com
  • Созданная ZeroTier-сеть (Network ID — 16-символьный hex-идентификатор)
  • Доступ в интернет с MikroTik

Шаг 1: Создание сети в ZeroTier Central

  1. Зайдите на my.zerotier.com и войдите в аккаунт
  2. Нажмите "Create A Network"
  3. Запишите Network ID (например, a09acf0233e4b070)
  4. В настройках сети:
    • Выберите подсеть (например, 10.147.17.0/24)
    • Включите "Auto-Assign" для автоматической раздачи IP
    • Оставьте "Access Control" в режиме "Private" (устройства требуют авторизации)

Шаг 2: Включение ZeroTier на MikroTik

По умолчанию ZeroTier отключён. Сначала включите его:

[admin@MikroTik] >
/zerotier enable

После включения ZeroTier сгенерирует уникальный 10-символьный Node ID для вашего MikroTik.

Шаг 3: Подключение к сети

[admin@MikroTik] >
/zerotier/interface add network=a09acf0233e4b070 allow-default=no allow-global=no allow-managed=yes

Параметры:

  • network — Network ID из ZeroTier Central
  • allow-default=no — не принимать default route через ZeroTier (важно! иначе весь трафик пойдёт через ZeroTier)
  • allow-global=no — не принимать маршруты в глобальные подсети
  • allow-managed=yes — принимать управляемые маршруты (подсети ZeroTier-сети)

Шаг 4: Авторизация устройства

После выполнения команды MikroTik отправит запрос на подключение. В ZeroTier Central:

  1. Перейдите в вашу сеть
  2. В разделе "Members" появится новое устройство с Node ID вашего MikroTik
  3. Поставьте галочку "Auth" для авторизации
  4. (Опционально) Задайте описание и фиксированный IP

После авторизации MikroTik получит IP-адрес из ZeroTier-сети и создаст интерфейс zerotier1.

Шаг 5: Проверка подключения

[admin@MikroTik] >
/zerotier/interface print detail

Ожидаемый вывод:

code
 0   name="zerotier1" mac-address=... network=a09acf0233e4b070
     network-name="My Network" status=OK type=PRIVATE
     zt-address=a1b2c3d4e5

Статус OK означает успешное подключение. Проверьте назначенный IP:

[admin@MikroTik] >
/ip/address print where interface=zerotier1

Шаг 6: Маршрутизация LAN через ZeroTier

Чтобы удалённые устройства ZeroTier-сети видели вашу локальную сеть, нужно:

  1. Добавить маршрут в ZeroTier Central (Managed Routes)
  2. Включить маршрутизацию на MikroTik

В ZeroTier Central, в настройках сети, раздел "Managed Routes", добавьте:

code
192.168.88.0/24 via 10.147.17.1

Где 10.147.17.1 — ZeroTier IP вашего MikroTik.

На MikroTik разрешите forward между ZeroTier и LAN:

[admin@MikroTik] >
/ip/firewall/filter add chain=forward in-interface=zerotier1 \
  out-interface=bridge1 action=accept \
  comment="Allow ZeroTier to LAN"

/ip/firewall/filter add chain=forward in-interface=bridge1 \
  out-interface=zerotier1 action=accept \
  comment="Allow LAN to ZeroTier"

Важно: разместите эти правила перед drop-правилами в цепочке forward.

Bridge Mode: прозрачный L2

ZeroTier может работать на уровне L2, объединяя удалённые сети в один broadcast-домен. Это полезно для:

  • DHCP от одного сервера на обе площадки
  • Протоколы, работающие только в L2 (NetBIOS, некоторые legacy-приложения)
  • Миграция виртуальных машин между площадками

Настройка bridge mode на MikroTik:

[admin@MikroTik] >
# Добавляем zerotier1 в существующий bridge
/interface/bridge/port add bridge=bridge1 interface=zerotier1

# Убираем IP с zerotier1 (IP будет на bridge)
/ip/address remove [find interface=zerotier1]

Внимание: bridge mode создаёт единый broadcast-домен через интернет. Весь broadcast-трафик (ARP, DHCP, mDNS) будет проходить через ZeroTier-туннель. Это серьёзно нагружает канал и CPU. Используйте bridge mode только если действительно нужна L2-связность.

Firewall для ZeroTier

Базовые правила firewall для безопасной работы ZeroTier:

[admin@MikroTik] >
# Разрешить трафик ZeroTier (UDP 9993)
/ip/firewall/filter add chain=input protocol=udp dst-port=9993 \
  action=accept comment="Allow ZeroTier" place-before=0

# Разрешить input на zerotier1 интерфейс (для управления)
/ip/firewall/filter add chain=input in-interface=zerotier1 \
  action=accept comment="Allow ZeroTier management" place-before=1

# Ограничить доступ из ZeroTier — разрешить только определённые подсети
/ip/firewall/filter add chain=forward in-interface=zerotier1 \
  dst-address=192.168.88.0/24 action=accept \
  comment="ZeroTier to LAN" place-before=0

/ip/firewall/filter add chain=forward in-interface=zerotier1 \
  action=drop comment="Drop other ZeroTier traffic"

Проверка

Статус ZeroTier-интерфейса

[admin@MikroTik] >
/zerotier/interface print detail

Ключевые поля:

  • status=OK — успешное подключение
  • status=REQUESTING_CONFIGURATION — ожидание авторизации в ZeroTier Central
  • status=NOT_FOUND — неверный Network ID
  • status=ACCESS_DENIED — устройство не авторизовано

Проверка связности

Пинг другого ZeroTier-узла:

[admin@MikroTik] >
/ping 10.147.17.2 count=5

Проверка маршрутов:

[admin@MikroTik] >
/ip/route print where routing-table=main dst-address~"10.147.17"

Мониторинг трафика

[admin@MikroTik] >
/interface/monitor-traffic zerotier1 once

Просмотр ZeroTier Node ID

[admin@MikroTik] >
/zerotier print

Node ID нужен для идентификации устройства в ZeroTier Central.

Продвинутые сценарии

Объединение двух офисов

Схема:

code
Офис A: LAN 192.168.10.0/24 ← MikroTik A (ZT: 10.147.17.1) ── ZeroTier ── MikroTik B (ZT: 10.147.17.2) → LAN 192.168.20.0/24 :Офис B

На MikroTik A:

[admin@MikroTik] >
/zerotier enable
/zerotier/interface add network=a09acf0233e4b070 allow-default=no allow-global=no allow-managed=yes
# После авторизации:
/ip/route add dst-address=192.168.20.0/24 gateway=10.147.17.2
/ip/firewall/filter add chain=forward in-interface=zerotier1 action=accept place-before=0
/ip/firewall/filter add chain=forward out-interface=zerotier1 action=accept place-before=0

На MikroTik B — аналогично, но маршрут в 192.168.10.0/24 через 10.147.17.1.

В ZeroTier Central, Managed Routes:

code
192.168.10.0/24 via 10.147.17.1
192.168.20.0/24 via 10.147.17.2

Self-hosted контроллер

Для независимости от облака ZeroTier можно развернуть собственный контроллер:

  1. Установите zerotier-one на Linux-сервер
  2. Включите встроенный контроллер
  3. Управляйте через API вместо my.zerotier.com

Это полезно для организаций, которые не могут использовать внешние облачные сервисы.

Типичные ошибки

1. Статус REQUESTING_CONFIGURATION — устройство не авторизовано

Причина: устройство отправило запрос, но администратор не авторизовал его в ZeroTier Central.

Решение: зайдите в ZeroTier Central → ваша сеть → Members → поставьте галочку "Auth" напротив Node ID вашего MikroTik.

[admin@MikroTik] >
# Проверьте Node ID
/zerotier print
# Сравните с тем, что видите в ZeroTier Central

2. Нет связности после авторизации

Причина: firewall блокирует трафик на интерфейсе zerotier1 или UDP 9993.

Решение:

[admin@MikroTik] >
# Проверьте, что UDP 9993 не блокируется
/ip/firewall/filter print where chain=input action=drop

# Добавьте разрешающее правило перед drop
/ip/firewall/filter add chain=input protocol=udp dst-port=9993 \
  action=accept comment="Allow ZeroTier" place-before=0

3. Низкая скорость через ZeroTier

Причины:

  • Трафик идёт через relay (нет прямого P2P-соединения из-за симметричного NAT)
  • Слабый CPU на MikroTik (ZeroTier нагружает процессор)
  • MTU не оптимизирован

Решение:

[admin@MikroTik] >
# Проверьте тип соединения в ZeroTier Central (Members → Peers)
# Если "RELAY" — попробуйте открыть UDP 9993 на NAT перед MikroTik

# Уменьшите MTU для снижения фрагментации
/ip/address set [find interface=zerotier1] \
  comment="ZeroTier address"

На стороне NAT (если MikroTik за другим NAT):

[admin@MikroTik] >
# На внешнем роутере: проброс UDP 9993
/ip/firewall/nat add chain=dstnat protocol=udp dst-port=9993 \
  action=dst-nat to-addresses=<IP_MikroTik> to-ports=9993

4. ZeroTier не запускается — ошибка "ZeroTier is not enabled"

Причина: ZeroTier не включён на уровне системы.

Решение:

[admin@MikroTik] >
/zerotier enable

На некоторых моделях требуется перезагрузка после первого включения ZeroTier.

5. allow-default=yes перехватил весь трафик

Причина: при allow-default=yes ZeroTier может установить default route через себя, и весь интернет-трафик пойдёт через ZeroTier-сеть.

Решение:

[admin@MikroTik] >
# Всегда используйте allow-default=no
/zerotier/interface set 0 allow-default=no allow-global=no

Если доступ к роутеру потерян — подключитесь через serial console или MAC Winbox и отключите ZeroTier:

[admin@MikroTik] >
/zerotier disable

6. Конфликт адресов ZeroTier и локальной сети

Причина: подсеть ZeroTier совпадает с локальной подсетью (например, обе 10.0.0.0/24).

Решение: в ZeroTier Central измените подсеть сети на уникальную (например, 10.147.17.0/24). Или измените локальную подсеть на MikroTik.

Итоги

ZeroTier на MikroTik — отличное решение для быстрого объединения удалённых площадок без выделенного VPN-сервера и публичных IP. Настройка занимает минуты: включить ZeroTier, указать Network ID, авторизовать в веб-панели. NAT traversal работает автоматически, что критично для площадок за провайдерским NAT.

Однако ZeroTier зависит от облачного контроллера, уступает WireGuard в производительности и поддерживает только одну сеть на MikroTik. Для критичных высоконагруженных site-to-site соединений WireGuard остаётся лучшим выбором. ZeroTier идеален для быстрого развёртывания, подключения удалённых сотрудников и сценариев, где оба конца находятся за NAT.

[admin@MikroTik] >
/zerotier enable
/zerotier/interface add network=a09acf0233e4b070 allow-default=no allow-global=no allow-managed=yes
/zerotier/interface print detail
0   name="zerotier1" mac-address=... network=a09acf0233e4b070
     network-name="My Network" status=OK type=PRIVATE
     zt-address=a1b2c3d4e5
/ip/address print where interface=zerotier1
192.168.88.0/24 via 10.147.17.1
/ip/firewall/filter add chain=forward in-interface=zerotier1 \
  out-interface=bridge1 action=accept \
  comment="Allow ZeroTier to LAN"

/ip/firewall/filter add chain=forward in-interface=bridge1 \
  out-interface=zerotier1 action=accept \
  comment="Allow LAN to ZeroTier"
# Добавляем zerotier1 в существующий bridge
/interface/bridge/port add bridge=bridge1 interface=zerotier1

# Убираем IP с zerotier1 (IP будет на bridge)
/ip/address remove [find interface=zerotier1]
# Разрешить трафик ZeroTier (UDP 9993)
/ip/firewall/filter add chain=input protocol=udp dst-port=9993 \
  action=accept comment="Allow ZeroTier" place-before=0

# Разрешить input на zerotier1 интерфейс (для управления)
/ip/firewall/filter add chain=input in-interface=zerotier1 \
  action=accept comment="Allow ZeroTier management" place-before=1

# Ограничить доступ из ZeroTier — разрешить только определённые подсети
/ip/firewall/filter add chain=forward in-interface=zerotier1 \
  dst-address=192.168.88.0/24 action=accept \
  comment="ZeroTier to LAN" place-before=0

/ip/firewall/filter add chain=forward in-interface=zerotier1 \
  action=drop comment="Drop other ZeroTier traffic"
/zerotier/interface print detail
/ping 10.147.17.2 count=5
/ip/route print where routing-table=main dst-address~"10.147.17"
/interface/monitor-traffic zerotier1 once
/zerotier print
Офис A: LAN 192.168.10.0/24 ← MikroTik A (ZT: 10.147.17.1) ── ZeroTier ── MikroTik B (ZT: 10.147.17.2) → LAN 192.168.20.0/24 :Офис B
/zerotier enable
/zerotier/interface add network=a09acf0233e4b070 allow-default=no allow-global=no allow-managed=yes
# После авторизации:
/ip/route add dst-address=192.168.20.0/24 gateway=10.147.17.2
/ip/firewall/filter add chain=forward in-interface=zerotier1 action=accept place-before=0
/ip/firewall/filter add chain=forward out-interface=zerotier1 action=accept place-before=0
192.168.10.0/24 via 10.147.17.1
192.168.20.0/24 via 10.147.17.2
# Проверьте Node ID
/zerotier print
# Сравните с тем, что видите в ZeroTier Central
# Проверьте, что UDP 9993 не блокируется
/ip/firewall/filter print where chain=input action=drop

# Добавьте разрешающее правило перед drop
/ip/firewall/filter add chain=input protocol=udp dst-port=9993 \
  action=accept comment="Allow ZeroTier" place-before=0
# Проверьте тип соединения в ZeroTier Central (Members → Peers)
# Если "RELAY" — попробуйте открыть UDP 9993 на NAT перед MikroTik

# Уменьшите MTU для снижения фрагментации
/ip/address set [find interface=zerotier1] \
  comment="ZeroTier address"
# На внешнем роутере: проброс UDP 9993
/ip/firewall/nat add chain=dstnat protocol=udp dst-port=9993 \
  action=dst-nat to-addresses=<IP_MikroTik> to-ports=9993
/zerotier enable
# Всегда используйте allow-default=no
/zerotier/interface set 0 allow-default=no allow-global=no
/zerotier disable
VPN / ZeroTier на MikroTik — P2P VPN без сервера