路由、节点与规则
策略管理组选择与成员。节点管理来源、订阅与探测。规则编辑路由与 DNS 规则,并用追踪模拟检查路由。
本页介绍标准版;doona lite 请参阅 doona lite。
策略组
打开「路由」分区中的「策略」。每个组显示一张卡片。在列表上方选择「全部」「手动选择」或「自动选择」可按选择方式筛选,各选项显示组数。筛选条件保存在 URL 中;链接指向被筛选隐藏的组时,页面会恢复显示全部组。
查看组卡片
- 卡片标题行显示组名称、策略,以及可用、不可用和未测试的成员数。
- 铅笔按钮打开「编辑群组」;组为只读时,使用「更多操作 > 查看配置」。「检测设置」按后端能力显示「检测网址」「检测间隔」「容忍差值」与「空闲超时」。
- 下方的成员网格显示每个成员的状态或延迟。成员超过 12 个时,网格上方会出现「筛选节点」「地区」「排序」(「按延迟」或「按名称」)和「只显示可用节点」。
各组的成员卡片使用相同列宽;成员较少时保留行末空位。长名称会换行。成员本身为组时,显示父组对它的延迟采样;没有采样时,显示其当前选择最终指向的节点延迟。
自动组默认折叠,显示名称、当前成员和健康状态。点击摘要可展开卡片。已固定或通过链接打开的组会自动展开。在折叠卡片上选择「恢复自动选择」会解除 TCP 和 UDP 的固定。禁用的操作通过帮助控件显示原因,触屏也可查看。
选择成员
- 策略为「手动选择」的组,在网格中点击成员后立即切换到该成员。
- 自动策略的组若后端允许手动固定,点击成员即固定该成员。状态由「自动」变为「已手动固定」,提示消息说明自动策略已暂停。
- 如需解除固定,打开卡片的「更多操作」,选择「恢复自动选择」。此项只在组已固定时出现。提示消息会列出自动策略当前选出的成员。
- 卡片显示「两者」「TCP」「UDP」选择器时,先选择网络。选择「两者」时,选择成员、固定成员或「恢复自动选择」同时作用于 TCP 和 UDP;选择「TCP」或「UDP」时只作用于该网络。
- 「编辑群组」或「查看配置」中的「切换时中断现有连接」决定切换成员时是否中断现有连接。在「手动选择」策略的组中选择成员后,提示消息会说明现有连接已保留或已中断。
测试、编辑与检测设置
「测试全部」「按选项探测…」与「检测设置」位于卡片的「更多操作」中;铅笔按钮打开「编辑群组」。
-
「测试全部」使用「设置 > 延迟探测」测量组。提示列出可用、不可用与未知数量,以及选择是否更改。「按选项探测…」提供支持的 HTTP、TCP 连接、DNS (TCP)、DNS (UDP) 或 DNS (TCP + UDP),以及 IP 地址族、「冷探测」与「包含嵌套分组中的节点」。初始值取自浏览器的探测偏好。不支持的方法改用可用方法,提示会说明变化。
Trojan、AnyTLS 与 VLESS 的 UDP 支持取决于节点配置时,仍保留 DNS UDP 选项。后端拒绝执行时会显示原因,不会静默改用 HTTP。测量超时、取消、缺少可用地址或本地拒绝时,探测结果可能为“结果未知”,不代表节点不可用。
-
「编辑群组」修改「选择方式」、成员与筛选条件。后端允许时,还显示「默认成员」与「最终出站」。「应用」校验、写入定义组的主文件或 include 文件并重载。其他配置变更导致保存被拒绝时,重试只写入对话框中修改过的字段。字段冲突或组被重命名时须重新打开编辑器。组在其他位置被移除时,编辑器保持打开,并说明修改未保存。
-
选择「检测设置」可修改「检测网址」「检测间隔」「容忍差值」和「空闲超时」。对话框只显示后端列为可写入的字段。字段留空表示使用全局值或默认值,然后点击「应用」。对话框打开后若后端已更改某个值,该字段会显示说明;再次应用会以对话框中的值覆盖。
「默认成员」是组的初始成员,仅在「选择方式」为手动时显示;改选自动策略会保留文件中的 default。「最终出站」在没有合格成员时使用。两个选择器都支持搜索。「默认成员」列出组的直接成员;「最终出站」提供 direct、block、组和节点,并排除会形成循环的组。选择「无」会移除对应的 default 或 final 设置。点击卡片的铅笔按钮打开「编辑群组」,可查看这些字段。
在「编辑群组」中,「切换时中断现有连接」暂存至点击「应用」才写入。在「查看配置」中,更改此开关会立即写入。
编排组成员
-
点击卡片的「编辑群组」或卡片上方的「新建组」,打开共用组编辑器。
-
选择地区、订阅、单个节点或嵌套组。地区选项默认收起,点击「地区」可展开,已选地区标签仍会显示。对话框预览「匹配的节点」。
-
成员的移除按钮可撤销该项包含关系。仍匹配其他筛选条件的节点会保留,须修改对应条件才能移除。
-
「添加筛选」支持名称与
subtag匹配。「添加 OR 匹配」连接备选条件;同一筛选中的多个条件须同时匹配。自定义表达式仍可作为文本编辑。 -
在「新建组」填写「组名称」,选择「选择方式」与成员。空筛选包含所有节点,须明确选择所需成员。
「组」与「节点」选择器固定搜索框,仅滚动选项列表。可搜索的菜单与其他选择器也采用此布局;地区复选框随对话框正文滚动。
-
「应用」校验、写入并重载;「取消」放弃对话框草稿。
节点与订阅
打开「路由」分区中的「节点」。「节点」标签页列出节点来源,包括订阅、文件和配置内的节点。后端提供节点列表时才会显示「延迟」标签页。
没有订阅或代理节点时,「节点」提供「添加订阅」和「粘贴节点链接」。「活动」的「开始使用」卡片中的「添加订阅」会直接打开订阅对话框。
来源与节点
- 「节点来源」为每个来源显示一张卡片,列出种类、状态、节点数量、更新时间、到期时间与用量。后端报告流量额度时,用量下方显示配额仪表。更新、编辑与移除控件按后端能力显示在页面说明旁及卡片上。
- 点击卡片,或用方向键在卡片间移动并选择来源。下方的节点表格列出该来源的节点。「搜索节点」覆盖所有来源;「组」与「协议」可筛选表格。
后端报告节点配置的传输方式时,「协议」会在协议名称后的括号中显示该传输方式。字段缺省或为 null 时,显示保持不变。「协议」筛选器仍按协议匹配。
到期时间显示到分钟,工具提示包含秒。日期与时间遵循日期格式与时间格式,默认使用 24 小时制。

测试按钮使用「设置 > 延迟探测」;「按选项探测…」提供后端支持的选项。「加入组」列出可写主文件或 include 文件中的组,并打开已暂存该节点的组编辑器;点击「应用」确认。
尚未获取成功且没有错误记录的订阅显示「尚未获取」。「过期数据」表示保留的数据需要更新。「组」筛选器与「加入组」子菜单在长列表中提供搜索。配置可读时,即使运行时 groups API 不可用,也可编辑组。
空文件来源仍保留在「节点来源」中,显示状态,并在允许时提供移除操作。

延迟
- 打开「延迟」标签页。摘要显示最低延迟、最高延迟和不可用的节点数。
- 图表显示每个节点的「当前延迟」。后端提供时,也会显示「移动平均」和「近 10 次平均」。
- 在「分组方式」中选择「按组」或「按协议」。每组会列出不可用或未测量的节点名称。
- 点击图表中的节点,可在「节点」标签页打开该节点。
添加订阅或节点
添加或移除订阅与文件来源需要后端允许管理来源;添加或移除单个节点需要后端允许管理节点。两类操作都要求主配置可写入;参阅只读来源。
- 点击「添加订阅」,输入「名称」与「订阅网址」(HTTP 或 HTTPS)。按后端能力,对话框还提供「自动更新」「User-Agent」与「缓存订阅内容」。网址未包含协议时,字段失去焦点或保存时会补上
https://。无法使用的网址会在字段下方说明原因。 - 点击「添加」。后端将订阅写入主配置的 subscription 区段。订阅网址会保存,但不会再返回显示。
- 新订阅在获取前没有节点。后端支持刷新订阅时,doona 会立即刷新,提示消息显示节点数。刷新失败时,提示消息提供「重试」。
- 如需添加单个节点,点击节点表格上方的「粘贴节点链接」。输入「名称」和「节点链接」(例如
vless://…),再点击「添加」。节点会写入主配置的 node 区段。无法使用的节点链接会在字段下方说明原因。
使用 honk 时,可粘贴 Trojan、VMess 或 VLESS 分享链接,使用仅支持 H2 的 XHTTP。xhttp 及其别名 splithttp 选择此传输方式;支持的模式为 auto、packet-up、stream-up 和 stream-one。honk 会拒绝不支持的选项,包括 xmux 和 downloadSettings。链接选项与限制见 honk 的 XHTTP 参考文档。
刷新订阅
- 点击订阅卡片的「更新 {name}」立即获取该订阅。「更新 N 个订阅」一次获取全部订阅。
- 刷新会经由订阅的下载路由获取内容,并应用新的节点;订阅的来源设置不会改变。
- 成功时,提示消息显示节点数。失败时,保留最近一次成功加载的节点。
- 下载路由尚无可用节点时,刷新会失败,不会改用直连。例如,路由规则将订阅导向一个由该订阅尚未提供的节点组成的组。
- 如需更改更新频率,在「自动更新」选择数值。「自定义」接受非负整数「间隔」与「单位」,例如「小时」。doona 将间隔写入主配置并重载。
编辑订阅
- 点击订阅卡片的「编辑 {name}」;{name} 为订阅名称。doona 无法确定唯一且可写的条目时,改用「打开配置文件」。
- 修改「名称」「订阅网址」或「User-Agent」。User-Agent 留空会移除
ua,使用引擎默认值。订阅条目设置了cache,或后端提供缓存默认值时,显示「缓存订阅内容」。其他选项保持原样。 - 显示「下载路由」时,可选择「按路由规则」「直连」或一个组。此设置影响订阅下载,不影响其节点的流量。选择「按路由规则」会移除显式的
route。 - 点击「应用」。doona 校验、写入声明此订阅的文件并重载。
重命名时也可更新同一文件中的简单 subtag(...) 筛选条件;保持提供的更新开关开启可保留这些成员关系。其他文件或表达式中的引用会阻止重命名,须先在「策略」修改这些筛选条件。
移除来源或节点
- 如需移除订阅或文件来源,打开该卡片的「更多操作」,选择移除项,再在对话框中确认。doona 会从主配置删除此来源及其节点并重载。
- 配置内的节点在其行上有移除按钮。移除后,该节点会从主配置的 node 区段删除并重载。
组的 subtag(...) 筛选条件引用的订阅无法移除。对话框列出组名称并链接到「策略」;修改其筛选条件后才能移除。
include 文件中声明的订阅与节点不能在此移除;禁用操作会说明须在声明文件中删除。「节点操作 > 编辑…」修改配置内节点在声明来源中的链接与名称。重命名会更新同一来源的精确节点筛选、默认与最终成员,以及 DNS 上游绕行;其他来源中的引用会阻止重命名。
路由规则
打开「路由」分区中的「规则」。后端提供时显示「DNS 规则」与「追踪模拟」。配置可读时,即使规则 API 不可用,「路由规则」也可显示模板。
规则模板
配置可读时,「路由规则」提供模板。同时提供规则列表或流程记录时,「简易 / 高级」分别显示模板与列表。链接未指定视图时默认打开「简易」,自定义规则也如此。指定查看或编辑规则、预填新规则条件或查看暂存规则的链接,未明确指定其他视图时打开「高级」。

「简易」用于选择模板;下方的来源操作位于「高级」与「DNS 规则」。
只有一个文件含顶层 routing,且内容与模板匹配时,「简易」会选中识别出的模板名称。否则视为自定义规则:不选中任何模板,并提示当前规则不属于任何分流方式。routing 分散在多个文件中时,也视为自定义规则。
使用 geosite: 或 geoip: 的分流方式模板需要 geosite.dat 与 geoip.dat;应用前请按离线依赖错误中的说明安装。
- 在「分流方式」中选择「绕过中国大陆」「只代理 GFW 名单」或「全局代理」。「更多模板」提供「单一代理组」「按服务分组」「按服务与地区分组」和「回国」。
- 更改模板或选项,再点击「应用」打开确认对话框。对话框列出目标文件:含顶层
routing的文件;没有这类文件时,使用主配置。 - 检查「将创建的组」与「沿用的现有组」。现有 group 保留原设置,包括其他已加载文件中的 group;缺少的 group 会加入目标文件。沿用的 group 若只按一个确切节点名筛选,或使用
fixed策略,会显示固定节点警告。新 group 与节点同名时也会警告:指向该名称的规则将使用 group,而不是节点。 - 「不再引用的规则文件」列出将被替换的 routing 内的
include路径。应用时会移除这些语句,其中的规则不再经由这些 include 生效;文件仍保留在磁盘上。展开「{file} 的变更」检查 diff。 - 所有已加载文件都没有
dns区段时,对话框显示「同时加入 DNS 路由」,默认勾选。此选项会在目标文件加入dns区段:geosite:cn查询由alidns(223.5.5.5)处理,其余查询经cloudflare(1.1.1.1)以 DNS over TLS 处理。取消勾选则不添加新的dns区段。 - 点击「应用」确认。此操作替换目标文件的顶层
routing,不存在时则添加,并补上缺少的 group 和选用的 DNS 区段。现有 DNS routing、其他内容与其他文件保持不变。写入后重载配置。后端拒绝该模式时,对话框保持打开,并逐项列出校验错误与行号。
所有模板都提供三个选项:
- 「屏蔽广告」默认关闭,屏蔽
geosite:category-ads-all中的域名。 - 「屏蔽 QUIC」默认开启,屏蔽发往 port 443 的 UDP 流量。
- 「NetworkManager 直连」默认开启,让 NetworkManager 流量直接连接。
honk 在 routing 之前标记自身的 socket,因此「屏蔽 QUIC」不影响 honk 与 QUIC 节点之间的连接。
「回国」适用于身在中国大陆以外、需经大陆节点访问中国大陆服务的用户。此模板将 geosite:cn 域名和 geoip:cn IP 地址导向组 cn。该组选取名称带有中国大陆标记的节点,并排除香港、澳门和台湾节点。其余流量使用 fallback: direct。
新建组的标签使用界面语言;地区组的标签带有国旗 emoji,例如 🇭🇰 香港 和 🇨🇳 回国节点。
后端回报的引擎名称不是 honk、配置写入被关闭、没有目标文件,或顶层 routing 分散在多个文件中时,无法应用模板。目标文件含 native_api 或 clash_api 设置、只读、文本未提供或不完整(SHA-256 不符),或后端已拒绝该文件的写入权限时,也无法应用。页面会说明原因;routing 内含 include 语句本身不会阻止应用模板。
查看规则列表
若显示「简易」与「高级」切换选项,先选择「高级」。

第一条匹配的规则决定出站;最后一行不编号,是 fallback;must 锁定出站。「编辑规则」与「移除规则」要求文件可写、文本完整且能定位到规则。
「命中」只统计 rule_generation_id 与列表的 generation_id 相同的保留流程记录,不是累计值;列表说明标明 generation 与规则数。后端只提供流程而不提供规则列表时,改为按规则分组显示当前快照的流程及「命中」「占比」。
基于流程的列表提供「规则来源」筛选:kernel 表示 eBPF 匹配,userspace 表示 userspace router 匹配,recomputed 表示重新评估规则,unknown 表示无法确认匹配来源。
打开规则来源
- 所有来源已知的行都可使用「打开配置文件」,包括可写与只读来源;「配置」页打开该文件并定位到规则行,见编辑来源。
- 位于引入文件、且不在 routing 区段内的规则无法在列表中更改,须通过「打开配置文件」在文件中编辑。
编辑或移除规则
- 点击行内「编辑规则」,修改条件与目标。可表示为条件行的表达式使用条件行,其余仍以「表达式」编辑。所有条件行须同时匹配;fallback 只修改目标。点击「编辑规则」校验、写入并重载。
- 点击某行的「移除规则」。对话框列出将删除的文件和行号。点击「移除规则」确认。
- 两项操作都在校验通过后写入并重载。提示消息说明更改已生效;现有连接保持当前路由,重新连接后才应用更改。
- 文件只读或不完整、无法定位规则行,或规则位于 routing 区段外的 include 文件时,禁用操作通过帮助控件显示原因。
- 连接的「更多操作 > 编辑命中规则的出站设置」打开命中规则的「编辑规则」,不限于修改出站。
DNS 规则

两份列表都按顺序匹配。response 规则接受应答、拒绝应答,或改由其他上游重新查询。「打开配置文件」也适用于只读文件;「编辑规则」与「移除规则」需要写入权限。
任一列表的「新建规则」使用规则列表对话框,以 Action 取代 Outbound,没有 Lock this outbound,并写入该来源的 DNS routing 区段。「解析记录」打开 DNS,「打开 DNS 配置」打开配置的 dns 区段。
新建规则
新建规则有两种对话框。从规则列表打开的对话框会立即写入规则;从观测流量打开的对话框另外提供暂存。
从规则列表新建
-
在「路由规则」标签页,若显示视图切换选项,先选择「高级」,再点击列表上方的「新建规则」。
-
在「条件写法」选择「选择」,再选择「依据」(例如「域名后缀」「geosite 分类」或「目标 IP」)并输入逗号分隔的「值」。「添加 AND 条件」增加条件行,所有行须同时匹配。也可选择「表达式」并输入「条件」,例如
domain(geosite:netflix)。从「表达式」切回「选择」会将编辑后的表达式转换为条件行。无法用条件行表示的表达式会保留在「表达式」中,并显示说明。清空表达式后切回「选择」,会重置为一个空条件行。
-
选择「出站」。默认为第一个组;没有组时为
direct。打开「锁定此出站」会加上must。 -
选择「插入位置」:「最后(fallback 之前)」或「第 N 条之前」。默认为列表中的第一个位置。
-
点击「新建规则」。doona 将规则加入来源文件的 routing 区段,校验通过后写入并重载。
「域名关键字」匹配域名中的子串。例如,tracker, ads 生成 domain(keyword: tracker, keyword: ads),匹配任一关键字。DNS 规则提供相同条件,生成 qname(keyword: tracker, keyword: ads)。「出站」支持搜索,先列出 direct 和 block,再列出组,不提供单个节点。「插入位置」可按规则文本搜索。
从观测流量新建
以下页面也可打开规则对话框。行内图标无需先选中行即可使用。
- 「连接」:点击行内的新建规则图标。详情面板在可用时也提供「新建规则」。工具栏没有新建规则按钮。参阅连接。
- 「分流」:点击记录行的新建规则图标。详情面板没有新建规则按钮。参阅分流。
- 「DNS」:点击「查询」结果或应答地址旁的「新建规则」,或「解析记录」与「缓存」行内的新建规则图标。域名行打开「规则 > DNS 规则 > request 规则」。不提供 DNS 规则时,图标打开路由规则。参阅DNS。
- 「追踪模拟」:提供此按钮的规则评估卡片。参阅追踪模拟。
在对话框中:
- 流量可写入多份列表时,选择「规则列表」:「路由规则」「DNS request 规则」或「DNS response 规则」。
- 流量提供多种条件时,选择「依据」。DNS 规则还可限定为该查询的记录类型。
- 选择「出站」;DNS 规则则选择「动作」。出站没有预设值。选项下方显示当前的出站;所选出站不会改变流量走向时,对话框会提示。
- 确认「插入位置」。流量命中的规则位于可写入文件时,默认为「命中规则之前」。其他选项为「最后(fallback 之前)」和「最前」。
- 对话框底部预览规则内容。前面的规则仍可能先命中此流量,或列表、暂存列表中已有相同规则时,对话框会显示说明。
- 点击「暂存」或「应用」:
- 「暂存」将规则加入暂存列表,不写入。提示消息提供「查看暂存的规则」。
- 「应用」立即写入这条规则并重载。提示消息说明新规则已生效;路由规则提供「查看规则」,从 DNS 查询新建的 DNS 规则则提供「重新查询」。
- 配置无法写入时,对话框改为提供「复制规则」。
暂存列表
- 暂存规则只保留在当前的浏览器会话中。重新加载页面会丢弃暂存规则,因此有暂存规则时离开页面,浏览器会先要求确认。
- 「规则」页在每份含暂存规则的列表上方显示「待应用:N」卡片。每行显示规则内容和插入位置。
- 点击某行的「舍弃暂存的规则」可舍弃该规则。
- 点击卡片上的「应用暂存的规则」或顶部栏带有规则数量的应用按钮,会写入所有列表中的全部暂存规则。卡片会注明其他列表中的暂存规则数;需写入多个文件时,也会显示文件数。
- 规则逐个文件写入,每个文件各自校验并重载。已写入的规则会离开暂存列表。某个文件失败时,尚未写入的规则保留在暂存列表中,失败原因和相关行号显示在卡片上。
- 顶部栏的「重载 honk」只重载已写入的配置,不会写入暂存规则。参阅顶部栏。
追踪模拟
追踪模拟按当前配置模拟规则匹配,不会与目标建立连接。
执行追踪
- 打开「规则」中的「追踪模拟」。
- 选择「网络协议」(TCP 或 UDP)。输入「域名」「目标 IP」或两者,以及「目标端口」。
- 选择「解析模式」:「不解析(none)」「实时解析(live)」或「先查 DNS 再模拟(query)」。live 和 query 会先解析域名,因此须填写域名,并将「目标 IP」留空。只能使用后端提供的模式。
- 展开「高级条件」可加入「来源 IP」「来源端口」「进程名称」,或可选的 0 至 63 整数「DSCP」,用于
dscp(...)规则。 - 点击「开始追踪」。
仅提供目标 IP 时,模拟按 IP 与端口判定。dial_mode 使用 domain 系列模式时,引擎会从实际 TLS 或 HTTP 流量嗅探域名,并重新评估规则;如需模拟此结果,请一并提供域名。
解读结果
- 状态行显示观测时间和追踪所依据的
generation。 - 使用 query 解析时,DNS 查询卡片显示查询结果。「查询 DNS」和「查看缓存」会在「DNS」页打开该名称。
- 每张「规则评估 N」卡片显示「判定」(「已判定」或「无法判定」)和「出站」。前序规则缺少输入时,卡片改为显示「可能出站」和「缺少输入」;补齐这些输入后重新执行追踪。
- 出站为组时,卡片显示「节点」链和「连通性」。测试按钮可测量该节点;查看组和查看节点的链接可打开对应页面。
- 表格列出每条规则的「结果」(「匹配」「不匹配」「跳过」或「无法判定」)以及该规则缺少的输入。
从结果新建规则
点击规则评估卡片上的「新建规则」,会打开从观测流量新建的对话框,条件取自追踪输入。再点击「暂存」或「应用」。