# 配置说明：用于理解和交给 AI 实施

本文档是脱敏的逻辑说明。端口仅说明进程之间的接口，区域服务域名使用文档示例域名；不包含原始配置、认证、管理 API、节点地址或运维命令。以 2026-11-02 核查结果为依据。

## 软件职责与当前状态

| 软件 | 当前职责 | 选择依据 |
|---|---|---|
| OpenWrt / dnsmasq | DHCP、已配置的本地主机名、LAN DNS 入口；普通查询转给 Clash | 保留系统已有的 LAN 集成，移除大批重复国内分流 |
| OpenClash / Clash 内核 | redir-host DNS 处理、代理规则所需的信息关联；实际递归查询转给 mosdns | 保留现有代理配合方式，无需把上游策略重复写一套 |
| mosdns-x | hosts、缓存、域名列表分流、广告与记录类型策略、多上游与回落 | 升级当前兼容且有维护的分支，减少插件/规则迁移成本 |
| SmartDNS | 不在路由器当前默认主链中 | 独立主机对照未达到保留全局测速层的预设收益门槛；该主机生产入口尚未切换 |
| 旧 mosdns | 保留二进制与配置，当前不运行 | 为本次后端替换保留恢复手段 |

## 接口示意

```text
LAN 客户端 → 路由器 dnsmasq:53
  ├─ 已配置的本地名称/租约：本地答复
  ├─ 少量明确条件例外：指定上游
  └─ 普通查询：Clash:7874 → 127.0.0.1:5335 mosdns-x
```

DHCP 当前仅发布路由器 DNS；终端已有静态设置、旧租约或 TUN 不会因此自动消失。活动规则会将经过路由器的外部 UDP/TCP 53 请求重定向到本机 53。不要不加区分地复制这种规则到具有其他 DNS 服务器的网络，必须先梳理服务器自身的上游流量。

以下是 Clash DNS 片段的结构示例，不是完整 OpenClash 配置：

```yaml
dns:
  enable: true
  listen: 0.0.0.0:7874
  enhanced-mode: redir-host
  ipv6: false
  respect-rules: false
  nameserver:
    - 127.0.0.1:5335
  fallback: []
  # 公共服务地址，不是部署信息；用于 DNS 服务域名的引导。
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  # 与普通网站查询分开，避免代理节点解析依赖自身。
  proxy-server-nameserver:
    - 223.5.5.5
    - 119.29.29.29
```

只允许预期网络访问 DNS 监听端口。OpenClash 可能生成运行配置，持久化调整应在其实际使用的配置入口完成。`respect-rules` 只作用于内核自身的 DNS 连接；mosdns 发出的连接是否被代理，还受系统转发规则和豁免影响，应核查真实出口，不能只看 DoH/DoT 名称。

## mosdns 查询顺序

此处描述行为，不跨版本拼接一份可直接运行的 YAML。

1. 请求预处理：ANY 拒绝、清除客户端 ECS 等；先处理 hosts。
2. AAAA、HTTPS（TYPE65）：空 NOERROR；私人反向区域：NXDOMAIN。
3. 其他 PTR、自有公网域名：按当前策略交给国内上游；这不表示私人域名都应发送公共 DNS。
4. 缓存；命中直接使用缓存结果。
5. 广告：NXDOMAIN。当前位于缓存之后，规则变化后要考虑已有缓存的剩余有效期。
6. 日本分组：专用 DoT 为主，约 1.5 秒启动通用远程上游回落。
7. 手工国内/境外分组：分别交给指定上游。
8. 国内名单：国内上游；命中已配置的污染地址条件时，加 ECS 转向 Google。
9. 境外名单：通用加密上游。
10. 未知域名：加 ECS 查询 Google，约 3 秒启动国内上游回落；响应含中国 IP 时再查国内上游。

缓存当前规模为 65536，启用过期缓存复用。陈旧答复寿命和回复 TTL 是不同参数；不能将“快速返回过期缓存”当成上游一直可达。

区域上游的脱敏示例可写成 `tls://dns-jp.example.net:853`，真实域名、端口、证书名及代理路径由操作者在私有环境填入。DNS 分组只能选择解析服务，不会自动把应用流量切到同一区域；代理出口需要另外匹配。

## 已上线与后续建议分开

已经完成：兼容分支升级、旧端口后端替换、大批 dnsmasq 国内条件转发移除、Clash 普通上游收敛。新旧切换保留恢复手段，未重启 OpenClash。

尚未实施：取消/缩小真实 WAN ECS 的应用范围；限定敏感域名向国内上游回落；启用合适的裸主机名/本地区域保护；客户端 DoH/DoT 统一管理；完整 IPv6 与上游故障验证。

固定 ECS 配置匹配当时 WAN 的 /24。源码在固定地址模式仅对 A/AAAA 添加 ECS；TXT 诊断返回代理网段，未证明 WAN ECS 已在本轮实测中外泄。若调整这项策略，应检查 CDN 结果与连接出口。

## 给 AI 的实施任务示例

> 先只读核查 DHCP、dnsmasq、OpenClash 运行配置、解析后端和活动防火墙，给出普通查询、引导查询与本地区域的实际路径。保留 dnsmasq 的本地服务和 OpenClash 的域名关联；将普通查询的上游策略集中在 mosdns。后端升级先用独立端口验证，再接管原端口；不要重启 OpenClash。备份旧程序、配置、启动方式和恢复脚本。候选配置、差异、测试结果及回退材料准备好后，再按授权切换。

验收至少覆盖：客户端正常域名、分组域名、广告、特殊记录类型、本地名称与私有 PTR；外部 UDP/TCP 53 的实际去向；客户端加密 DNS；上游失效回落和实际双栈出口。不要把 HTTP 403 当成 DNS 故障，不要通过第三方公共 DNS 测试真实内网主机名。
