Командная строка (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 | — (обязателен) | имя узла в кластере. |
--kind | server | тип узла: server (может быть выходным) или client (только инициатор — конечный пользователь). |
--admin | false | выдать узлу admin-доступ к ControlPlane. Допустимо и для client — администратор кластера обычно работает с пользовательского устройства. |
--edge | false | роль точки входа. У client включена всегда. |
--exit | false | роль выходного узла (только server). |
--role-master | false | роль мастера (только server; мастер в кластере один). |
--addrs | — | список host:port через запятую — как узел доступен извне (нужно выходным узлам). |
--tun-address | — | адрес /32 узла в mesh. Для client можно не указывать — мастер выдаст свободный адрес из mesh-диапазона сам. |
--tun-mtu | 1420 | MTU TUN-интерфейса. |
--exit-listen | 0.0.0.0:443 | адрес прослушивания выходного узла. |
--camouflage | embedded | режим маскировки фасада: none, embedded, proxy. |
--camouflage-upstream | — | URL легитимного сайта для --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 | шаблоны доменов через запятую. |
--cidrs | CIDR-префиксы через запятую. |
Нужен хотя бы один из --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 # флаги конкретной подкоманды