Командная строка (CLI)

Управлять кластером можно не только из десктоп- и мобильной админки, но и из терминала — командой ololo-relay admin. Это тот же бинарь ololo-relay, что и сервер: подкоманда admin обращается к мастеру по тому же gRPC ControlPlane (порт :443), что и графические клиенты.

CLI удобен для скриптов, первичной настройки кластера и работы по SSH, когда графического клиента под рукой нет.

Подключение к мастеру

Все admin-команды принимают общие параметры подключения:

ФлагНазначение
--master host:portадрес мастера. По умолчанию берётся из переменной окружения OLOLO_RELAY_MASTER.
--token <token>admin-токен для авторизации. По умолчанию — из OLOLO_RELAY_ADMIN_TOKEN.
--insecureподключаться без TLS (только для локального/dev-стенда на loopback).

Токен должен принадлежать узлу с флагом admin: true в политике — иначе мастер вернёт PermissionDenied (см. роли и безопасность). Выдать админ-доступ можно флагом --admin при регистрации узла (peer add, см. ниже) — любому узлу, включая обычного пользователя (--kind client).

Удобнее всего задать адрес и токен один раз через окружение:

export OLOLO_RELAY_MASTER=master-1.example.com:443
export OLOLO_RELAY_ADMIN_TOKEN="<admin-токен>"

Дальше во всех примерах флаги --master/--token опускаются.

Узлы — peer

peer add — зарегистрировать узел

ololo-relay admin peer add --id exit-1 --kind server --exit \
  --addrs "exit-1.example.com:443" --camouflage embedded

Основные флаги:

ФлагПо умолчаниюНазначение
--id— (обязателен)имя узла в кластере.
--kindserverтип узла: server (может быть выходным) или client (только инициатор — конечный пользователь).
--adminfalseвыдать узлу admin-доступ к ControlPlane. Допустимо и для client — администратор кластера обычно работает с пользовательского устройства.
--edgefalseроль точки входа. У client включена всегда.
--exitfalseроль выходного узла (только server).
--role-masterfalseроль мастера (только server; мастер в кластере один).
--addrsсписок host:port через запятую — как узел доступен извне (нужно выходным узлам).
--tun-addressадрес /32 узла в mesh. Для client можно не указывать — мастер выдаст свободный адрес из mesh-диапазона сам.
--tun-mtu1420MTU TUN-интерфейса.
--exit-listen0.0.0.0:443адрес прослушивания выходного узла.
--camouflageembeddedрежим маскировки фасада: none, embedded, proxy.
--camouflage-upstreamURL легитимного сайта для --camouflage proxy.
--token-valueзадать готовый raw-токен вместо автогенерации.

После регистрации команда печатает bootstrap-сниппет с токеном узла:

Bootstrap snippet for this node (KEEP THIS TOKEN SECRET):

node:
  id: exit-1
  master_token: <сгенерированный-токен>

Токен показывается один раз — скопируйте его сразу. При утере выпустите новый через peer rotate-token.

Регистрация пользователя (мобильный/десктоп-клиент) — короче, адрес в mesh назначит мастер:

ololo-relay admin peer add --id alice --kind client --admin

peer list — список узлов

ololo-relay admin peer list

Печатает таблицу: имя, тип, флаг admin, роли (e/x/m — edge/exit/master) и адреса.

peer rm — удалить узел

ololo-relay admin peer rm --id exit-1

Токен удалённого узла сразу перестаёт действовать. Встроенные узлы (localhost, drop) удалить нельзя.

peer set-camouflage — сменить маскировку

Точечно меняет режим маскировки узла, не пересоздавая его (токен сохраняется):

ololo-relay admin peer set-camouflage --id exit-1 --mode proxy \
  --upstream https://example.com

peer set-mtu — сменить MTU TUN-интерфейса узла

ololo-relay admin peer set-mtu --id exit-1 --mtu 1360

Полезно при «двойном VPN» (например relay за OpenVPN/Pritunl), когда тяжёлый TCP зависает из-за слишком большого MTU. Новый MTU применится на узле после его рестарта — TUN поднимается один раз на старте. Токен при этом не меняется.

peer rotate-token — выпустить новый токен

ololo-relay admin peer rotate-token --id exit-1

Старый токен немедленно перестаёт работать; новый печатается один раз — доставьте его на узел в node.yaml.

Маршруты — route

route add — добавить/заменить маршрут

ololo-relay admin route add --id cn-via-sg \
  --peers singapore-1 \
  --domains ".cn,.taobao.com" \
  --cidrs "1.2.3.0/24"
ФлагНазначение
--idимя маршрута (обязателен). Маршрут с таким же именем перезаписывается.
--peersузлы через запятую в порядке fail-fast приоритета (обязателен).
--domainsшаблоны доменов через запятую.
--cidrsCIDR-префиксы через запятую.

Нужен хотя бы один из --domains/--cidrs.

route list — список маршрутов

ololo-relay admin route list

route rm — удалить маршрут

ololo-relay admin route rm --id cn-via-sg

Трафик по умолчанию — default set

Что делать с трафиком, не попавшим ни в один маршрут:

ololo-relay admin default set --mode relay --peers singapore-1

--mode — один из relay (через указанные --peers), direct (напрямую) или drop (блокировать).

Политика — policy dump

Короткая сводка текущей политики (версия, число узлов и маршрутов, режим по умолчанию):

ololo-relay admin policy dump

Справка

ololo-relay help                    # общая справка
ololo-relay admin <команда> --help  # флаги конкретной подкоманды