Адрес самого VPN-сервера больше не зависит от имён, которые фильтр видит в
TLS, и от честности провайдерского резолвера.
- Шаблоны sing-box: серверы direct-doh идут по литеральному IP с
tls.disable_sni, имя остаётся только для проверки сертификата. Имена
dns.google, cloudflare-dns.com и dns.quad9.net ТСПУ обрывает по SNI, из-за
чего bootstrap скатывался на системный резолвер. Адресов пять вместо трёх
(добавлены 94.140.14.14 и 8.8.4.4).
- network/bootstrap_dns.py: доверенный резолвер имени сервера — DoH по IP без
SNI, затем системный резолвер, затем запомненный адрес. Ответ DoH хранится
до семи суток в data/bootstrap-lkg.json; системный ответ не запоминается.
- Планировщик sing-box: когда запомненный адрес есть, узел разрешается своей
цепочкой direct-doh -> запомненный адрес. NXDOMAIN системного резолвера в
штатной цепочке окончателен, и подмена «домена нет» срывала подключение.
Секции пользователя не меняются, добавляются только app-теги.
- Zapret: правило сервера строится по тому же доверенному пути вместо
getaddrinfo, отказ провайдера больше не отменяет подключение.
Проверено собранным под Linux закреплённым ядром: с прежним шаблоном имена
DoH-серверов видны в трафике открытым текстом, с новым их нет, имена
разрешаются. Гибридный режим и WireGuard/AmneziaWG запомненный адрес пока не
используют.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>