Skip to content

[Bug]: v2rayN 7.24.8 + sing-box 1.14.0 启动失败:hosts_dns 规则缺少 match_response #10070

Description

@neavo

操作系统 / v2rayN / Core 版本

Windows 11 (10.0.26200) / v2rayN 7.24.8 x64 / sing-box 1.14.0

预期情况

v2rayN 正常启动 sing-box 核心并运行。

实际情况

使用 sing-box 核心启动时报 FATAL,核心无法运行:

v2rayN - V7.24.8 - X64 | D:\Program Files\v2rayN\ | D:\Program Files\v2rayN\v2rayN.exe | Microsoft Windows NT 10.0.26200.0
启动服务 (2026/08/31 17:10:39)...
WARN[0000] `independent_cache` DNS option is deprecated in sing-box 1.14.0 and will be removed in sing-box 1.16.0, checkout documentation for migration: https://sing-box.sagernet.org/migration/#migrate-independent-dns-cache
FATAL[0000] create service: initialize dns router: validate dns rule[0]: Response Match Fields (ip_cidr, ip_is_private, ip_accept_any, response_rcode, response_answer, response_ns, response_extra) require match_response to be enabled
运行 Core 失败,请查看提示信息

原因分析

sing-box 1.14.0 新增校验:DNS 规则中的 Response Match Fields(ip_cidrip_is_privateip_accept_anyresponse_rcode 等)必须开启 match_response 才能使用(参见 sing-box 迁移文档)。

而 v2rayN 的 SingboxDnsService.csGenDnsRules() 中无条件生成:

_coreConfig.dns.rules.Add(new() { ip_accept_any = true, server = Global.SingboxHostsDNSTag });

生成的 binConfigs/config.json 中对应规则为:

{ "server": "hosts_dns", "ip_accept_any": true }

缺少 match_response: true,导致 sing-box 1.14.0 校验失败。

复现方法

  1. v2rayN 7.24.8 + sing-box 1.14.0 核心
  2. 使用默认 DNS 设置(简明 DNS / 自动生成配置)启动核心
  3. 报 FATAL,无法启动

建议修复

在该规则中添加 match_response = true

_coreConfig.dns.rules.Add(new() { match_response = true, ip_accept_any = true, server = Global.SingboxHostsDNSTag });

临时解决方案

回退 sing-box 核心到 1.13.21 可正常使用(已验证 sing-box check 通过)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions