Аналог ZeroTier: своя локальная сеть через интернет для объектов и контроллеров

Инструменты

У любого, кто обслуживает объекты, рано или поздно набирается список машин, до которых нужно как-то дотягиваться: сервер умного дома в загородном доме, одноплатник в щите котельной, ноутбук на выезде, домашний медиасервер. Все они стоят за чужими роутерами, у большинства провайдер выдаёт «серый» IP, а на объект ехать ради одной перезагрузки службы — дорого.

Классический ответ на эту задачу — оверлейная сеть: ZeroTier, Tailscale, в старые времена Hamachi. Мы пользовались ими годами и в итоге сделали своё решение — ELX-VNetwork. Не потому что «своё лучше», а из-за вполне конкретных вещей, которые в чужих сервисах мешали работать. Разберём и задачу, и решение.

Сайт elxnetwork.ru — своя локальная сеть через интернет, аналог ZeroTier
elxnetwork.ru — клиент и сервер, обе части бесплатны

Задача: машины за NAT и «серым» IP

Домашний или объектовый роутер по умолчанию не пускает соединения снаружи внутрь. Более того, у большинства абонентов адрес не публичный, а выданный оператором из общего пула (NAT провайдера) — тогда «прокинуть порт» физически некуда. К этому добавляются мобильные модемы на объектах, где ситуация ещё жёстче.

Что обычно с этим делают:

  • Проброс портов и «белый» IP. Работает, но требует доступа к роутеру, доплаты провайдеру и выставляет наружу службы — то есть сразу же сканеры, переборы паролей и головную боль с обновлениями.
  • TeamViewer, AnyDesk и подобное. Годится посмотреть на экран, не годится для служб: нет доступа к веб-интерфейсу контроллера, нет SSH, нет сетевых папок, а на объекте ещё и должен быть кто-то с монитором.
  • Классический VPN (OpenVPN, WireGuard). Правильное решение, но его нужно поднять, раздать ключи, следить за маршрутами; плюс характерные протоколы часто режут в мобильных сетях.
  • Оверлейные сети (ZeroTier, Tailscale). Ставится клиент, машины оказываются в общей сети. Удобно — пока не упираешься в блокировки, чужое облако и P2P-магию, которая иногда не складывается.

Что такое виртуальная сеть поверх интернета

Идея простая. На каждой машине создаётся виртуальный сетевой адаптер, и системе он виден как обычная сетевая карта. Всё, что через него отправляется, упаковывается клиентом и уходит на сервер, а тот пересылает пакеты нужному участнику. Машины получают постоянные адреса вида 10.77.0.5 и общаются так, будто стоят в одной комнате, — независимо от того, где они физически находятся.

Важная деталь — на каком уровне работает такая сеть. ELX-VNetwork работает на уровне L2, то есть переносит кадры Ethernet целиком. Это значит, что работает не только IP-трафик, но и широковещание: соседи видны в «Сетевом окружении», находятся по именам, работают общие папки, принтеры, обнаружение устройств. Для инженерных задач это заметная разница: многие контроллеры и утилиты ищут оборудование именно широковещательным запросом.

Как это устроено: две программы

Система состоит всего из двух частей, и обе — по одному исполняемому файлу.

Сервер (elxvnet-server). Ставится один раз на машину с постоянным адресом и доменным именем — подойдёт самый дешёвый VPS: одного ядра и 512 МБ памяти хватает на десятки подключённых компьютеров. Внутри сразу три вещи: панель управления, учётные записи с сегментами и кодами приглашений и коммутатор, через который идут кадры. База — SQLite в файле рядом, ни PostgreSQL, ни Redis ставить не нужно. Наружу смотрит только 443 через nginx, сертификат Let's Encrypt получает сценарий установки.

Клиент (elxvnet). Ставится на каждую машину, которая должна попасть в сеть. Под Windows это установщик со службой, виртуальным адаптером и значком у часов; под Linux — пакет для amd64, arm64 и armhf, драйвер не нужен, всё необходимое давно есть в ядре. Клиент создаёт адаптер, получает от сервера постоянный адрес и держит одно исходящее соединение. Наружу он ничего не слушает и ничего не просит открыть — поэтому и работает за любым роутером, «серым» IP и мобильным модемом.

Почему свой сервер — это принципиально. Ключи, список машин и весь трафик остаются у вас, а не в чужом облаке. Сервис не может закрыться, сменить тарифы или потребовать регистрацию — вы ни от кого не зависите. Если поднимать сервер не хочется, у проекта есть демонстрационный.

Почему обычный HTTPS на порт 443

Транспорт здесь — WebSocket поверх TLS на 443-м порту. Снаружи это выглядит как соединение браузера с обычным сайтом: тот же порт, тот же протокол, тот же вид трафика. Отличить его от посещения сайта нечем, поэтому фильтрация по типу протокола (DPI) его не трогает.

Это ровно то, чего не хватает аналогам. У ZeroTier свой протокол поверх UDP на порту 9993, Tailscale построен на WireGuard — оба узнаваемы, и в мобильных сетях они первыми попадают под ограничения. Вторая разница — в способе соединения: аналоги сначала пытаются пробить NAT и построить прямой путь между машинами, и когда это не складывается, скорость и стабильность плавают. Здесь путь один и известен заранее: сеть поднимается за пару секунд после запуска и не «проваливается» посреди работы.

Плата за это честная: весь трафик идёт через ваш сервер, поэтому скорость упирается в его канал. Для управления оборудованием, SSH, веб-интерфейсов и файлов это несущественно; для постоянной перекачки терабайтов — нужен канал пожирнее.

Панель управления: сегменты, машины, приглашения

Всё управление собрано на одной странице: слева сегменты, в центре таблица участников, ниже коды приглашений и инструкция для подключения новой машины.

Панель ELX-VNetwork: сегмент, участники сети, их адреса, версии, нагрузка и приглашения
Участники сегмента: адрес, система, память и загрузка процессора, версия клиента, время на связи

Что видно и что можно сделать прямо отсюда:

  • Сегменты — несколько независимых сетей на одном сервере. Например, объекты заказчика отдельно от домашних машин.
  • Приглашения — машина входит по коду, а вы решаете, пускать её или нет. Код можно выдать монтажникам и отозвать, когда работы закончились.
  • Мониторинг — система, занятая память и загрузка процессора каждой машины, обновляются раз в полминуты из того, что ядро и так знает; никаких дополнительных агентов на чужом компьютере.
  • Обновление клиента одной кнопкой — отставший клиент на Linux обновляется прямо из таблицы: панель заходит по SSH и выполняет apt-get за вас. Windows обновляется сам.
  • Уведомления — машина пропала или вернулась, кто-то ждёт одобрения, кто-то ошибся паролем: в Telegram, письмом или и так, и так, со временем в вашем часовом поясе.

SSH-терминал прямо в браузере

Отдельная вещь, ради которой стоит смотреть на панель, — встроенный терминал. К любой Linux-машине из таблицы открывается обычный SSH-сеанс в браузере: имя и пароль спрашивает сама машина, никаких сохранённых ключей на сервере и туннелей руками.

SSH-терминал ELX-VNetwork в браузере: вход на удалённую Linux-машину
Терминал в браузере: перезапустить службу на объекте можно с телефона

На практике это закрывает большую часть выездов: посмотреть журнал сервиса, перезапустить его, обновить пакет, проверить связь с контроллером. Всё это делается с любого устройства, где есть браузер, — включая телефон в дороге.

Установка за две минуты

На Linux — подключить репозиторий и войти в сеть по коду приглашения:

sudo wget -qO /usr/share/keyrings/elx-repo.gpg https://repo.um-d.ru/elx-repo.gpg
echo "deb [signed-by=/usr/share/keyrings/elx-repo.gpg] https://repo.um-d.ru stable main" \
    | sudo tee /etc/apt/sources.list.d/elx-repo.list
sudo apt update

sudo apt install elx-vnetwork
sudo elxvnet join -server https://ваш-сервер -invite ELX-XXXX-XXXX-XXXX
sudo systemctl start elxvnet

На Windows — запустить установщик (около 4,8 МБ) и вписать те же две строки: адрес сервера и код приглашения. Поддерживаются Windows 10 и 11 (64-разрядные) и Linux (Debian, Ubuntu и производные) на amd64, arm64 и armhf, включая Raspberry Pi и Orange Pi. Состояние проверяется командой elxvnet status — она покажет выданный адрес и всех соседей по сегменту.

Сценарии, ради которых это делалось

Обслуживание объектов умного дома. Сервер автоматизации в доме заказчика виден по постоянному адресу: можно открыть его веб-интерфейс, зайти по SSH, посмотреть, что с контроллерами. Заказчику ничего настраивать не нужно — на его роутере вы не трогаете ничего.

Щиты и одноплатники. Orange Pi или Raspberry Pi в щите с мобильным модемом — самый неудобный случай для любых пробросов, и самый частый на практике. Одно исходящее соединение решает задачу целиком.

Распределённая команда. Несколько компьютеров в разных городах в одной сети: общие папки, RDP, внутренние сервисы. Сегменты позволяют держать проекты раздельно.

Домашние задачи. Доступ к домашнему серверу, NAS или медиатеке из любой точки, без «белого» IP и без выставленных наружу служб.

Безопасность и что стоит учитывать

Трафик идёт по TLS, сервер — ваш, наружу открыт единственный порт 443. Тем не менее пара вещей заслуживает внимания при проектировании доступа.

  • Виртуальная сеть — это настоящая локальная сеть. Всё, что доступно в ней, доступно каждому её участнику. Разносите объекты и клиентов по разным сегментам, а не сваливайте в один.
  • Коды приглашений отзывайте. Выданный монтажникам код имеет смысл закрывать после окончания работ — в панели это одна кнопка.
  • Пароли на самих машинах никто не отменял. Сеть даёт связность, а не аутентификацию служб: SSH, веб-интерфейсы и общие папки по-прежнему защищаете вы.
  • Сервер — точка отказа. Это плата за предсказуемость: пока сервер жив, сеть работает одинаково; упал сервер — связи нет. Дешёвый VPS с автозапуском через systemd закрывает вопрос.

Итог

ELX-VNetwork решает ту же задачу, что ZeroTier, Tailscale и Hamachi: машины за чужими роутерами оказываются в одной локальной сети. Разница — в доставке: обычный HTTPS на 443, который не за что резать; один путь вместо перебора маршрутов; свой сервер вместо чужого облака; клиент в несколько мегабайт без служб-спутников и обязательной регистрации.

Программа бесплатна целиком — и клиент, и сервер, — без подписок и ограничений по числу машин, в том числе для коммерческого использования. Скачать, посмотреть скриншоты панели и справку можно на elxnetwork.ru. Другие наши бесплатные инструменты — MQTT-брокер и мост Modbus → MQTT — собраны на странице «Полезное».

Готовы купить умный дом?

Бесплатный подбор комплекта, расчёт стоимости и доставка по всей России

Заказать обратный звонок

Оставьте номер — перезвоним в течение 15 минут