zapret-kvn/data/templates/sing-box/discord-folder-example.json
loop-uh f49275b2ba
Some checks failed
Windows project source guards / test (push) Failing after 1m8s
fix: resolve tunnel names on the node instead of DoH through the proxy
`proxy-dns` был DoH к 8.8.8.8/1.1.1.1/9.9.9.9 через outbound `proxy`. Узел
перенаправляет на свой resolver только DNS на порт 53, а зашифрованный запрос
проходит мимо: клиент получал настоящий origin управляемого имени и шёл к нему
через тот же узел, получая региональный отказ. Через Hysteria 2 sing-box отдаёт
ядру уже готовый IP, поэтому подменить адрес на узле было нечем.

`proxy-dns` теперь перебирает два транспорта до resolver'а узла: udp, затем tcp
для сетей, где UDP через прокси не проходит. Прежний тихий откат на
`bootstrap-dns` убран — после шестисекундного таймаута он уводил резолв наружу
из туннеля. `bootstrap-dns` и `direct-doh` не тронуты: они поднимают туннель и
обязаны пережить подмену DNS провайдером.

Точечный отказ DoT на 853 возвращает приложения на 53, который перехватывает
`hijack-dns`. Встроенный DoH приложений на 443 перехвату не поддаётся — это
записано в docs/sing-box/runtime-config.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 17:28:33 +03:00

342 lines
7.3 KiB
JSON

{
"log": {
"level": "warn",
"timestamp": true
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "xftun",
"address": [
"172.19.0.1/30"
],
"auto_route": true,
"strict_route": false,
"stack": "mixed"
}
],
"outbounds": [
{
"type": "direct",
"tag": "proxy"
},
{
"type": "direct",
"tag": "direct",
"domain_resolver": "bootstrap-dns"
},
{
"type": "block",
"tag": "block"
}
],
"route": {
"auto_detect_interface": true,
"default_domain_resolver": "proxy-dns",
"rule_set": [
{
"type": "local",
"tag": "geosite-ru-blocked",
"format": "binary",
"path": "rule-set/geosite-ru-blocked.srs"
},
{
"type": "local",
"tag": "geoip-ru-blocked",
"format": "binary",
"path": "rule-set/geoip-ru-blocked.srs"
},
{
"type": "local",
"tag": "geosite-category-ru",
"format": "binary",
"path": "rule-set/geosite-category-ru.srs"
},
{
"type": "local",
"tag": "geoip-ru",
"format": "binary",
"path": "rule-set/geoip-ru.srs"
}
],
"rules": [
{
"action": "sniff"
},
{
"protocol": "dns",
"action": "hijack-dns"
},
{
"network": "tcp",
"port": 853,
"action": "reject",
"method": "default"
},
{
"domain_suffix": [
"mobileproxy.passport.yandex.net",
"relay-api.eu.2gis.com",
"api.ipify.org",
"checkip.amazonaws.com",
"ifconfig.me",
"ip.mail.ru",
"ipv4-internet.yandex.net",
"ipv6-internet.yandex.net",
"trace-flow.ru",
"api.oneme.ru",
"vk-analytics.ru",
"apptracer.ru"
],
"action": "route",
"outbound": "block"
},
{
"process_name": [
"Яндекс Музыка.exe",
"yandexmusic.exe"
],
"action": "route",
"outbound": "direct"
},
{
"domain_suffix": [
"gov.ru",
"government.ru",
"kremlin.ru",
"gosuslugi.ru",
"mil.ru",
"fsb.ru",
"sudrf.ru",
"sledcom.ru",
"cikrf.ru",
"mos.ru",
"xn--b1aew.xn--p1ai",
"2gis.com",
"2gis.ru",
"alfabank.com",
"alfabank.ru",
"avito.ru",
"clickstream.ru",
"dzen.ru",
"kinopoisk.ru",
"mail.ru",
"max.ru",
"megafon.ru",
"megamarket.ru",
"mironline.ru",
"mts.ru",
"my.com",
"mytracker.ru",
"nspk.ru",
"ok.ru",
"odnoklassniki.ru",
"oneme.ru",
"ozon.ru",
"privetmir.ru",
"rutube.ru",
"rustore.ru",
"samokat.ru",
"sber.ru",
"sberbank.com",
"sberbank.ru",
"sbrf.ru",
"tbank.ru",
"tinkoff.ru",
"userapi.com",
"vtb.ru",
"vk.com",
"vk.ru",
"vkvideo.ru",
"wb.ru",
"wildberries.ru",
"ya.ru",
"yandex.com",
"yandex.net",
"yandex.ru",
"yastat.net",
"yastatic.net",
"bankdomrf.ru",
"domrfbank.ru",
"gazprombank.ru",
"gazprompay.ru",
"gpb.ru",
"halvacard.ru",
"home.bank",
"homecredit.ru",
"mkb.ru",
"psbank.ru",
"raif.ru",
"raiffeisen.ru",
"raiffeisenbank.ru",
"rosbank.ru",
"rshb.ru",
"sovcombank.ru",
"unicredit.ru",
"unicreditbank.ru",
"akbars.ru",
"bspb.ru",
"tochka.com",
"yoomoney.ru",
"aliexpress.ru",
"kuper.ru",
"lamoda.ru",
"magnitmarket.ru",
"youla.ru",
"beeline.ru",
"rostelecom.ru",
"rt.ru",
"t2.ru"
],
"action": "route",
"outbound": "direct"
},
{
"domain_suffix": [
"loopy.ru",
"championat.com"
],
"action": "route",
"outbound": "direct"
},
{
"domain_suffix": [
"4pda.to",
"zapret.moe"
],
"action": "route",
"outbound": "proxy"
},
{
"rule_set": [
"geosite-ru-blocked",
"geoip-ru-blocked"
],
"action": "route",
"outbound": "proxy"
},
{
"rule_set": [
"geosite-category-ru",
"geoip-ru"
],
"action": "route",
"outbound": "direct"
},
{
"process_path_regex": [
"(?i)^[A-Z]:\\\\Users\\\\[^\\\\]+\\\\AppData\\\\Local\\\\Discord\\\\.*(?:Discord|Update)\\.exe$"
],
"outbound": "proxy"
},
{
"process_name": [
"chrome.exe",
"firefox.exe",
"waterfox.exe",
"librewolf.exe",
"msedge.exe",
"opera.exe",
"brave.exe",
"vivaldi.exe",
"browser.exe",
"Spotify.exe",
"Vesktop.exe"
],
"outbound": "proxy"
}
],
"final": "direct"
},
"dns": {
"servers": [
{
"type": "udp",
"tag": "vpn-node-dns-udp",
"server": "8.8.8.8",
"server_port": 53,
"detour": "proxy"
},
{
"type": "tcp",
"tag": "vpn-node-dns-tcp",
"server": "8.8.8.8",
"server_port": 53,
"detour": "proxy"
},
{
"type": "https",
"tag": "direct-doh-google",
"server": "8.8.8.8",
"path": "/dns-query",
"tls": {
"enabled": true,
"server_name": "dns.google"
}
},
{
"type": "https",
"tag": "direct-doh-cloudflare",
"server": "1.1.1.1",
"path": "/dns-query",
"tls": {
"enabled": true,
"server_name": "cloudflare-dns.com"
}
},
{
"type": "https",
"tag": "direct-doh-quad9",
"server": "9.9.9.9",
"path": "/dns-query",
"tls": {
"enabled": true,
"server_name": "dns.quad9.net"
}
},
{
"type": "fallback",
"tag": "direct-doh",
"servers": [
"direct-doh-google",
"direct-doh-cloudflare",
"direct-doh-quad9"
],
"strategy": "parallel",
"timeout": "3s"
},
{
"type": "local",
"tag": "local-system-dns",
"prefer_go": true
},
{
"type": "fallback",
"tag": "bootstrap-dns",
"servers": [
"direct-doh",
"local-system-dns"
],
"strategy": "sequential",
"timeout": "4s"
},
{
"type": "fallback",
"tag": "proxy-dns",
"servers": [
"vpn-node-dns-udp",
"vpn-node-dns-tcp"
],
"strategy": "sequential",
"timeout": "6s"
}
],
"final": "proxy-dns"
},
"experimental": {
"cache_file": {
"enabled": true
}
}
}