-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Closed as not planned
Description
标题
Android 上:当 DNS 服务器返回空 AAAA 记录时,即使 A 记录有效,Xray 仍报错 "empty response"
正文
在 Android 客户端(基于 Xray-core 的自定义版本)中,当使用 outbound-dns 时,若 DNS 服务器对某域名返回了有效的 A 记录(IPv4),但 AAAA 记录为空([]),Xray 会错误地将整个响应视为失败,并抛出:
features/dns: empty response
尽管日志显示已收到有效的 A 记录,例如:
[Info] app/dns: UDP:178.22.122.100:53 got answer: www.adobe.com. TypeA -> [50.7.85.221]
[Info] app/dns: failed to lookup ip for domain www.adobe.com ... > features/dns: empty response
这表明 Xray 的 DNS 解析逻辑存在问题:只要 A 或 AAAA 中任意一个返回有效 IP,解析就应成功。当前行为不符合 DNS 标准。
当前
设置 "queryStrategy": "UseIPv4" 可绕过此问题,但这不应是必须的。
尤其在 IPv6 不稳定或被限制的地区(如伊朗),强制用户配置 UseIPv4 才能正常使用,是一种糟糕的默认行为。
相关 DNS 配置(来自用户)
"dns": {
"servers": [
"178.22.122.100",
"185.51.200.2",
"78.157.42.100",
"78.157.42.101",
"10.202.10.10",
"10.202.10.11"
],
"disableCache": false,
"enableParallelQuery": true
}所有上述 DNS 服务器在伊朗被广泛使用(如 Shecan、403、Radar),它们对许多国际域名仅返回 A 记录,而 AAAA 为空——这是完全合法的。
期望行为
- 如果 A 或 AAAA 中任意一个返回非空 IP 列表,解析应视为成功。
- 默认行为应兼容 IPv4-only 网络环境,无需用户手动设置
queryStrategy。
环境
- 平台:Android
- Xray-core:custom build(基于主流开源 Android 客户端)
- 网络环境:伊朗(IPv6 通常不可用)
Metadata
Metadata
Assignees
Labels
No labels