- Что такое OpenZiti
- Что такое Zero Trust Network Access (ZTNA)
- OpenZiti или VPN: в чём разница
- Что понадобится для установки OpenZiti
- Установка контроллера OpenZiti
- Веб-консоль OpenZiti (ZAC)
- Установка роутера OpenZiti
- Первый сервис OpenZiti: доступ к домашнему NAS без открытых портов
- Туннелер в домашней сети
- Подключение клиентов: Windows, macOS, Android, iOS, Linux
- OpenZiti как альтернатива VPN: доступ ко всей домашней сети
- Проверка и диагностика OpenZiti
- Безопасность OpenZiti: MFA, отзыв доступа и резервные копии
- Двухфакторная аутентификация
- Отзыв доступа
- Резервная копия и обновление
- Быстрый тест OpenZiti в Docker
- OpenZiti и другие решения: WireGuard, Tailscale, NetBird
- Частые вопросы про OpenZiti
OpenZiti — бесплатная платформа Zero Trust Network Access (ZTNA) с открытым исходным кодом под лицензией Apache 2.0. Её развивает компания NetFoundry. OpenZiti открывает доступ не ко всей сети, как VPN, а только к конкретным сервисам — и только тем пользователям и устройствам, которым это разрешено политиками. Сервису при этом не нужен ни один открытый входящий порт.
Статья обновлена в сентябре 2026 года для OpenZiti 2.0: установка контроллера и роутера из официальных пакетов, консоль ZAC, первый сервис без открытых портов, доступ к домашней сети вместо VPN, диагностика и сравнение с WireGuard, Tailscale и NetBird. Старая инструкция с демо-стендом в Docker Compose устарела.
Что такое OpenZiti
OpenZiti — это оверлейная сеть поверх обычного интернета. Все участники подключаются к ней исходящими соединениями, поэтому серверу не нужен белый IP и проброс портов, если рядом есть туннелер. Сеть состоит из нескольких частей:
- контроллер — «мозг» сети: хранит identity, сервисы и политики, выдаёт сертификаты и решает, кто куда может подключиться;
- роутеры (edge routers) — передают зашифрованный трафик между клиентами и сервисами; хотя бы один роутер должен быть доступен из интернета;
- identity — удостоверение пользователя, устройства или сервера на основе сертификата x509; выдаётся через одноразовый JWT-токен;
- туннелеры — клиенты Ziti Desktop Edge для Windows и macOS, Ziti Mobile Edge для Android и iOS и
ziti-edge-tunnelдля Linux; они перехватывают трафик приложений и отправляют его в оверлейную сеть; - SDK — библиотеки для Go, C, Java и Kotlin, Swift, C#, Python и Node.js, чтобы встроить Zero Trust прямо в приложение без туннелера.

Что такое Zero Trust Network Access (ZTNA)
Zero Trust Network Access (ZTNA) — модель безопасности «никому не доверяй, всё проверяй». В классической сети устройство, попавшее внутрь периметра через VPN или локальную сеть, получает доступ почти ко всему. В модели ZTNA доверенной сети нет вообще: каждое подключение к каждому сервису проходит аутентификацию и проверку политик, где бы ни находился пользователь.
Главный практический плюс ZTNA — сервисы перестают быть видимыми из интернета. Сканер портов не найдёт ни панель управления, ни SSH, ни домашний NAS, потому что на них нет открытых портов. Украденный пароль тоже не поможет: без identity с сертификатом и разрешающей политики до сервиса не достучаться.
OpenZiti или VPN: в чём разница
- Доступ к сервисам, а не к сети. VPN соединяет устройство с целой подсетью, OpenZiti — только с теми сервисами, которые разрешены политикой.
- Нет входящих портов. VPN-серверу нужен открытый порт, а сервисы за Ziti доступны без проброса портов: туннелер сам подключается к роутеру.
- Identity вместо общего ключа. У каждого устройства свой сертификат, его можно отозвать, не трогая остальных.
- Свои DNS-имена. Сервису можно дать имя вроде
nas.ziti— туннелер сам разрешит его и направит трафик в сеть. - Только TCP и UDP. ICMP в оверлее не передаётся, поэтому
pingдо сервиса не работает — проверяйте доступ черезcurlили браузер.
Если нужен просто быстрый туннель между своими серверами, WireGuard проще. OpenZiti выигрывает там, где важно точно разграничить, кто к чему имеет доступ, и спрятать сервисы из интернета.
Что понадобится для установки OpenZiti
- VPS с белым IP-адресом на Ubuntu 24.04 или 26.04, Debian 12 или 13 — официальные пакеты есть для семейств Debian и Red Hat. Для личной сети хватит самого простого тарифа;
- доменное имя для контроллера, например
ziti.example.com, с A-записью на IP сервера. Скрипт установки требует постоянный адрес: он попадает в сертификаты, и менять его потом сложно; - открытые порты
1280/tcpдля контроллера и3022/tcpдля роутера; - устройство в домашней сети для туннелера — мини-ПК, Raspberry Pi или любой Linux-сервер, если хотите открыть доступ к домашним сервисам.
Перед установкой подготовьте сервер по памятке по безопасности VPS: обновления, вход по SSH-ключу, UFW и Fail2ban.
Установка контроллера OpenZiti
Официальный скрипт подключает репозиторий проекта и ставит утилиту ziti. Затем установите пакет контроллера — запускайте команду в обычной SSH-сессии, чтобы скрипт настройки мог задать вопросы:
curl -sS https://get.openziti.io/install.bash | sudo bash -s openziti
sudo apt-get install openziti-controller
На AlmaLinux и Rocky Linux вместо apt-get используйте dnf install openziti-controller. Если настройка не запустилась сама, выполните скрипт вручную:
sudo /opt/openziti/etc/controller/bootstrap.bash
Скрипт спросит:
- Are you joining an existing cluster? —
N, создаём новую сеть. В OpenZiti 2.0 контроллер всегда работает в режиме кластера, даже если он один; - Permanent external address — DNS-имя контроллера, например
ziti.example.com; - Node name и Trust domain — можно оставить значения по умолчанию;
- Port —
1280; - Admin password — пусть скрипт сгенерирует случайный пароль, сохраните его;
- Console — да, чтобы включить веб-консоль ZAC;
- Certificate renewal timer — да, сертификаты будут продлеваться автоматически раз в месяц.
После успешной настройки служба ziti-controller запускается сама, а скрипт выводит готовую команду ziti edge login. Откройте порт и проверьте, что контроллер слушает его:
sudo ufw allow 1280/tcp
sudo ss -tlnp | grep ziti
Веб-консоль OpenZiti (ZAC)
Консоль администратора Ziti Admin Console (ZAC) ставится отдельным пакетом и работает на том же порту, что и контроллер:
sudo apt-get install openziti-console
Откройте https://ziti.example.com:1280/zac/ и войдите как admin с паролем из установки. Браузер предупредит о сертификате — контроллер использует собственный центр сертификации. Чтобы убрать предупреждение, выпустите сертификат Let’s Encrypt и укажите его в параметре alt_server_certs файла /var/lib/ziti-controller/config.yml — подробности в документации по консоли.
Всё, что описано ниже через командную строку, можно сделать и в консоли: разделы Identities, Services, Service Policies и Routers. Командами быстрее и проще повторить.
Установка роутера OpenZiti
Роутер можно поставить на тот же VPS. Сначала войдите в контроллер и создайте роутер — команда сохранит токен регистрации в файл. Ключ -t включает на роутере встроенный туннелер:
ziti edge login ziti.example.com:1280 -u admin -p 'ваш_пароль'
ziti edge create edge-router vps-router -t -o /tmp/vps-router.jwt
Установите пакет роутера и запустите настройку:
sudo apt-get install openziti-router
sudo /opt/openziti/etc/router/bootstrap.bash
Скрипт спросит постоянный внешний адрес роутера (DNS-имя или IP сервера), порт — по умолчанию 3022 — и токен регистрации: укажите путь /tmp/vps-router.jwt. Адрес контроллера роутер возьмёт из токена. Откройте порт и проверьте, что роутер в сети — в колонке ONLINE должно быть true:
sudo ufw allow 3022/tcp
ziti edge list edge-routers
Осталось разрешить identity и сервисам работать через роутеры. Для личной сети проще всего разрешить всё всем — точный доступ всё равно задают сервисные политики:
ziti edge create edge-router-policy all-routers-all-identities \
--edge-router-roles '#all' --identity-roles '#all'
ziti edge create service-edge-router-policy all-routers-all-services \
--edge-router-roles '#all' --service-roles '#all'
Первый сервис OpenZiti: доступ к домашнему NAS без открытых портов
Задача: открыть с ноутбука веб-интерфейс NAS по адресу 192.168.1.10:5000 в домашней сети, не пробрасывая порты на домашнем роутере и даже без белого IP. Так же публикуются Home Assistant, SSH, веб-интерфейс Proxmox или любой другой TCP-сервис.
Создайте две identity: laptop для ноутбука с атрибутом clients и home-gw для домашнего туннелера с атрибутом home-hosts. Атрибуты позволяют писать политики для групп, а не для каждого устройства:
ziti edge create identity laptop -a clients -o laptop.jwt
ziti edge create identity home-gw -a home-hosts -o home-gw.jwt
Теперь опишите сервис. Конфиг intercept.v1 говорит клиенту, какой адрес перехватывать (nas.ziti:5000), а host.v1 — куда туннелер отправит трафик в домашней сети:
ziti edge create config nas.intercept intercept.v1 \
'{"protocols":["tcp"],"addresses":["nas.ziti"],"portRanges":[{"low":5000,"high":5000}]}'
ziti edge create config nas.host host.v1 \
'{"protocol":"tcp","address":"192.168.1.10","port":5000}'
ziti edge create service nas --configs nas.intercept,nas.host -a home-services
И две политики: Dial разрешает клиентам подключаться к сервисам с атрибутом home-services, а Bind разрешает домашнему туннелеру их обслуживать:
ziti edge create service-policy home-dial Dial \
--service-roles '#home-services' --identity-roles '#clients'
ziti edge create service-policy home-bind Bind \
--service-roles '#home-services' --identity-roles '#home-hosts'

Туннелер в домашней сети
Скопируйте файл home-gw.jwt на домашний Linux-сервер или Raspberry Pi, поставьте ziti-edge-tunnel и добавьте identity:
curl -sS https://get.openziti.io/install.bash | sudo bash -s ziti-edge-tunnel
sudo systemctl enable --now ziti-edge-tunnel.service
sudo ziti-edge-tunnel add --jwt "$(< home-gw.jwt)" --identity home-gw
Туннелеру нужны только исходящие подключения к портам 1280 и 3022 вашего VPS — на домашнем роутере ничего открывать не нужно. Пакеты есть для x86_64 и arm64, подробности — в документации по туннелеру для Linux. Токен JWT одноразовый: после регистрации он больше не нужен, а для нового устройства создайте новую identity.
Подключение клиентов: Windows, macOS, Android, iOS, Linux
- Windows — установите Ziti Desktop Edge, нажмите добавление identity и выберите файл
laptop.jwt; - macOS — Ziti Desktop Edge из App Store, identity добавляется так же;
- Android и iOS — приложение Ziti Mobile Edge из Google Play или App Store: добавьте identity из JWT-файла или по QR-коду, который показывает консоль ZAC на странице identity;
- Linux — тот же
ziti-edge-tunnel, что и дома.
После регистрации откройте в браузере http://nas.ziti:5000. Если страница загрузилась — сервис работает через Ziti, а из интернета NAS по-прежнему не виден.
OpenZiti как альтернатива VPN: доступ ко всей домашней сети
Если сервисов много, не обязательно описывать каждый. Можно сделать один сервис на всю подсеть — получится аналог VPN, но только для домашней сети, остальной трафик пойдёт напрямую:
ziti edge create config lan.intercept intercept.v1 \
'{"protocols":["tcp","udp"],"addresses":["192.168.1.0/24"],"portRanges":[{"low":1,"high":65535}]}'
ziti edge create config lan.host host.v1 \
'{"forwardProtocol":true,"allowedProtocols":["tcp","udp"],"forwardAddress":true,"allowedAddresses":["192.168.1.0/24"],"forwardPort":true,"allowedPortRanges":[{"low":1,"high":65535}]}'
ziti edge create service home-lan --configs lan.intercept,lan.host -a home-services
Конфиг host.v1 с параметрами forwardAddress и forwardPort передаёт трафик ровно на тот адрес и порт, к которому обращался клиент, но только внутри разрешённой подсети. Сервис получает атрибут home-services, поэтому созданные раньше политики Dial и Bind уже на него действуют.
- Если сеть, где вы находитесь, тоже использует
192.168.1.0/24, адреса будут конфликтовать. Для домашней сети лучше выбрать редкую подсеть, например192.168.77.0/24; pingдо домашних устройств не пройдёт — в оверлее передаются только TCP и UDP;- точечные сервисы вроде
nas.zitiбезопаснее: подсеть открывает клиенту всё, что в ней есть. Давайте доступ к подсети только своим устройствам.
Если нужен только доступ к Home Assistant, есть вариант проще — CloudPub для внешнего доступа без белого IP.
Проверка и диагностика OpenZiti
Команда policy-advisor показывает, какие сервисы доступны identity и через какие роутеры, а list terminators — кто сейчас обслуживает сервис. Если терминаторов нет, домашний туннелер не подключён:
ziti edge policy-advisor identities laptop -q
ziti edge list terminators 'service.name="nas"'
journalctl -u ziti-controller.service -n 50
journalctl -u ziti-router.service -n 50
Частые проблемы:
- Сервис не виден в клиенте — нет политики Dial для identity или не созданы политики роутеров из раздела про установку роутера;
- Сервис виден, но не открывается — нет политики Bind, туннелер офлайн или в
host.v1указан неверный адрес или порт; - Роутер или клиент не подключается — закрыты порты 1280 или 3022 на VPS, либо DNS-имя контроллера не указывает на сервер;
- Регистрация не проходит — токен JWT уже использован или истёк: создайте identity заново;
- ping не отвечает — это нормально, ICMP через OpenZiti не передаётся.
Безопасность OpenZiti: MFA, отзыв доступа и резервные копии
Двухфакторная аутентификация
Сертификат identity хранится на устройстве, поэтому при краже ноутбука или телефона его стоит дополнить вторым фактором. В OpenZiti это делает проверка состояния (posture check) типа MFA — её подключают к политике Dial:
ziti edge create posture-check mfa mfa-check -a mfa
ziti edge update service-policy home-dial --posture-check-roles '#mfa'
После этого сервисы откроются только тем, кто включил MFA в свойствах identity в Ziti Desktop Edge или Ziti Mobile Edge и отсканировал QR-код приложением-аутентификатором, например Aegis или 2FAS. Другие типы проверок — версия ОС, запущенный процесс, домен Windows — описаны в документации по posture checks.
Отзыв доступа
Если устройство потеряно, удалите его identity — доступ пропадёт сразу, а активные соединения будут закрыты. Остальные устройства продолжат работать, менять общий ключ, как в VPN, не нужно:
ziti edge delete identity phone
Резервная копия и обновление
Всё состояние контроллера — PKI, конфигурация и база данных — лежит в /var/lib/ziti-controller. Потеря этого каталога означает, что придётся заново регистрировать все роутеры и устройства, поэтому храните копию вне сервера:
sudo systemctl stop ziti-controller
sudo tar czf /root/ziti-controller-$(date +%F).tar.gz -C /var/lib ziti-controller
sudo systemctl start ziti-controller
Пакеты OpenZiti обновляются вместе с системой. Обновляйте сначала контроллер, затем роутеры и туннелеры:
sudo apt update && sudo apt upgrade
Так же можно спрятать от интернета и другие сервисы на своём сервере — например, Nextcloud или Matrix Synapse для своей семьи или команды.
Быстрый тест OpenZiti в Docker
Чтобы просто посмотреть на Ziti, можно запустить контроллер и роутер в одном контейнере. Разработчики называют такой вариант quickstart и рекомендуют его для обучения, а не для постоянной работы:
mkdir ziti && cd ziti
wget -O compose.yml https://get.openziti.io/dock/all-in-one/compose.yml
docker compose up -d
Контроллер будет доступен на порту 1280, роутер — на 3022, консоль ZAC — по адресу https://localhost:1280/zac/, логин admin, пароль по умолчанию — admin. Чтобы задать свой, перед запуском создайте рядом с compose.yml файл .env со строкой ZITI_PWD=ваш_пароль. Демо-стенд с «синей» и «красной» сетями из старой версии статьи по-прежнему описан в документации, но для реального использования ставьте пакеты, как описано выше.
OpenZiti и другие решения: WireGuard, Tailscale, NetBird
Коротко о том, чем OpenZiti отличается от популярных альтернатив:
| Решение | Модель доступа | Свой сервер | Порты на стороне сервиса | Кому подойдёт |
|---|---|---|---|---|
| OpenZiti | к отдельным сервисам по политикам | да, всё open source | не нужны | тем, кому нужен настоящий Zero Trust и SDK для приложений |
| WireGuard | VPN-туннель к сети | да | нужен UDP-порт хотя бы на одной стороне | быстрый и простой VPN между своими узлами |
| Tailscale | mesh-сеть на WireGuard с ACL | нет, координация в облаке Tailscale | обычно не нужны | быстрый старт без своего сервера |
| Headscale | свой сервер координации для клиентов Tailscale | да | нужен порт на сервере Headscale | сеть как в Tailscale, но под своим контролем |
| NetBird | mesh-сеть на WireGuard с политиками и SSO | да или облако | обычно не нужны | mesh-сеть с удобной веб-панелью |
| Cloudflare Zero Trust | ZTNA как облачный сервис | нет | не нужны | командам, которым удобен готовый облачный сервис |
OpenZiti сложнее в первой настройке, чем Tailscale или NetBird, зато полностью работает на ваших серверах, не открывает сервисам ни одного порта и позволяет встроить Zero Trust прямо в собственное приложение через SDK.
Частые вопросы про OpenZiti
OpenZiti бесплатный?
Да. OpenZiti распространяется с открытым исходным кодом под лицензией Apache 2.0, ограничений на число пользователей и устройств нет. Компания NetFoundry продаёт на его основе облачный сервис и коммерческую поддержку.
Чем OpenZiti отличается от VPN?
VPN подключает устройство ко всей сети, а OpenZiti — только к разрешённым сервисам. У каждого устройства своя identity с сертификатом, а сервисам не нужны открытые входящие порты.
Нужен ли белый IP для OpenZiti?
Белый IP нужен только серверу с контроллером и роутером, например недорогому VPS. Домашним серверам и клиентам белый IP не нужен: туннелеры сами подключаются к роутеру исходящими соединениями.
Какие порты нужны OpenZiti?
По умолчанию контроллер использует порт 1280/tcp, а роутер — 3022/tcp. Консоль ZAC работает на порту контроллера по адресу /zac/.
Какие клиенты есть у OpenZiti?
Ziti Desktop Edge для Windows и macOS, Ziti Mobile Edge для Android и iOS и ziti-edge-tunnel для Linux. Кроме того, есть SDK для встраивания в собственные приложения.
Почему через OpenZiti не работает ping?
OpenZiti передаёт только TCP и UDP, протокол ICMP в сеть не попадает. Проверяйте доступ к сервисам через curl, браузер или SSH.
Можно ли включить двухфакторную аутентификацию в OpenZiti?
Да. Создайте posture check типа MFA и подключите его к политике Dial. Пользователь включает MFA в клиенте Ziti и подтверждает вход кодом из приложения-аутентификатора.
Как отозвать доступ у потерянного устройства?
Удалите его identity командой ziti edge delete identity или в консоли ZAC. Доступ пропадёт сразу, активные соединения закроются, а остальные устройства продолжат работать.
Без почты и трекеров — только лента обновлений.








