内核与客户端
这一组术语用于区分转发引擎、图形界面与操作系统接管方式。排障时先确认问题发生在客户端界面、内核进程,还是系统网络层。
- Clash
-
Clash 是以规则匹配、策略分流和本地代理为核心的网络代理工具生态。日常语境中的 Clash 可能指早期内核、兼容配置格式,也可能泛指采用相关内核的图形客户端。
查看文档时应先确认讨论对象:客户端负责界面与系统集成,内核负责连接、解析和转发。两者版本、支持字段与更新节奏可能不同。
- mihomo
-
mihomo 是由 Clash Meta 演进而来的代理内核。它读取配置文件,处理代理协议、规则匹配、DNS、TUN 接管与控制接口等底层功能。
Clash Verge Rev、FlClash 等图形客户端可以调用或管理 mihomo,但客户端名称并不等于内核名称。确认字段是否可用时,应同时检查客户端集成的内核与配置语法。
- 图形客户端
-
图形客户端为内核提供配置导入、策略切换、日志查看、系统代理控制和更新管理界面。它通常还负责申请系统权限、保存用户偏好并启动内核进程。
界面中显示连接成功,只说明相关开关或进程已进入预期状态。实际流量是否经过代理,还要结合系统代理、TUN 路由、规则命中和日志判断。
- 系统代理
-
系统代理是操作系统向应用公布 HTTP、HTTPS 或 SOCKS 代理地址的机制。浏览器和多数遵循系统网络设置的桌面程序会读取该地址,再把请求发送到 Clash 的本地监听端口。
部分游戏、命令行工具和自行实现网络栈的应用可能忽略系统代理。此类流量通常需要单独设置代理环境变量,或使用 TUN 模式接管。
- TUN 模式
-
TUN 模式通过虚拟网络接口接收操作系统交给它的 IP 流量,再由内核依据规则决定直连、代理或拒绝。它比系统代理覆盖的应用范围更广,也能处理部分不读取代理设置的程序。
启用 TUN 通常需要管理员权限、VPN 权限或相应的系统扩展。路由冲突、其他 VPN、虚拟机网卡和防火墙策略都可能影响接管结果。
代理协议
节点条目描述连接远端服务所需的参数。协议名称、传输方式和探测延迟分别反映不同维度,不能只根据其中一项判断可用性。
- 节点
-
节点是配置中用于描述一个远端代理入口的对象,通常包含服务器地址、端口、协议、认证参数和传输选项。策略组通过节点名称引用这些对象。
节点名称主要用于识别,名称中的地区或倍率信息由配置提供方定义。是否可用应结合实际连接、目标站点访问和持续稳定性判断。
- 代理协议
-
代理协议规定客户端与远端服务如何建立连接、认证身份和封装流量。不同协议对 TLS、传输层、UDP、插件参数及服务端实现有不同要求。
配置中的协议字段必须与服务端设置一致。仅修改协议名称不能完成格式转换,字段缺失或参数不匹配通常会导致握手失败。
- 延迟
-
延迟通常指从客户端发送探测请求到收到响应所经历的时间,单位为毫秒。客户端的延迟测试会访问一个指定 URL,因此结果也受测试地址、DNS 和当时网络路径影响。
较低延迟不等于更高下载速度,也不能反映长时间丢包和带宽波动。选择节点时应把延迟作为初筛条件,再结合目标服务的实际表现。
- UDP 转发
-
UDP 转发表示代理链路能够处理 UDP 数据报,常见于实时通信、部分游戏、QUIC 和 DNS 查询。它不建立与 TCP 相同的可靠字节流,因此超时和会话管理方式不同。
实际支持情况由内核、代理协议、节点服务端和策略组共同决定。节点字段声明支持 UDP,并不必然意味着链路上的所有环节均已正确启用。
- 多路复用
-
多路复用是在较少的底层连接上承载多个逻辑请求的机制。其目标通常是减少重复握手与连接建立开销,而不是直接提高线路带宽。
在丢包明显或服务端实现不匹配的网络中,多路复用也可能让多个请求相互影响。是否启用应依据协议文档和实际测试决定。
策略组与规则
规则决定请求交给谁处理,策略组决定可选择哪些出口。阅读规则列表时要保留原有顺序,因为先命中的规则通常会终止后续匹配。
- 策略组
-
策略组是一组节点、子策略组或内置动作的集合。常见类型包括手动选择、自动测速、故障切换和负载分配,具体可用类型由内核决定。
规则通常指向策略组名称,使出口选择与规则条件相互分离。这样可以在不修改规则的情况下切换节点或更换选择逻辑。
- 规则分流
-
规则分流根据域名、IP、端口、进程或规则集合等条件,把请求交给指定策略组。它用于让不同目标采用不同出口,而不是把所有流量固定送往同一节点。
规则通常按声明顺序从上到下匹配,较宽泛的条件放得过早会遮蔽后续精确规则。排查分流结果时,应先在连接记录中确认实际命中的规则。
- DIRECT
-
DIRECT 表示请求直接通过本地网络连接目标地址,不交给远端代理节点。它适合本地网络资源或明确需要使用当前网络出口的目标。
直连不代表绕过 Clash 的全部处理。请求仍可能经过内核的 DNS、规则判断或 TUN 路由,然后以本地网络作为最终出口。
- REJECT
-
REJECT 表示拒绝符合条件的连接或请求。它常被用于阻断指定域名、IP 地址或规则集合中的流量。
被拒绝的应用可能表现为连接立即失败、等待超时或资源无法加载,具体行为取决于内核响应方式和应用网络实现。排查误拦截时应检查规则顺序及规则集内容。
- GeoIP
-
GeoIP 使用数据库把 IP 地址归入国家或地区代码,再据此执行规则匹配。它适合按网络地址归属进行粗粒度分流。
数据库记录会随地址分配变化,且内容分发网络可能在不同位置返回不同 IP。GeoIP 结果不应被理解为服务器的精确物理位置。
- MATCH
-
MATCH 是规则列表中的最终兜底条件,用于接收此前均未命中的请求。它通常放在规则区末尾,并指向一个通用策略组或 DIRECT。
如果 MATCH 位于列表前部,后续规则将难以获得匹配机会。检查异常分流时,应确认兜底规则的位置和目标策略。
DNS 与解析
DNS 配置决定域名如何获得地址,也会影响域名规则能否保留足够信息。解析路径与代理路径是两个相互关联但不能混为一谈的阶段。
- DNS
-
DNS 是把域名转换为 IP 地址或其他资源记录的分布式系统。Clash 内核可以监听本地 DNS 请求,再按配置把查询发送给不同上游解析器。
DNS 成功只表示获得了解析结果,不代表目标连接一定可用。连接还需要经过规则匹配、路由选择、代理握手和目标服务响应。
- Fake-IP
-
Fake-IP 模式先为域名返回一段保留地址,并在内核内部记录该地址与域名之间的映射。应用连接这个保留地址时,内核可恢复原始域名并继续执行规则匹配和远端解析。
这种方式有利于保留域名信息,但少数依赖真实局域网地址或进行特殊 DNS 校验的应用可能需要加入过滤范围。调整过滤项时应针对具体域名处理。
- Redir-Host
-
Redir-Host 会先执行常规 DNS 解析,再把真实 IP 返回给应用。后续连接以该地址为基础进入内核,因此处理路径与 Fake-IP 不同。
该模式在部分局域网和特殊应用场景下更直观,但域名信息的保留程度可能受嗅探与连接方式影响。切换模式后应重新检查域名规则的实际命中情况。
- DNS 泄漏
-
DNS 泄漏是指原本计划交由指定解析路径处理的查询,被系统、路由器、浏览器内置机制或其他网络软件直接发送给了不同解析器。它通常反映 DNS 接管范围与预期不一致。
排查时需要检查系统 DNS 地址、客户端监听端口、TUN 的 DNS 劫持配置、浏览器安全 DNS设置以及其他 VPN。只更换一个上游地址通常不足以定位完整链路。
- nameserver-policy
-
nameserver-policy根据域名条件为 DNS 查询选择指定上游解析器。它可用于把不同域名交给不同的解析服务,或为特定域名建立固定解析路径。该字段处理的是 DNS 查询去向,不直接决定业务连接使用代理还是直连。连接出口仍由规则与策略组决定。
订阅与配置
订阅负责提供或更新内容,YAML 负责描述结构,客户端覆写负责把本地需求叠加到原始配置。三者的来源与生效顺序需要分别确认。
- 订阅
-
订阅是通过远程地址获取节点列表或完整配置的更新来源。客户端会按用户操作或设定周期重新请求内容,并把结果保存为可用配置。
订阅返回的可能是 YAML、经过编码的节点列表,或由服务端转换后的特定格式。导入失败时应先检查响应内容和状态,再检查客户端支持的字段。
- YAML
-
YAML 是 Clash 配置常用的结构化文本格式,通过空格缩进表达对象层级,通过短横线表达列表项目。字段名后的冒号、字符串引号和缩进深度都会影响解析。
YAML 不应混用制表符缩进。同一级字段需要保持一致缩进,包含特殊符号的值可使用引号包裹,以减少解析歧义。
- 配置文件
-
配置文件是保存端口、运行模式、DNS、节点、策略组和规则等字段的 YAML 文档。内核启动时读取配置,并根据字段建立监听器与转发逻辑。
图形客户端还可能保存一层独立于 YAML 的界面设置,例如开机启动、系统代理开关和内核路径。复制配置文件并不一定会同步这些客户端偏好。
- 代理集合
-
代理集合通常由
proxy-providers定义,用于从独立文件或远程地址加载一组节点。策略组可以通过 provider 引用这些节点,而不必把每个节点重复写入主配置。集合的更新间隔、存储路径、健康检查和格式需要分别配置。集合加载成功也不代表其中每个节点都能建立连接。
- 覆写与合并
-
覆写与合并是客户端在订阅内容基础上追加、替换或组合本地字段的过程。常见用途包括插入自定义规则、调整 DNS、增加策略组或保留本地端口设置。
不同客户端采用的合并语法和优先级并不完全一致。同名字段最终取值取决于处理顺序,因此修改后应查看客户端生成的最终配置,而不是只检查覆写片段。