L×Box v2.25.18
A patch on top of v2.25.17.
A new Diagnostics section with URL Check: the core makes a real
request to a site through your routing and shows every step as a tree, from
the app's DNS query to the HTTP response, with the step where the path broke
and findings about the config. Speed Test moved there as the second tab.
Chosen address ranges can bypass the tunnel entirely (a home NAS, a printer).
FakeIP pools can be changed. WireGuard and AmneziaWG nodes get an INI tab,
and an INI with several [Peer] sections keeps them all. A subscription's
update interval can follow the server, and the server no longer overwrites
an interval you chose. Core v1.14.4-lx.25 on the upstream sing-box 1.14.4
base, with faster XHTTP uploads. Contract 1.1.140.
Патч поверх v2.25.17.
Новый раздел Diagnostics с URL Check: ядро делает настоящий запрос к
сайту через вашу маршрутизацию и показывает каждый шаг деревом — от
DNS-запроса приложения до HTTP-ответа, с шагом, где путь оборвался, и
находками о конфиге. Speed Test переехал туда второй вкладкой. Выбранные
диапазоны адресов могут идти мимо туннеля целиком (домашний NAS, принтер).
Пулы FakeIP можно менять. У узлов WireGuard и AmneziaWG появилась вкладка
INI, а INI с несколькими секциями [Peer] сохраняет их все. Интервал
обновления подписки может следовать за сервером, и сервер больше не
перезаписывает выбранный вами интервал. Ядро v1.14.4-lx.25 на базе
апстримного sing-box 1.14.4, с более быстрой выгрузкой по XHTTP. Контракт
1.1.140.
🇬🇧 English
⚠️ Read before updating
- New upstream base. The core moves to upstream sing-box 1.14.4.
Upstream changed how groups are resolved; Auto (urltest) groups still
pick a node per connection as before. If a group or a WireGuard node
behaves differently after the update, report it. - XHTTP nodes send more like Xray.
packet-upuploads (andauto
without REALITY, most nodes behind a CDN) are batched and no longer wait
for each POST's reply. Requests without your ownUser-Agentcarry the
browser headers Xray sends, and HTTP/2 keep-alive pings are on by default
(45 s). If an XHTTP node stops working after the update, report it. - Ru internet segment: Yandex UDP DNS follows the preset's Outbound again
(task 684).
In v2.25.17 the preset'syandex_udpwent throughvpn-1; now it goes
the preset's Outbound (direct by default), so Russian domains no longer
resolve through the tunnel. The «UDP DNS outbound» setting is removed;
«Encrypted DNS outbound» became the checkbox «Encrypted DNS via
Outbound»: off (default) — DoT and DoH go direct, on — through the
preset's Outbound. «UDP through the tunnel» stays for the shared DNS
servers. - Subscription update interval. Existing subscriptions keep their
current interval as a manual choice; pick «As subscription» to follow the
server again. «Never (respect server)» is removed.
✨ New
- Diagnostics → URL Check (task 687, issue #176).
Enter a site and the core makes a real request to it through your
routing, showing every step as a tree as it happens: the app's DNS
queries (A, AAAA, HTTPS) and the server that answered, the matched rule,
the group choice, the node and its detours, the node's own address
lookup, TCP, TLS, the response. Each step has its time and result; a step
the protocol does not confirm (VLESS, Trojan, Shadowsocks header) is
marked as sent, a cached or reused step as reused. The step where the path
broke is highlighted and named above the tree. Options: the app the
request is made for (rules by app apply), depth (Full, Connect, Route —
no connection is opened, DNS) and From scratch (bypass the DNS cache, open
new connections). Copy puts the trace on the clipboard. Needs a running
VPN. - URL Check: step details and the DNS answer (task 688).
Every step expands: what the step is, why it was skipped or reused, its
attributes. The app's DNS query shows the answer record by record with
TTL (CNAME chain, addresses, HTTPS record parameters such as ALPN and
ECH), the SOA on NXDOMAIN or an empty answer, and where the answer came
from: the network, the cache with its age, or a local answer (fake IP,
hosts). When a DNS rule or the domain strategy answered without asking a
server, the step says so. The failed step and an empty or failed DNS
answer open by themselves. - URL Check: findings. Under the result the core lists what it noticed
about the config, at three levels: a cause of the failure, a risk, a fact.
For example: a package excluded from the VPN, a node that depends on a DNS
server's detour outside the route, fake IP records lost after a restart,
REALITY not recognizing the client. A tap on a finding highlights its
steps. - URL Check: DNS groups. Every server a DNS group asked has its own
step with its tag. A server that lost the race to another member's answer
is shown as skipped, with the winner it lost to, instead of as a broken
DoT or DoH server. - Bypass the tunnel (task 691).
VPN Settings → TUN → «Bypass the tunnel»: CIDR ranges that skip the
tunnel and the core entirely, so large transfers to a home NAS no longer
go through the core. Type one range per line or pick from the list
(home LAN, private and link-local networks). Traffic to these addresses
is not seen by rules, DNS interception or statistics. An entry that is not
a CIDR or covers the tunnel's own address is dropped with a warning in the
log. Applies after a full VPN restart. - FakeIP: your own address pools (task 690).
The FakeIP preset gets «IPv4 pool» and «IPv6 pool» (defaults
198.18.0.0/15 and fc00::/18, as before), for networks where the default
range is in use. An empty IPv6 pool turns off fake AAAA answers. - INI tab for WireGuard / AmneziaWG nodes (task 686).
Node Settings shows the node as a.conf, whatever it was added from
(link, INI or JSON): all peers, masquerade and AmneziaWG fields, with
Copy, Share .conf and Edit INI. Keys INI cannot express are listed under
«Not in INI». - Several
[Peer]sections in a WireGuard INI. Each becomes its own
peer of the node; before, everything after the first was dropped. A peer
without a public key or endpoint is dropped with a warning naming it. - Subscription update interval «As subscription» (task 685).
The interval comes from the server'sprofile-update-intervalheader
(24 h when the server sends none). A manually chosen interval stays as
chosen; before, every update replaced it with the server's value. New
subscriptions start in «As subscription».
🔄 Changed
- Speed Test is a tab of Diagnostics. The side menu item Speed Test is
replaced by Diagnostics with two tabs, URL Check and Speed Test. A running
speed test is not interrupted when switching tabs. - Auto node in a folder is edited in Node Settings. A tap opens the
group form on the Settings tab (name, servers in the pool, mode,
advanced); Source shows the stored record; the JSON tab says «Members are
resolved at build time» instead of an emptyoutbounds. The pool preview
no longer counts disabled servers and marks them with ⏻. - Long-press menu no longer offers «Edit…» of a folder member and «Edit
source…» / «Update» of a standalone server; a tap opens the same screen. - Text fields with suggestions are comboboxes. A list with suggestions
(Bypass the tunnel, list parameters of presets) is a field with an arrow
at the end; picking a suggestion adds the line, picking it again removes
it. - «Custom tunnel routes» is renamed «Split default route» and explained:
it sends the same traffic to the tunnel as two half-ranges, it never added
routes of its own. #comments in a pasted node JSON and on the Config screen are
accepted and stripped, as the core does, next to//and/* */.- Direction editor: a caption under «Replace groups» says what the checkbox
does.
🐛 Fixed
- VPN would not start after a rule made of IP ranges got a DNS option (task 692).
The core stopped with «Legacy Address Filter Fields in DNS rules is
deprecated…» once FakeIP or Force IPv4 was present. The DNS section of a
rule now appears only when the rule has a condition the DNS layer can
check (a domain, an app, a source address, a Wi-Fi network or an
inbound), and an IP-only rule no longer produces a DNS rule. Existing
rules keep their DNS settings; they come back once a domain or app is
added. - URL Check: no false success. A Full check that ends without an HTTP
response and without a failed step shows a yellow «No HTTP response»; a
site that answers301/302shows that status and itslocation
instead of a green «HTTP 0». Changing the URL, the app, the depth or From
scratch clears the previous result. - XHTTP: single-stream upload speed in
packet-upwas capped at one
write per round trip (Leadaxe/sing-box-lx#58); astream-upwrite could
hang after the server refused the upload; apathwithout a trailing
slash could get 404 with the session outside the path. - Subscription filter rule editor showed «Совпадений: из узлов» without the
numbers; the «Applied — …» message after saving filters lost them too. - Node delay is shown as
120msinstead of120MS.
🔧 Under the hood
- Core
v1.14.3-lx.23→v1.14.4-lx.25: SPEC 139 (connection test), the
upstream sing-box 1.14.4 base with Go 1.26.10, SPEC 141/142 (XHTTP), a
data race in the Auto group's selection fixed. - Below Android 10 the owner of a connection (per-app rules) is looked up in
/proc/netthrough a call from the app. - Contract 1.1.140: WireGuard INI with several peers.
- DNS server descriptions are no longer translated, as with node names.
🇷🇺 Русский
⚠️ Прочтите до обновления
- Новая база апстрима. Ядро переходит на апстримный sing-box 1.14.4.
Апстрим изменил разбор групп; группы Auto (urltest) по-прежнему выбирают
узел на каждое соединение. Если группа или WireGuard-узел после обновления
ведут себя иначе — сообщите. - Узлы XHTTP шлют ближе к Xray. Выгрузка
packet-up(иautoбез
REALITY — большинство узлов за CDN) склеивается и не ждёт ответа на
каждый POST. Запросы без вашегоUser-Agentнесут браузерные заголовки,
как у Xray, пинги HTTP/2 включены по умолчанию (45 с). Если узел XHTTP
после обновления перестал работать — сообщите. - Ru internet segment: Yandex UDP DNS снова идёт по Outbound пресета
(задача 684).
В v2.25.17yandex_udpпресета ходил черезvpn-1; теперь — по Outbound
пресета (по умолчанию напрямую), и российские домены больше не резолвятся
через туннель. Настройка «UDP DNS outbound» снята; «Encrypted DNS
outbound» стала галочкой «Encrypted DNS via Outbound»: выключена (по
умолчанию) — DoT и DoH напрямую, включена — через Outbound пресета.
«UDP через туннель» остаётся для общих DNS-серверов. - Интервал обновления подписки. У существующих подписок текущий
интервал сохраняется как выбранный вручную; чтобы снова следовать за
сервером, выберите «As subscription». Пункт «Never (respect server)»
снят.
✨ Новое
- Diagnostics → URL Check (задача 687, issue #176).
Введите сайт, и ядро сделает к нему настоящий запрос через вашу
маршрутизацию, показывая каждый шаг деревом по ходу дела: DNS-запросы
приложения (A, AAAA, HTTPS) и ответивший сервер, сработавшее правило,
выбор группы, узел и его detour'ы, резолв адреса самого узла, TCP, TLS,
ответ. У каждого шага время и результат; шаг, который протокол не
подтверждает (VLESS, Trojan, заголовок Shadowsocks), помечен как
отправленный, взятый из кэша или переиспользованный — как
переиспользованный. Шаг, на котором путь оборвался, подсвечен и назван над
деревом. Параметры: приложение, от имени которого идёт запрос (правила по
приложениям применяются), глубина (Full, Connect, Route — без соединений,
DNS) и From scratch (мимо кэша DNS, новые соединения). Copy кладёт трассу
в буфер обмена. Нужен запущенный VPN. - URL Check: подробности шагов и ответ DNS (задача 688).
Каждый шаг раскрывается: что это за шаг, почему пропущен или
переиспользован, его атрибуты. DNS-запрос приложения показывает ответ по
записям с TTL (цепочка CNAME, адреса, параметры HTTPS-записи вроде ALPN и
ECH), SOA при NXDOMAIN или пустом ответе и откуда пришёл ответ: из сети,
из кэша с возрастом или локально (fake IP, hosts). Когда ответило правило
DNS или стратегия домена, не спрашивая сервер, шаг говорит об этом. Шаг
обрыва и пустой или ошибочный ответ DNS раскрыты сразу. - URL Check: находки. Под результатом ядро перечисляет, что заметило в
конфиге, на трёх уровнях: причина сбоя, риск, факт. Например: пакет
исключён из VPN, узел зависит от detour'а DNS-сервера вне маршрута, записи
fake IP теряются после перезапуска, REALITY не узнал клиента. Тап по
находке подсвечивает её шаги. - URL Check: DNS-группы. У каждого сервера, которого спросила
DNS-группа, свой шаг с его тегом. Сервер, проигравший гонку ответу другого
участника, показан пропущенным, с победителем, а не сломанным DoT- или
DoH-сервером. - Мимо туннеля (задача 691).
VPN Settings → TUN → «Bypass the tunnel»: CIDR-диапазоны, которые идут
мимо туннеля и мимо ядра целиком — большие передачи на домашний NAS
больше не проходят через ядро. По диапазону на строку или выбор из списка
(домашняя сеть, частные и link-local сети). Трафик к этим адресам не видят
правила, DNS-перехват и статистика. Строка не в формате CIDR или
накрывающая адрес самого туннеля снимается с предупреждением в журнале.
Применяется после полного перезапуска VPN. - FakeIP: свои пулы адресов (задача 690).
У пресета FakeIP появились «IPv4 pool» и «IPv6 pool» (по умолчанию
198.18.0.0/15 и fc00::/18, как раньше) — для сетей, где стандартный
диапазон занят. Пустой IPv6-пул выключает фейковые ответы на AAAA. - Вкладка INI у узлов WireGuard / AmneziaWG (задача 686).
Node Settings показывает узел как.conf, откуда бы он ни был добавлен
(ссылка, INI или JSON): все пиры, маскарад и поля AmneziaWG, с Copy,
Share .conf и Edit INI. Ключи, которые INI не выражает, перечислены под
«Not in INI». - Несколько секций
[Peer]в INI WireGuard. Каждая становится своим
пиром узла; раньше всё после первой отбрасывалось. Пир без публичного
ключа или endpoint снимается с предупреждением, где он назван. - Интервал обновления подписки «As subscription» (задача 685).
Интервал берётся из заголовка сервераprofile-update-interval(24 ч,
если сервер его не шлёт). Интервал, выбранный вручную, остаётся как
выбран; раньше каждое обновление заменяло его значением сервера. Новые
подписки начинают в режиме «As subscription».
🔄 Изменено
- Speed Test — вкладка Diagnostics. Пункт бокового меню Speed Test
заменён пунктом Diagnostics с двумя вкладками, URL Check и Speed Test.
Идущий замер не прерывается при переключении вкладок. - Auto-узел в папке редактируется в Node Settings. Тап открывает форму
группы на вкладке Settings (имя, серверы в пуле, режим, дополнительно);
Source показывает сохранённую запись; вкладка JSON пишет «Members are
resolved at build time» вместо пустогоoutbounds. Превью пула больше не
считает выключенные серверы и помечает их ⏻. - Меню по долгому тапу больше не предлагает «Edit…» у члена папки и
«Edit source…» / «Update» у одиночного сервера; тап открывает тот же
экран. - Текстовые поля с подсказками — комбобоксы. Список с подсказками
(Bypass the tunnel, списковые параметры пресетов) — поле со стрелкой в
конце строки; выбор подсказки добавляет строку, повторный — убирает. - «Custom tunnel routes» переименована в «Split default route» и
объяснена: она шлёт тот же трафик в туннель двумя полудиапазонами, своих
маршрутов не добавляла никогда. - Комментарии
#во вставленном JSON узла и на экране Config
принимаются и вырезаются, как в ядре, наряду с//и/* */. - Редактор Направления: подпись под «Replace groups» объясняет, что делает
галочка.
🐛 Исправлено
- VPN не стартовал после того, как правило из одних IP-диапазонов
получало DNS-опцию (задача 692).
Ядро останавливалось с «Legacy Address Filter Fields in DNS rules is
deprecated…», если в конфиге был FakeIP или Force IPv4. Секция DNS у
правила теперь показывается только при условии, которое DNS-слой может
проверить (домен, приложение, адрес источника, Wi-Fi-сеть или inbound), и
правило из одних IP больше не даёт DNS-правила. Настройки DNS у
существующих правил сохраняются и вернутся, когда в правило добавят домен
или приложение. - URL Check: без ложного успеха. Полная проверка, закончившаяся без
HTTP-ответа и без упавшего шага, показывает жёлтое «No HTTP response»;
сайт, ответивший301/302, показывает этот статус иlocation, а не
зелёное «HTTP 0». Смена URL, приложения, глубины или From scratch стирает
прошлый результат. - XHTTP: скорость выгрузки одного потока в
packet-upупиралась в одну
запись за круговой путь (Leadaxe/sing-box-lx#58); записьstream-upмогла
зависнуть после отказа сервера;pathбез слэша на конце мог получать 404
при сессии вне пути. - Редактор правила фильтра подписки показывал «Совпадений: из узлов» без
чисел; сообщение «Applied — …» после сохранения фильтров тоже их теряло. - Задержка узла показывается как
120ms, а не120MS.
🔧 Под капотом
- Ядро
v1.14.3-lx.23→v1.14.4-lx.25: SPEC 139 (проверка соединения),
база апстримного sing-box 1.14.4 с Go 1.26.10, SPEC 141/142 (XHTTP),
исправлена гонка данных при выборе узла в группе Auto. - Ниже Android 10 владельца соединения (правила по приложениям) ищут в
/proc/netпо вызову из приложения. - Контракт 1.1.140: INI WireGuard с несколькими пирами.
- Описания DNS-серверов больше не переводятся, как и имена узлов.
Install / Установка
adb install -r LxBox-v2.25.18-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
No uninstall needed — install over the existing one. Settings and subscriptions
are preserved.
Previous release / Предыдущий релиз: v2.25.17.