Перейти к содержанию

Подключение к сети

·2 минуты·
Новый участник сети Sigil Gate вносит два ресурса: входной узел (Entry) и выходной узел (Core). Процедура подключения контейнеризована и не требует передачи SSH-доступа к серверу.

Общий принцип #

Администратор принимает решение о подключении участника и генерирует одноразовый join-токен. Участник получает токен через личный канал связи и самостоятельно запускает контейнеры на своих серверах.

Токен действует 24 часа и может быть использован один раз. После использования сгорает — повторное применение невозможно.

Подключение Entry-ноды #

Entry-нода вступает в K8s-кластер как worker node. Участник устанавливает агент K8s (k3s) на своём сервере:

curl -sfL https://get.k3s.io | \
  K3S_URL=https://<MANAGEMENT_CLUSTER>:6443 \
  K3S_TOKEN=<JOIN_TOKEN> \
  sh -

После запуска:

  1. Сервер регистрируется в K8s-кластере как worker node.
  2. Kubernetes автоматически размещает на нём Entry-поды.
  3. Сервер включается в rotation K8s LoadBalancer.

Требования к серверу Entry-ноды:

ПараметрМинимум
CPU1 vCPU
RAM512 MB
Диск10 GB SSD
ОСUbuntu 22.04 / Debian 12
РасположениеВнутри регулируемого региона

Подключение Core-ноды #

Core-нода работает через Docker. Участник устанавливает Docker и запускает контейнер с join-токеном:

docker run -d \
  --name sigilgate-core \
  --restart unless-stopped \
  -p 443:443 \
  sigilgate/core-node \
  --join-token=<JOIN_TOKEN>

При первом запуске контейнер автоматически:

sequenceDiagram participant C as Контейнер participant M as Управляющий кластер C->>C: Генерация ключевой пары (локально) C->>M: Токен + CSR M->>M: Проверка токена (одноразовый, срок действия) M->>M: Подпись CSR → сертификат M-->>C: mTLS-сертификат M->>M: Токен сожжён C->>M: Регистрация: адрес, параметры M->>M: Запись в etcd C->>C: Старт Nginx + Xray + сайт-прикрытие

Ключевой момент: приватный ключ генерируется внутри контейнера и никогда не покидает сервер участника. Управляющий кластер получает только CSR (запрос на подпись) и выдаёт сертификат.

Требования к серверу Core-ноды:

ПараметрМинимум
CPU1 vCPU
RAM512 MB
Диск10 GB SSD
ОСLinux (любой дистрибутив с Docker)
ОбязательноDocker
IPv4Выделенный белый адрес
РасположениеВне регулируемого региона

После подключения #

После успешной регистрации Core-ноды:

  1. Управляющий кластер назначает ноду в ячейку (или создаёт новую).
  2. Администратор привязывает клиентские устройства участника к его Core-ноде.
  3. Entry-поды начинают маршрутизировать трафик этих клиентов на новую Core-ноду.
  4. Участник получает subscription URL для своих устройств через Telegram-бот.

Выход из сети #

Участник может выйти из сети в любой момент, просто отключив свои серверы. Управляющий кластер зафиксирует потерю heartbeat от Core-ноды и автоматически выведет её из ротации.

Рекомендуется сообщить администратору заранее — чтобы клиентские устройства участника получили временный резервный доступ до полного восстановления.