LxBox v2.25.9 发布
已发布 v2.25.9,以下为官方变更日志。
官方变更日志@L×Box v2.25.9
A patch on top of v2.25.8.
Core v1.14.2-lx.11: Tailscale nodes pass traffic to peers over a direct path
again and reach the coordination server over port 443 from the start. Repeats
of one server in a subscription are merged with a note on the node that stays.
Preset rules follow the template contract more strictly: a rule written
without conditions is kept, a rule that lost its conditions is dropped. Xray
JSON arrays with a balancer name pool servers by selector. Protocol contract
1.1.107.Патч поверх v2.25.8.
Ядро v1.14.2-lx.11: узлы Tailscale снова передают трафик пирам по прямому
пути и с первого соединения ходят к серверу координации через порт 443.
Повторы одного сервера в подписке схлопываются с пометкой на оставшемся узле.
Правила пресетов строже следуют контракту шаблонов: правило, написанное без
условий, остаётся, правило, потерявшее условия, выпадает. Xray JSON-массивы с
балансировщиком собирают пул по selector. Контракт протоколов 1.1.107.🇬🇧 English
🔄 Changed
- Core v1.14.2-lx.11. Two Tailscale fixes. A node that found a direct UDP
path to a peer (for example, both on the same Wi-Fi) could see and ping the
peer, but TCP connections to it timed out; traffic now goes over the direct
path, and WireGuard and AmneziaWG nodes send the same bytes as before. The
channel to the Tailscale coordination server now always uses HTTPS on port
443: behind DPI that freezes port 80, a node no longer loses the
coordination server for about 15 minutes after every start.
Synced with sing-box stable: stricter checks of incoming protocol data
(sniffers, FakeIP, the TUN stack, transports), and a UDP checksum that
comes out as 0 is written as 0xffff, so such packets are no longer
dropped.
- Repeated servers in a subscription. Providers often list one server many
times under different names. The app keeps one node, as before, and now
marks it with an info note «Repeats of this server in the subscription: N»
that names the merged entries. The subscription summary shows «M duplicates
merged into K nodes» on its own line; «entries dropped» no longer counts
them.
- Preset rules without conditions. A route or DNS rule of a preset that
the author wrote without conditions (for example, a bare
{"action": "sniff"}) now goes into the config, with the build warning
«Rule from … matches everything». A rule whose conditions were removed by a
failure is still dropped with «Entry … left out»: a variable without a value,
an undeclared variable name, or rule sets none of which made it into the
config. The same applies to sub-rules of a logical rule at any depth: one
sub-rule that lost its conditions drops the whole logical rule.
- Rule sets that were not downloaded. Your own DNS rule whose every
rule_set points to a set missing from the config (for example, a remote
.srs that was not downloaded) is left out with a build warning instead of
going to the core without its condition. A missing name next to live ones
is removed from the list. A DNS rule by an .srs file without a cached
copy is reported the same way instead of being skipped silently.
- Preset variables are optional by default. A variable without required
is no longer required, as in the launcher. The built-in template marks its
required variables explicitly, so presets behave as before.
- Xray JSON arrays with a balancer. The group keeps the element's
remarks; each server of the pool is named remarks tag. A name already
taken in the element (by the group or by an earlier server) gets the
server's number in the pool: pool p, pool p 2, pool 3. Pool members
are the servers the balancer's selector picks by tag prefix; a server it
does not pick stays a separate node. leastLoad without expected selects
the fastest server. When one server of the element is merged with another,
the group points to the node that stays.🔧 Under the hood
- Contract with the launcher: 1.1.107. Its copy is now in the repository, so
CI checks the parsing corpus and the schemas on every push.
- Feature specifications rewritten from the code (EN+RU).
🇷🇺 Русский
🔄 Изменено
- Ядро v1.14.2-lx.11. Два исправления Tailscale. Узел, нашедший прямой
UDP-путь к пиру (например, оба в одной Wi-Fi), видел и пинговал пира, но
TCP-соединения к нему обрывались по таймауту; теперь трафик идёт по прямому
пути, а узлы WireGuard и AmneziaWG отправляют те же байты, что и раньше.
Канал к серверу координации Tailscale теперь всегда идёт по HTTPS на порт
443: за DPI, который замораживает порт 80, узел больше не теряет
координатора примерно на 15 минут после каждого старта.
Синхронизировано со stable sing-box: строже проверка входящих данных
протоколов (сниферы, FakeIP, TUN-стек, транспорты), а контрольная сумма
UDP, равная 0, пишется как 0xffff, и такие пакеты больше не
отбрасываются.
- Повторы сервера в подписке. Провайдеры часто кладут один сервер много
раз под разными именами. Приложение, как и раньше, оставляет один узел и
теперь ставит на нём info-пометку «Повторов этого сервера в подписке: N» с
именами схлопнутых записей. Сводка подписки показывает «M duplicates merged
into K nodes» отдельной строкой; «entries dropped» их больше не считает.
- Правила пресетов без условий. Правило маршрута или DNS из пресета,
которое автор написал без условий (например, голый {"action": "sniff"}),
теперь попадает в конфиг с предупреждением сборки «Rule from … matches
everything». Правило, условия которого снял сбой, по-прежнему выпадает с
«Entry … left out»: переменная без значения, необъявленное имя переменной
или наборы правил, ни один из которых не попал в конфиг. То же для
под-правил логического правила на любой глубине: одно под-правило,
потерявшее условия, снимает всё логическое правило.
- Нескачанные наборы правил. Своё DNS-правило, все rule_set которого
указывают на наборы, не попавшие в конфиг (например, нескачанный remote
.srs), не включается в конфиг и даёт предупреждение сборки, а не уходит в
ядро без условия. Отсутствующее имя рядом с живыми убирается из списка.
DNS-правило по файлу .srs без скачанной копии отмечается так же, а не
пропускается молча.
- Переменные пресета по умолчанию необязательны. Переменная без
required больше не обязательна, как в лаунчере. Встроенный шаблон помечает
обязательные переменные явно, поэтому пресеты ведут себя как прежде.
- Xray JSON-массивы с балансировщиком. Группа сохраняет remarks
элемента, каждый сервер пула называется remarks tag. Имя, уже занятое в
элементе (группой или предыдущим сервером), получает номер сервера в пуле:
pool p, pool p 2, pool 3. Члены пула — серверы, которые selector
балансировщика выбирает по префиксу тега; невыбранный сервер остаётся
отдельным узлом. leastLoad без expected выбирает самый быстрый сервер.
Когда сервер элемента схлопнут с другим, группа ссылается на оставшийся
узел.🔧 Под капотом
- Контракт с лаунчером: 1.1.107. Его копия теперь в репозитории, и CI
проверяет корпус разбора и схемы на каждом push.
- Спецификации фич переписаны по коду (EN+RU).
Install / Установка
Без uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
No uninstall needed — install over the existing one. Settings and subscriptions
are preserved.Previous release / Предыдущий релиз: v2.25.8.