> For the complete documentation index, see [llms.txt](https://docs.seedex.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.seedex.net/ru/user-guide/seedex-box.md).

# seedex-box

Эта страница описывает команду `sdx` на роутере и приложение для LuCI.

## Команда `sdx`

`sdx` построен вокруг четырёх сервисов — `router`, `vpn`, `proxy` и `dns` — и `link`, связи с вашими серверами. Каждая команда следует одному шаблону:

* `sdx` показывает статус роутера.
* `sdx <service>` показывает статус одного сервиса.
* `sdx <service> <action>` выполняет одно действие над одним сервисом.
* `sdx <action>` выполняет то же действие над каждым сервисом, у которого оно есть.
* `sdx <service> help` перечисляет действия сервиса.

### Применение изменений

Изменения, которые вы вносите через `sdx` — добавление, удаление, включение, правка и настройки, — ожидают применения.

* `sdx apply` сохраняет ожидающие изменения и перезапускает сервис.
* `sdx revert` отменяет ожидающие изменения.
* `sdx changes` показывает ожидающие изменения.

Каждая из этих команд работает с одним сервисом (`sdx vpn apply`) или со всеми. Под капотом это обычный UCI: `restart` тоже подхватывает ожидающие изменения.

{% hint style="warning" %}
В LuCI каждая страница Seedex показывает свои ожидающие изменения с кнопками **Apply** и **Revert**. Штатный **Save & Apply** OpenWrt их не видит.
{% endhint %}

### Адресация записей

Записи — конфиги VPN и proxy и правила router — адресуются по имени или по номеру в списке `show`. Действия `show`, `enable`, `disable` и `remove` принимают несколько записей сразу.

### Действия каждого сервиса

* `sdx <service> start`, `stop` и `restart` управляют сервисом. Без сервиса `sdx restart` останавливает все четыре сервиса и запускает их по порядку: DNS, туннели, затем router.
* `sdx <service> enable` и `disable` держат сервис включённым или выключенным между перезагрузками. `disable` заодно останавливает сервис, `enable` — запускает. С именем записи после действия оно применяется к записи.
* `sdx <service> changes`, `apply` и `revert` работают так, как описано в разделе «Применение изменений».

### Действия роутера в целом

* `sdx import <path>` импортирует файл конфига или все конфиги из каталога. Файл `.conf` AmneziaWG идёт в `vpn`, файл `.json` sing-box — в `proxy`, файл `.json` с правилами — в `router`. Имя файла становится именем записи. Занятое имя отклоняется.
* `sdx logs` показывает строки Seedex из системного лога. Аргументы передаются в `logread`, так что `sdx logs -f` следит за логом.
* `sdx version` показывает версию установленного пакета.

## VPN

Сервис VPN держит туннели AmneziaWG. Каждый конфиг — отдельный туннель. Роутер пробует все и ведёт трафик через самый быстрый живой туннель, поэтому несколько конфигов дают резервирование, а не выбор.

* `sdx vpn` показывает, работает ли сервис, и перечисляет каждый конфиг. `[*]` отмечает конфиг, несущий трафик. Доступные конфиги показывают RTT.
* `sdx vpn show [#|name ...]` перечисляет конфиги с интерфейсом туннеля и файлом или показывает названные конфиги с содержимым.
* `sdx vpn enable <#|name ...>` и `disable` включают или выключают конфиги, не удаляя их.
* `sdx vpn remove <#|name ...>` удаляет конфиги. Их файлы удаляются при следующем запуске.
* `sdx vpn export` печатает каждый конфиг в виде, который принимает `sdx import`.
* `sdx vpn reset` останавливает сервис и удаляет каждый конфиг вместе с файлами.

## Proxy

Сервис proxy держит туннель sing-box. Каждый конфиг отдаёт свои outbound-ы одному экземпляру sing-box, который выбирает лучший outbound по URL-тесту. Роутер видит результат как один туннель рядом с туннелями VPN.

* `sdx proxy` показывает, работает ли сервис, и перечисляет каждый конфиг. Outbound, который использует sing-box, показывает RTT туннеля. `[*]` означает, что роутер ведёт трафик через proxy.
* `sdx proxy show [#|name ...]` перечисляет конфиги с файлами или показывает outbound-ы названных конфигов.
* `sdx proxy enable <#|name ...>` и `disable` включают или выключают конфиги. sing-box пересобирается из включённых конфигов при следующем перезапуске.
* `sdx proxy remove <#|name ...>` удаляет конфиги. Их файлы удаляются при следующем запуске.
* `sdx proxy export` печатает каждый конфиг в виде, который принимает `sdx import`.
* `sdx proxy reset` останавливает сервис и удаляет каждый конфиг вместе с файлами.
* `sdx proxy config show`, `get <key>` и `set <key>=<value> ...` управляют настройками:
  * `log_level`: подробность sing-box: `error`, `warn`, `info`, `debug` или `trace`.
  * `urltest_interval`: как часто sing-box перемеряет outbound-ы, например `1m`.

## Router

Сервис Router решает, куда идёт трафик. Маршрут по умолчанию отправляет весь трафик либо через туннель, либо напрямую к провайдеру, а правила переопределяют его для отдельных доменов, IP-адресов, подсетей, списков или устройств. Watchdog пробует каждый туннель и держит туннельный трафик на самом быстром живом. Kill switch следит, чтобы трафик, который должен идти через туннель, не ушёл к провайдеру открытым, когда ни один туннель не поднят: такие соединения блокируются до появления живого туннеля.

### Правила

У правила есть `type`, который говорит, что происходит с совпавшим трафиком:

* `overlay` отправляет трафик через туннель.
* `direct` отправляет трафик напрямую к провайдеру.
* `block` перестаёт резолвить домены и блокирует соединения с IP-адресами.

Правило совпадает либо по назначению, либо по устройству, но не по обоим. Правила по устройству сильнее правил по назначению: устройство, закреплённое за `direct`, остаётся direct даже для доменов, которые другие правила отправляют в туннель.

Матчеры по назначению, каждый можно повторять:

* `domain=<domain>` совпадает с доменом и его поддоменами.
* `ip=<address or CIDR>` совпадает с IP-адресом или диапазоном.
* `list_url=<url>` совпадает с текстовым файлом, в котором по домену или IP-адресу на строку. Файл загружается при старте сервиса и затем каждые `list_refresh` (например `12h` или `1d`). Файлы в формате hosts принимаются как есть.
* `list_path=<file>` совпадает с таким же файлом из файловой системы роутера.

Матчеры по устройству:

* `client_mac=<aa:bb:cc:dd:ee:ff>` совпадает с каждым пакетом от этого устройства.
* `client_ip=<address or CIDR>` совпадает с каждым пакетом с этого адреса или подсети: гостевой VLAN, устройство со статическим адресом или клиент за другим роутером.

Примеры:

```sh
sdx router add youtube type=overlay domain=youtube.com domain=googlevideo.com
sdx router add ads type=block list_url=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts list_refresh=1d
sdx router add tv type=direct client_mac=aa:bb:cc:dd:ee:ff
sdx router add guests type=direct client_ip=10.0.20.0/24
```

### Команды

* `sdx router` показывает, работает ли сервис, режим маршрутизации, kill switch, интервал watchdog и правила.
* `sdx router show [#|name ...]` перечисляет правила или показывает каждое поле названных правил.
* `sdx router add <name> type=... [matchers]` добавляет правило.
* `sdx router update <#|name> ...` меняет правило. Команда принимает `type=`, `name=`, опции списка и следующие операции с матчерами:
  * `domain=`, `del-domain=` и `clear-domains`
  * `ip=`, `del-ip=` и `clear-ips`
  * `client_mac=`, `del-client_mac=` и `clear-client_macs`
  * `client_ip=`, `del-client_ip=` и `clear-client_ips`
* `sdx router enable <#|name ...>` и `disable` включают или выключают правила.
* `sdx router remove <#|name ...>` удаляет правила.
* `sdx router export` печатает правила в JSON, который принимает `sdx import`.
* `sdx router reset` останавливает сервис и удаляет каждое правило.
* `sdx router config show`, `get <key>` и `set <key>=<value> ...` управляют настройками:
  * `default_route`: куда идёт несовпавший трафик: `overlay` или `direct`.
  * `kill_switch`: `1` блокирует туннельный трафик, когда ни один туннель не поднят. `0` пускает его к провайдеру открытым.
  * `watchdog_interval`: число секунд между пробами туннелей.
  * `watchdog_url`: URL, который запрашивают пробы.
  * `watchdog_timeout`: число секунд, после которых проба считается неудачной.

## DNS

Сервис DNS — резолвер всей сети. Запросы уходят зашифрованными, а когда туннель поднят — через туннель. Устройствам, которые пытаются резолвить сами, всё равно отвечает роутер.

* `sdx dns` показывает, работает ли сервис, upstream, резолвер и включён ли перехват.
* `sdx dns config show`, `get <key>` и `set <key>=<value> ...` управляют настройками:
  * `upstream`: куда роутер отправляет запросы.
    * `encrypted` использует DNS-over-HTTPS к резолверу: через туннель, когда он поднят, иначе по линии провайдера.
    * `plain` использует классический DNS резолвера тем же путём.
    * `provider` использует то, что выдал провайдер, без изменений.
  * `resolver`: `cloudflare`, `quad9` или `google`. С `provider` не используется.
  * `intercept`: `1` перенаправляет каждый DNS-запрос из сети в роутер и отклоняет DNS-over-TLS, чтобы устройство со своим резолвером всё равно следовало правилам. `0` не трогает устройства.

## Link

Линк — связь с сервером, на котором работает seedex-agent. Вы соединяетесь один раз. Дальше роутер забирает конфиги VPN и proxy с сервера каждые 30 минут и по запросу. Конфиги, которые принёс линк, — обычные записи `vpn` и `proxy`, помеченные как управляемые этим линком: линк обновляет их, удаляет, когда сервер их убрал, и не трогает конфиги, которые вы импортировали вручную.

* `sdx link` перечисляет каждый линк: удалась ли последняя синхронизация, URL, сколько конфигов линк управляет и когда синхронизировался в последний раз.
* `sdx link add <name> <url> <token> <fingerprint>` соединяется с сервером. `sdx link add <router>` на сервере печатает точную команду. Отпечаток закрепляет сертификат сервера, токен идентифицирует роутер. Когда сервер предлагает конфиги, команда продолжается как `sdx link select`, чтобы вы выбрали, какие импортировать.
* `sdx link show <name>` перечисляет, что предлагает сервер. `[*]` отмечает конфиги, которые роутер импортировал.
* `sdx link select <name> [<config> ... | --all]` выбирает, какие из предложенных конфигов импортировать. Без аргументов команда открывает меню: перемещайтесь стрелками, отмечайте конфиг пробелом, выберите все клавишей `a`, снимите выбор клавишей `n`, подтвердите Enter или отмените `q`. С именами команда выбирает эти конфиги. `--all` импортирует всё, что предлагает сервер, включая конфиги, добавленные позже. Выбор запоминается и применяется сразу: снятые с выбора конфиги удаляются, выбранные добавляются. Пока вы ничего не выбрали, ничего не импортируется.
* `sdx link sync [<name>]` забирает конфиги для одного линка или для всех. Изменившиеся конфиги заменяются, добавленные импортируются, убранные удаляются, изменившиеся сервисы перезапускаются.
* `sdx link <name> [<command> ...]` запускает `sdx` самого сервера. Например, `sdx link nl1` показывает статус сервера, `sdx link nl1 vpn add phone` добавляет клиента, `sdx link nl1 proxy add vless 443` добавляет протокол. Когда команда меняет конфиги, роутер сразу синхронизируется. Сервер принимает только действия `vpn` и `proxy` и `start`, `stop` и `restart`. Его собственные команды `link` и `firewall` недоступны.
* `sdx link remove <name>` разрывает связь и удаляет каждый конфиг, который принёс линк.

## LuCI

Меню **Services > Seedex** повторяет `sdx`:

* **Status** показывает сервисы и вывод `sdx`.
* **VPN** и **Proxy** управляют конфигами: добавить, изменить, включить, выключить и удалить.
* **Router** управляет правилами и настройками.
* **DNS** управляет настройками.
* **Link** управляет серверами: добавить, удалить, синхронизировать и выбрать конфиги для импорта.
* **System** импортирует файл конфига, сбрасывает сервис и показывает логи.

Каждая страница показывает **Unsaved changes** с кнопками **Apply** и **Revert**, а также **Changes not applied yet**, когда сервис работает с более старыми настройками, чем сохранённые.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.seedex.net/ru/user-guide/seedex-box.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
