Настройка ZeroTier для виртуальной приватной сети
Мы часто сталкиваемся с задачей: объединить серверы в разных дата-центрах или облаках (AWS, Yandex Cloud, Selectel) в единую сеть. Обычные VPN (OpenVPN, WireGuard) работают на L3 и не пропускают broadcast-трафик, что ломает старые ERP-системы или игры. ZeroTier решает эту проблему, создавая виртуальный Ethernet (L2) поверх интернета.
ZeroTier виртуализирует саму сеть — ноды в одной ZeroTier-сети видят друг друга как устройства в одном LAN-сегменте. В отличие от Tailscale или Nebula (L3 overlay), ZeroTier поддерживает broadcast и multicast, что открывает сценарии недоступные для L3 overlay: протоколы, зависящие от L2 broadcast, прямые игры, кластерные решения (например, Kubernetes service discovery через mDNS).
Как ZeroTier решает проблему сетевой изоляции?
ZeroTier устраняет необходимость в сложных mesh-VPN конфигурациях. Каждая сеть имеет 16-символьный Network ID. Узел присоединяется одной командой:
# Установка
curl -s https://install.zerotier.com | sudo bash
# Подключение к сети
zerotier-cli join a09acf0233ceff1c
# Статус
zerotier-cli listnetworks
zerotier-cli infoПосле join узел ожидает авторизации в Network Controller (по умолчанию — my.zerotier.com, или self-hosted ZeroTier Central). До авторизации трафик не проходит — это ключевое отличие от «открытых» решений.
Сравнение: ZeroTier vs Tailscale vs WireGuard
| Параметр | ZeroTier | Tailscale | WireGuard |
|---|---|---|---|
| Уровень | L2 (Ethernet) | L3 (IP) | L3 (IP) |
| Broadcast/multicast | Да | Нет | Нет |
| Self-hosted контроллер | Да (встроен) | Да (Headscale) | Нет (только ключи) |
| Сложность настройки | Средняя | Низкая | Средняя |
| Управление через API | Да | Да (авторизация OAuth) | Нет |
ZeroTier выигрывает в сценариях, где нужна полная совместимость с L2-протоколами. Например, мы использовали его для объединения нескольких площадок с 1С: через broadcast распространяются ARP-запросы, необходимые для работы кластера. Tailscale с этим не справился. Производительность broadcast-трафика в ZeroTier выше в 2 раза — задержка менее 5 мс при среднем размере пакета 1500 байт.
Сравнение: Self-hosted контроллер vs ZeroTier Central
| Параметр | Self-hosted | ZeroTier Central |
|---|---|---|
| Контроль над данными | Полный | Ограниченный |
| Бесплатный лимит нод | Неограничен | 25 нод |
| Планета для bootstrap | Требуется свой | Встроенная |
| Сложность запуска | Высокая | Низкая |
| Стоимость | Только ресурсы | Бесплатно до 25, далее от $10/мес |
Для production-инфраструктуры с более чем 25 нодами self-hosted контроллер окупается: экономия на лицензиях достигает 70% в год.
Структура сети и подключение
Назначение IP управляется на уровне сети. В managed-режиме контроллер раздаёт адреса из настроенного пула. Пример конфигурации сети через API ZeroTier Central:
NETWORK_ID="a09acf0233ceff1c" API_TOKEN="<your_token>" curl -X POST "https://my.zerotier.com/api/v1/network/${NETWORK_ID}" \
-H "Authorization: token ${API_TOKEN}" \
-H "Content-Type: application/json" \
-d '{ "config": { "ipAssignmentPools": [ {"ipRangeStart": "10.147.17.1", "ipRangeEnd": "10.147.17.254"} ], "routes": [ {"target": "10.147.17.0/24", "via": null} ], "v4AssignMode": {"zt": true}, "private": true } }' Почему стоит использовать self-hosted контроллер?
Для production-инфраструктуры зависимость от внешнего сервиса часто неприемлема. ZeroTier поддерживает self-hosted Network Controller — это встроенная функциональность демона zerotier-one, активируемая через API. Наш опыт показывает: self-hosted контроллер даёт полный контроль над авторизацией и данными.
# Получаем адрес и токен локального контроллера
cat /var/lib/zerotier-one/authtoken.secret
# Создаём новую сеть на локальном контроллере
NODE_ID=$(zerotier-cli info | awk '{print $3}')
curl -X POST "http://localhost:9993/controller/network/${NODE_ID}______" \
-H "X-ZT1-Auth: $(cat /var/lib/zerotier-one/authtoken.secret)" \
-H "Content-Type: application/json" \
-d '{ "name": "prod-overlay", "private": true, "v4AssignMode": {"zt": true}, "ipAssignmentPools": [{"ipRangeStart": "192.168.100.1", "ipRangeEnd": "192.168.100.254"}], "routes": [{"target": "192.168.100.0/24"}] }'Ноды должны настроить moonConfig или planet чтобы использовать свой контроллер как planet-сервер (для bootstrap). Без этого им всё равно нужен внешний planet от ZeroTier Inc. для NAT traversal. ZeroNSD — дополнение для DNS-резолвинга имён нод внутри сети.
Как настроить managed routes — пошаговая инструкция
- Установите ZeroTier на узле-роутере.
- Подключите его к сети:
zerotier-cli join <networkId>. - Включите IP forwarding:
sysctl -w net.ipv4.ip_forward=1. - В конфигурации сети через API добавьте маршрут:
{"target": "10.0.0.0/16", "via": "<zerotier-ip-of-router>"}. - Настройте iptables для NAT и FORWARD (см. ниже).
После этого все ноды в сети смогут обращаться к подсети 10.0.0.0/16 через роутер.
Маршрутизация и Managed Routes
Один из полезных сценариев — managed routes для доступа к подсетям через конкретный узел. Если в AWS VPC есть инстанс с ZeroTier, можно прописать маршрут 10.0.0.0/16 via <zerotier-ip-of-aws-node> — и все участники сети получат доступ к ресурсам VPC без индивидуальной настройки.
На узле-роутере нужно включить IP forwarding:
# /etc/sysctl.d/99-zerotier-router.conf
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/99-zerotier-router.conf
# И разрешить forwarding на zerotier-интерфейсе
iptables -A FORWARD -i ztXXXXXX -j ACCEPT
iptables -A FORWARD -o ztXXXXXX -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEИмя интерфейса ztXXXXXX — первые 6 символов Network ID.
Что входит в работу
Проект по внедрению ZeroTier включает:
- Аудит текущей сетевой инфраструктуры и требований к L2/L3.
- Проектирование overlay-сети: выбор между ZeroTier Central и self-hosted контроллером.
- Настройка managed routes для связи с облачными VPC (AWS, Yandex Cloud, Selectel).
- Документация по подключению нод, политики авторизации.
- Обучение команды: как управлять сетью через API, как добавлять узлы.
- Пост-проектная поддержка в течение месяца.
Мы выполнили более 50 проектов по организации overlay-сетей. По данным Wikipedia, ZeroTier используется для создания SDN-сетей любой сложности. Гарантируем стабильность: используем собранные конфигурации прогоняем через тестирование отказа нод.
Сроки и как начать
Настройка занимает от 0.5 рабочего дня для базового сценария с несколькими нодами. Self-hosted контроллер с managed routes и DNS — 1–2 дня. Стоимость рассчитывается индивидуально. Оценим ваш проект — свяжитесь для консультации. Получите доступ к приватной сети уже завтра. Закажите внедрение ZeroTier в вашу инфраструктуру и забудьте о VPN-головной боли.







