写在前面
由于我个人能力不足,我无法独自确定出现这个问题的具体原因为何,因此撰写了此帖,希望可以得到解答。
操作系统
Windows 11 22621.1702 与 Android 12 (HarmonyOS 3.0.0.219)
安装类型
- Windows:命令行程序
sing-box version 1.6.0
Environment: go1.21.3 windows/amd64
Tags: with_gvisor,with_quic,with_dhcp,with_wireguard,with_ech,with_utls,with_reality_server,with_clash_api
Revision: 83c2ecc6b5fb9a132f36a9ca2a8a60d3b0e54cc5
CGO: disabled
- Android:sing-box for Android 1.6.0
描述
通过脚本,使用自己编写的模板将机场订阅转换为配置文件,程序启动以后正常使用,经过一段时间以后开始报错,以下为节选 (Windows端日志):
+0800 2023-11-04 21:38:49 DEBUG [2636714266 37ms] dns: lookup failed for gzbgp01.00117163.xyz: exchange6: dns: buffer size too small | exchange4: dns: buffer size too small
+0800 2023-11-04 21:38:49 ERROR [2636714266 37ms] outbound/urltest[sg-a]: exchange6: dns: buffer size too small | exchange4: dns: buffer size too small
+0800 2023-11-04 21:38:49 ERROR [2636714266 37ms] inbound/tun[tun-in]: exchange6: dns: buffer size too small | exchange4: dns: buffer size too small
这个报错持续时间不确定,有时重复出现几次以后恢复正常,有时则一直报错不停止;持续出现这类报错时,网络连接会出现问题,如无法正常访问网页 (加载超时) 等。重启程序后立即恢复正常,此后又会不定时出现此错误。Windows 与 Android 设备中报错与异常现象是相同的。
此前,我正常使用 sing-box 无问题近一个月,而在今天早些时候开始,突然开始出现这个问题,在出现问题前我曾有对配置进行过修改 (例如,由于 dns 污染所以更换了解析出站所使用的 dns),我反复检查过我修改过的地方,然而受限于我的能力,我没能明白为何会出现此问题,甚至不清楚是否是配置不当的原因。
复现方法
如描述中所述,使用我的配置文件,启动程序,正常使用不定时间后,出现报错。具体触发条件不明,所以复现的稳定性较低。
配置文件如下 (由于全篇幅较长,且我自己基于报错内容认为关键在于 dns 相关的部分,所以这里提供的配置忽略、简化了路由规则和部分出站的内容,如果需要,请让我补充):
{
"log": {
"disabled": false,
"level": "debug",
"output": "box.log",
"timestamp": true
},
"dns": {
"servers": [
{
"tag": "dns_remote",
"address": "h3://1.0.0.1/dns-query",
"strategy": "prefer_ipv6",
"detour": "proxy"
},
{
"tag": "dns_local",
"address": "h3://223.6.6.6/dns-query",
"strategy": "prefer_ipv6",
"detour": "direct"
},
{
"tag": "dns_node",
"address": "https://pdns.itxe.net/dns-query",
"address_resolver": "dns_local",
"address_strategy": "prefer_ipv4",
"detour": "direct"
},
{
"tag": "dns_fake",
"address": "fakeip"
},
{
"tag": "dns_block",
"address": "rcode://success"
}
],
"rules": [
{
"outbound": "any",
"server": "dns_node"
},
{
"query_type": "NIMLOC",
"server": "dns_block",
"disable_cache": true
},
{
"geosite": "category-ads-all",
"domain_suffix": [
".lan",
"miav-cse.avlyun.com",
"a0.app.xiaomi.com",
"miui-fxcse.avlyun.com",
"api.installer.xiaomi.com"
],
"server": "dns_block",
"disable_cache": true
},
{
"clash_mode": "direct",
"server": "dns_local"
},
{
"clash_mode": "global",
"server": "dns_remote"
},
{
"geosite": "geolocation-!cn",
"query_type": [
"A",
"AAAA"
],
"server": "dns_fake",
"disable_cache": true,
"rewrite_ttl": 1
},
{
"geosite": "geolocation-!cn",
"server": "dns_remote"
},
{
"geosite": [
"cn",
"private"
],
"server": "dns_local"
},
{
"query_type": [
"A",
"AAAA"
],
"server": "dns_fake",
"disable_cache": true,
"rewrite_ttl": 1
}
],
"final": "dns_remote",
"strategy": "prefer_ipv4",
"disable_expire": false,
"independent_cache": true,
"reverse_mapping": false,
"fakeip": {
"enabled": true,
"inet4_range": "198.18.0.0/15",
"inet6_range": "fc00::/18"
}
},
"experimental": {
"clash_api": {
"external_controller": "127.0.0.1:9090",
"external_ui": "ui",
"default_mode": "rule",
"store_selected": true
}
},
"inbounds": [
{
"tag": "tun-in",
"type": "tun",
"interface_name": "sing-tun",
"inet4_address": "172.31.0.1/30",
"auto_route": true,
"strict_route": true,
"endpoint_independent_nat": false,
"stack": "system",
"sniff": true
}
],
"outbounds": [
{
"tag": "proxy",
"type": "selector",
"outbounds": [
"auto",
"hk-a",
"tw-a",
"jk-a",
"na-a",
"sg-a",
"eu-a",
"other-a",
"manual",
"direct"
]
},
{
"tag": "manual",
"type": "selector",
"outbounds": [
"全部节点"
]
},
{
"tag": "auto",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"全部节点"
]
},
{
"tag": "hk-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的香港地区节点"
]
},
{
"tag": "tw-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的台湾地区节点"
]
},
{
"tag": "jk-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的日本地区节点"
]
},
{
"tag": "na-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的北美地区节点"
]
},
{
"tag": "sg-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的新加坡地区节点"
]
},
{
"tag": "eu-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的欧洲地区节点"
]
},
{
"tag": "other-a",
"type": "urltest",
"url": "http://www.gstatic.com/generate_204",
"interval": "30m",
"tolerance": 50,
"outbounds": [
"过滤出的其他地区节点"
]
},
{
"tag": "direct",
"type": "direct"
},
{
"tag": "block",
"type": "block"
},
{
"tag": "dns-out",
"type": "dns"
},
{
"tag": "单个节点示例,其他节点的配置方案均与此相同",
"type": "shadowsocks",
"server": "shbgp01.00117163.xyz",
"server_port": 12345,
"method": "chacha20-ietf-poly1305",
"password": "password",
"plugin": "obfs-local",
"plugin_opts": "obfs=http;obfs-host=4362681c8a.iqiyi.com"
}
],
"route": {
"geoip": {
"path": "geoip.db",
"download_url": "https://fastly.jsdelivr.net/gh/soffchen/sing-geoip@release/geoip.db",
"download_detour": "proxy"
},
"geosite": {
"path": "geosite.db",
"download_url": "https://fastly.jsdelivr.net/gh/soffchen/sing-geosite@release/geosite.db",
"download_detour": "proxy"
},
"rules": [],
"final": "proxy",
"auto_detect_interface": true,
"override_android_vpn": false
}
}
日志
由于提供的日志内容偏多,受篇幅限制,请查看回复。