SIRINVIDEO CCTV Документация администратора и пользователя На сайт 2026.08

Камеры за NAT: туннели

Агент и релей: подключение камер из закрытых сетей без белого IP.

Туннель нужен, когда камера физически недоступна медиаузлу: она стоит в чужой локальной сети, за NAT, без белого IP и без VPN. Вместо того чтобы пробрасывать порты на объекте, в его сети запускается агент, который сам, исходящим соединением, приходит на релей — публичный сервер вашей инсталляции. Plane выдаёт каждой камере стабильные публичные адреса ONVIF и RTSP на релее, и медиаузел работает с ней как с обычной камерой.

Раздел консоли: /admin/infrastructure/tunnels, заголовок «Безопасные туннели камер», подзаголовок «Relay-серверы, исходящие LAN-агенты, обнаруженные камеры, стабильные маршруты и ACL точных адресов.»

Как это устроено#

  объект (закрытая сеть)                    ваша инфраструктура
 ┌───────────────────────────┐            ┌──────────────────────────┐
 │  камеры (RTSP + ONVIF)    │            │  Plane  cctv.example.com │
 │        ▲                  │            │    ▲                     │
 │        │ LAN              │            │    │ управление          │
 │  ┌─────┴─────┐            │            │  ┌─┴──────────┐          │
 │  │   агент   │────────────┼───────────▶│  │   релей    │◀───── нода
 │  └───────────┘  исходящее │  TLS       │  └────────────┘  RTSP/ONVIF
 └───────────────────────────┘            └──────────────────────────┘

Ключевые свойства модели:

  • Агент не принимает входящих подключений. На объекте не нужны ни белый IP, ни проброс портов, ни правила во входящем направлении — достаточно исходящего доступа к одному TLS-порту релея.
  • Публичные адреса стабильны. Каждой паре «камера + сервис» Plane выделяет постоянную аренду эндпоинта, поэтому конфигурация ноды не «плывёт» при переподключениях агента.
  • Порт открывается только явным действием. Обнаружение камеры само по себе публичный порт не открывает.
  • Ноды туннельных двоичных файлов не запускают. Нода продолжает забирать обычный RTSP URL — она вообще не знает, что за ним туннель.

Роли в консоли: раздел «Relay-серверы» виден только суперадминистратору, раздел «Агенты» — суперадминистратору и админу организации.

Порядок развёртывания#

Порядок обязателен: агента нельзя создать, пока нет включённого релея.

Шаг 1. Создать relay-сервер (суперадмин)#

/admin/infrastructure/tunnels → раздел «Relay-серверы»«Новый relay-сервер».

Поле Что указывать
«Публичный IP или hostname» адрес, по которому агенты видят релей из интернета
«Единый TLS-порт агентов» один порт, куда приходят все агенты
«Базовые CIDR потребителей (по одному в строке)» адреса Plane и медиаузлов, которым разрешено ходить в туннельные порты
«Диапазон публичных портов камер» из какого диапазона выдавать стабильные эндпоинты ONVIF и RTSP
«Допуск офлайн, секунд» сколько релей работает по последнему снимку конфигурации, если Plane недоступен
«Управляющее соединение» «Plane → relay» (если Plane стоит в DMZ и сам ходит к релею) или «Relay → Plane»

Сразу после создания откройте вкладку «Конфигурация запуска» и сохраните файл.

Шаг 2. Установить релей#

# на публичном сервере релея
sudo installers/hastreamer-cctv-relay/install.sh

# положить конфигурацию, полученную в консоли
sudo install -o root -g hastreamer-cctv-relay -m 0640 relay.toml \
  /etc/hastreamer-cctv-relay/relay.toml
sudo systemctl start hastreamer-cctv-relay
systemctl is-active hastreamer-cctv-relay          # active

Шаг 3. Создать агента#

Раздел «Агенты»«Новый агент».

Поле Что указывать
«Назначенный relay» к какому релею привязан агент — привязка постоянна
«Разрешённые CIDR локальной сети» подсети объекта, куда агенту разрешено ходить
«Зарезервированные/запрещённые IP целей» адреса, к которым обращаться нельзя (шлюзы, серверы, АРМ)
«Макс. ожидающих подключений», «Сессий на маршрут» ограничители нагрузки
«Разрешить специальные цели» только суперадмин, по необходимости

Откройте вкладку «Конфигурация запуска» и скопируйте файл кнопкой «Копировать конфигурацию».

Секреты показываются один раз

Секрет релея и секрет агента выдаются только при создании или явной ротации. Plane хранит лишь их отпечаток и повторно значение не показывает. Не сохранили — остаётся «Ротировать секрет», а это немедленно обрывает работу текущей конфигурации: старый ключ перестаёт действовать в момент ротации, и процесс нужно перезапустить с новым файлом.

Файл конфигурации содержит секреты: «Файл содержит секреты: храните его с правами только владельца и перезапускайте процесс после замены.» Права — 0640, владелец — служебная учётная запись; двоичные файлы отказываются запускаться с конфигурацией, доступной группе или всем.

Шаг 4. Установить агента в сети объекта#

# на машине внутри локальной сети объекта
sudo installers/hastreamer-cctv-agent/install.sh

sudo install -o root -g hastreamer-cctv-agent -m 0640 agent.toml \
  /etc/hastreamer-cctv-agent/agent.toml
sudo systemctl start hastreamer-cctv-agent
journalctl -u hastreamer-cctv-agent -n 20 --no-pager

Агенту достаточно исходящего доступа к TLS-порту релея и сетевого доступа к камерам объекта. Входящие правила на объекте не нужны.

Агент на связи

В консоли, в карточке агента на вкладке «Обзор», статус должен смениться на «Агент в эфире», а поле «Последняя связь» — обновляться. Статус «Relay не в сети» означает проблему на стороне релея, а не агента.

Шаг 5. Найти камеры и подготовить маршруты#

  1. Откройте карточку агента → вкладка «Обнаруженные камеры». Здесь инвентарь ONVIF-устройств, который передал агент; свежие помечены как «Найдена в последнем сканировании». Если список пуст: «Агент пока не передал ONVIF-устройства.»
  2. Для нужного устройства нажмите «Подготовить маршруты камеры» — Plane выделит стабильные эндпоинты ONVIF и RTSP.
  3. Нажмите «Добавить в «Камеры»» — откроется форма камеры, уже с типом источника «Камера через агент» и выбранным устройством.
  4. Введите «Имя пользователя» и «Пароль» камеры и нажмите «Проверить и получить профили». До успешной проверки перейти к следующему шагу формы нельзя: «Перед продолжением проверьте учётные данные и получите рабочий основной RTSP-профиль.» Успех: «Камера проверена: получено рабочих профилей — {count}.»
  5. Пройдите шаги «Профили потоков» и «Запись и размещение» как у обычной камеры и сохраните её — Добавление камер.

Вкладки карточки агента#

Вкладка Что показывает
«Обзор» статус агента и релея, «Последняя связь», «Активные сессии», «Активные эндпоинты», «Добавлено / обнаружено камер», «Политика агента»
«Обнаруженные камеры» инвентарь ONVIF-устройств объекта и действия по ним
«Эндпоинты» «Стабильные аренды эндпоинтов»: «Сервис», «Цель в LAN», «Публичный эндпоинт» и состояние («Доступен», «Выделен · недоступен», «Карантин», «Освобождён»)
«Доступ» «Дополнительный доступ точных адресов»: «Исходный IP/CIDR» и «Область маршрутов» — все маршруты агента или один эндпоинт
«Конфигурация запуска» готовый файл конфигурации агента

Что меняется на стороне камеры#

Камера, добавленная через агент, отличается от обычной в нескольких важных местах:

  • «Хост / IP» и «Порт ONVIF» заполняются автоматически и доступны только для чтения — это адреса выделенной аренды, а не адрес камеры в её локальной сети.
  • Проверка обязательна при создании. Без успешной проверки учётных данных и получения рабочего основного профиля камеру сохранить нельзя.
  • Тип источника после создания не меняется — как и у любой другой камеры.
  • Удаление камеры дополнительно снимает туннельную обвязку: «Камера также будет удалена из сохранённого инвентаря агента, её tunnel-маршруты будут отозваны, а публичные порты помещены в карантин перед повторным использованием.»
Туннельную камеру нельзя удалить массовой операцией

У такой камеры есть связанное устройство агента, аренды портов и квоты — их снимает только индивидуальное удаление. Если в выделение попадёт хотя бы одна туннельная камера, вся пачка будет отклонена целиком: не удалится ни одна из выбранных камер. Удаляйте туннельные камеры по одной через «Изменить» → «Удаление камеры».

Ещё два ограничения, которые защищают работающие камеры:

  • Действие «Освободить» на вкладке «Эндпоинты» запрещено для эндпоинта, который использует камера — сначала удалите камеру.
  • «Удалить агент» блокируется, пока к нему привязаны камеры, а «Удалить relay-сервер» — пока к нему привязаны агенты.

Сеть и firewall#

Направление Что открыть
объект → релей исходящее на «Единый TLS-порт агентов»; входящих правил на объекте не требуется
Plane и ноды → релей «Диапазон публичных портов камер» — только для адресов из «Базовых CIDR потребителей»
релей → Plane или Plane → релей в зависимости от выбранного «Управляющего соединения»
Диапазон портов камер нельзя открывать в интернет

Список разрешённых адресов задаётся дважды: правилами хоста или облака и ACL самого релея. Второй уровень обязателен, но он не заменяет firewall. RTSP на участке «нода — релей» переносит учётные данные камеры, поэтому этот участок допустим только в доверенной сети (частная сеть, VPN, канал провайдера) — публиковать его в общий интернет нельзя.

Plane проверяет наблюдаемый адрес источника у релея, поэтому в поле «Исходящий IP relay, видимый Plane» указывайте фактический публичный адрес после NAT, а не значение из заголовков.

Эксплуатация#

  • Ротация секрета. «Ротировать секрет» в консоли → заменить файл конфигурации на сервере (атомарно, права 0640) → перезапустить процесс. Старая управляющая личность перестаёт работать сразу.
  • Кратковременная недоступность Plane. Релей продолжает работать по последнему корректному снимку в пределах «Допуска офлайн»; просроченный, повреждённый или чужой снимок отключает публичные слушатели — это защита, а не сбой.
  • Карантин портов. Освобождённые публичные порты какое-то время не переиспользуются. Обходить карантин вручную нельзя.
  • Что смотреть при разборе: наблюдаемая ревизия конфигурации, аптайм, число подключённых агентов, активные и ожидающие сессии, счётчики трафика — вкладка «Обзор» карточки агента и карточка релея.

Диагностика#

Симптом Вероятная причина Что делать
Кнопка «Новый агент» недоступна нет включённого relay-сервера «Попросите суперадминистратора настроить и включить relay-сервер.»
Статус агента «Агент не в сети» нет исходящего доступа к TLS-порту релея проверьте firewall объекта и journalctl -u hastreamer-cctv-agent -f
Статус «Relay не в сети» не запущен или недоступен релей systemctl status hastreamer-cctv-relay на сервере релея
«Агент пока не передал ONVIF-устройства.» камеры вне «Разрешённых CIDR локальной сети» или ONVIF выключен на камере расширьте список CIDR, проверьте ONVIF на камере
Проверка камеры не проходит неверные учётные данные ONVIF или маршруты ещё не готовы повторите «Проверить и получить профили»; при сбое подготовки — «Повторить подготовку маршрутов»
Нода не забирает поток «Базовые CIDR потребителей» не включают адрес ноды добавьте адрес ноды в ACL релея и в firewall
Не удаляется агент к нему привязаны камеры удалите туннельные камеры по одной, затем агента

Смежные разделы: Добавление камер, Ноды и флот, Порты и сеть, Диагностика неисправностей.