路由、节点与规则
本页说明「路由」分区中的「策略」「节点」和「规则」三个页面。内容包括选择组成员、管理订阅、查看与修改规则、暂存规则后一并应用,以及用追踪模拟检查路由。
策略组
打开「路由」分区中的「策略」。「组」标签页为每个组显示一张卡片。
查看组卡片
- 卡片标题行显示组名称、策略,以及可用、不可用和未测试的成员数。
- 展开「配置」可查看组的设置,例如「检测网址」「检测间隔」和「容忍差值」。
- 下方的成员网格显示每个成员的状态或延迟。成员超过 12 个时,网格上方会出现「筛选节点」「地区」「排序」(「按延迟」或「按名称」)和「只显示可用节点」。
选择成员
- 策略为「手动选择」的组,在网格中点击成员后立即切换到该成员。
- 自动策略的组若后端允许手动固定,点击成员即固定该成员。状态由「自动」变为「已手动固定」,提示消息说明自动策略已暂停。
- 如需解除固定,打开卡片的「更多操作」,选择「恢复自动选择」。此项只在组已固定时出现。提示消息会列出自动策略当前选出的成员。
- 卡片显示「两者」「TCP」「UDP」选择器时,先选择网络。选择「两者」时,选择成员、固定成员或「恢复自动选择」同时作用于 TCP 和 UDP;选择「TCP」或「UDP」时只作用于该网络。
- 卡片显示「切换时中断现有连接」时,此开关决定切换成员时是否中断现有连接。更改此开关会写入组配置并重载。在「手动选择」策略的组中选择成员后,提示消息会说明现有连接已保留或已中断。
测试、编辑与检测设置
以下三项操作都位于卡片的「更多操作」中。
- 选择「测试全部」可探测所有成员。提示消息列出可用、不可用和状态未知的数量,以及选择是否更改。后端无法探测此组时,此项停用。
- 选择「编辑群组」可修改「选择方式」和筛选条件(「筛选 1」「筛选 2」「添加筛选」),然后点击「应用」。doona 在定义此组的文件中改写 group 区段内的策略与筛选条件,保留其他字段;校验通过后写入并重载。组有多处定义、所在文件只读,或已读取的文件中没有此组定义时,此项停用。
- 选择「检测设置」可修改「检测网址」「检测间隔」「容忍差值」和「空闲超时」。对话框只显示后端列为可写入的字段。字段留空表示使用全局值或默认值,然后点击「应用」。对话框打开后若后端已更改某个值,该字段会显示说明;再次应用会以对话框中的值覆盖。
编排组成员
- 打开「组成员」标签页。左侧为组,右侧为节点与订阅。
- 将节点或订阅拖动到组;也可勾选多行后,点击列表下方的「加入组」。
- 按名称加入的节点或整个加入的订阅,可点击其移除按钮移除。组通过规则选入的节点无法在此移除,须在配置来源中修改。
- 如需创建组,点击「新建组」,输入「组名称」,选择「选择方式」,再点击「创建」。创建后须加入至少一个节点或订阅;没有成员的组会包含所有节点,因此无法应用。
- 更改会先暂存,页面显示尚未应用的更改数。点击「全部放弃」可放弃更改;点击「检查并应用」可打开「检查更改」。
- 「检查更改」列出每项暂存更改,每项都有撤销按钮。展开「查看写入的配置文本」可查看组文本。点击「应用」后,doona 先校验整份配置,再写入并重载;校验失败时不会写入。
- 有暂存更改时离开页面,会先要求确认放弃更改。
节点与订阅
打开「路由」分区中的「节点」。「节点」标签页列出节点来源,包括订阅、文件和配置内的节点。后端提供节点列表时才会显示「延迟」标签页。
来源与节点
- 「来源」表格显示每个来源的「种类」「节点」「用量」「更新」「自动刷新」「到期」和「状态」。
- 选中一行来源后,下方的节点表格显示该来源的节点。「搜索节点」覆盖所有来源;「组」和「协议」可筛选表格。
- 每行节点显示「协议」「延迟」和「所属组」。点击该行的测试按钮可测量此节点;提示消息显示延迟或失败原因。
- 在节点行点击「加入组」,再选择组。doona 会在主配置中将节点名称加入该组并重载。选择「新建组…」可创建以名称筛选纳入此节点的组:输入「名称」,选择「选择方式」,再点击「加入」。
延迟
- 打开「延迟」标签页。摘要显示最低延迟、最高延迟和不可用的节点数。
- 图表显示每个节点的「当前延迟」。后端提供时,也会显示「移动平均」和「近 10 次平均」。
- 在「分组方式」中选择「按组」或「按协议」。每组会列出不可用或未测量的节点名称。
- 点击图表中的节点,可在「节点」标签页打开该节点。
添加订阅或节点
添加或移除订阅与文件来源需要后端允许管理来源;添加或移除单个节点需要后端允许管理节点。两类操作都要求主配置可写入;参阅只读来源。
- 点击「添加订阅」,输入「名称」和「订阅网址」(HTTP 或 HTTPS)。视后端支持情况,对话框还提供「自动刷新」「User-Agent」和「缓存订阅内容」。
- 点击「添加」。后端将订阅写入主配置的 subscription 区段。订阅网址会保存,但不会再返回显示。
- 新订阅在获取前没有节点。后端支持刷新订阅时,doona 会立即刷新,提示消息显示节点数。刷新失败时,提示消息提供「重试」。
- 如需添加单个节点,点击节点表格上方的「粘贴节点链接」。输入「名称」和「节点链接」(例如
vless://…),再点击「添加」。节点会写入主配置的 node 区段。
刷新订阅
- 点击订阅行的刷新按钮,可立即获取该订阅。点击「刷新全部订阅(N)」可一次获取所有订阅;「设置」页的后端操作也提供相同操作。
- 刷新会经由订阅的下载路由获取内容,并应用新的节点;订阅的来源设置不会改变。
- 成功时,提示消息显示节点数。失败时,保留最近一次成功加载的节点。
- 下载路由尚无可用节点时,刷新会失败,不会改用直连。例如,路由规则将订阅导向一个由该订阅尚未提供的节点组成的组。
- 如需更改订阅的刷新频率,在该行的「自动刷新」列选择数值。doona 会将间隔写入主配置并重载。
移除来源或节点
- 如需移除订阅或文件来源,打开该行的「更多操作」,选择移除项,再在对话框中确认。doona 会从主配置删除此来源及其节点并重载。
- 配置内的节点在其行上有移除按钮。移除后,该节点会从主配置的 node 区段删除并重载。
路由规则
打开「路由」分区中的「规则」。标签页包括「路由规则」「DNS 规则」和「追踪模拟」;每个标签页只在后端提供对应功能时显示。
查看规则列表
- 从上到下阅读列表。第一条匹配的规则决定出站;最后一行编号为
—,即 fallback。 - 每行显示「序」「表达式」「出站」「位置」和「命中」。
must标记表示出站已锁定。 - 「位置」显示规则所在的文件和行号。「命中」统计当前快照中保留的流程记录,不是累计值。
- 列表说明文字显示规则数和规则列表的
generation。 - 后端只提供流程记录而不提供规则列表时,此标签页改为显示当前快照中按规则分组的流程,包括「命中」和「占比」。
打开规则来源
- 点击某行的「打开来源」,「配置」页会打开该文件并定位到规则所在行;参阅编辑来源。
- 位于引入文件、且不在 routing 区段内的规则无法在列表中更改,须通过「打开来源」在文件中编辑。
编辑或移除规则
- 点击某行的「编辑出站设置」。对话框显示规则的表达式。选择其他「出站」,必要时打开「锁定此出站」,再点击「编辑出站设置」确认。此操作只修改出站,条件保持原样。
- 点击某行的「移除规则」。对话框列出将删除的文件和行号。点击「移除规则」确认。
- 两项操作都在校验通过后写入并重载。提示消息说明更改已生效;现有连接保持当前路由,重新连接后才应用更改。
- 规则所在文件只读或内容不完整、doona 无法定位规则所在行,或规则位于 routing 区段外的引入文件时,两个按钮都会停用,鼠标悬停时显示原因。
- 在连接的「更多操作」中选择「编辑命中规则的出站设置」,会为该连接命中的规则打开此对话框。
DNS 规则
- 打开「DNS 规则」标签页。标签页包含两份列表,各自按顺序匹配:「request 规则」决定如何处理每个查询;「response 规则」决定接受应答、拒绝应答,或通过另一个上游重新查询。
- 每行显示规则的表达式、「动作」和「位置」。「解析记录」和「打开 DNS 配置」分别链接到「DNS」页和配置的 dns 区段。
- 在任一列表点击「新建规则」可添加规则。对话框与从规则列表新建相同,但以「动作」取代「出站」,且没有「锁定此出站」。规则会写入来源文件的 dns routing 区段。
- 点击某行的「移除规则」可删除规则。DNS 规则没有编辑按钮;如需修改,通过「打开来源」在文件中编辑。
新建规则
新建规则有两种对话框。从规则列表打开的对话框会立即写入规则;从观测流量打开的对话框另外提供暂存。
从规则列表新建
- 在「路由规则」标签页,点击列表上方的「新建规则」。
- 在「条件写法」中选择「选择」,再选择「依据」(例如「域名后缀」「geosite 分类」或「目标 IP」)并输入「值」,多个值以逗号分隔;或选择「表达式」,直接输入「条件」,例如
domain(geosite:netflix)。 - 选择「出站」。默认为第一个组;没有组时为
direct。打开「锁定此出站」会加上must。 - 选择「插入位置」:「最后(fallback 之前)」或「第 N 条之前」。默认为列表中的第一个位置。
- 点击「新建规则」。doona 将规则加入来源文件的 routing 区段,校验通过后写入并重载。
从观测流量新建
以下页面也提供「新建规则」:
- 「连接」:选中一行后使用工具栏按钮,或在连接详情面板中使用。参阅连接。
- 「分流」:记录详情中的「为此目标新建规则」。参阅分流。
- 「DNS」:「查询」结果及其中每个应答地址、「解析记录」中的记录,以及「缓存」中的条目。参阅DNS。
- 「追踪模拟」:提供此按钮的规则评估卡片。参阅追踪模拟。
在对话框中:
- 流量可写入多份列表时,选择「规则列表」:「路由规则」「DNS request 规则」或「DNS response 规则」。
- 流量提供多种条件时,选择「依据」。DNS 规则还可限定为该查询的记录类型。
- 选择「出站」;DNS 规则则选择「动作」。出站没有预设值。选项下方显示当前的出站;所选出站不会改变流量走向时,对话框会提示。
- 确认「插入位置」。流量命中的规则位于可写入文件时,默认为「命中规则之前」。其他选项为「最后(fallback 之前)」和「最前」。
- 对话框底部预览规则内容。前面的规则仍可能先命中此流量,或列表、暂存列表中已有相同规则时,对话框会显示说明。
- 点击「暂存」或「应用」:
- 「暂存」将规则加入暂存列表,不写入。提示消息提供「查看暂存的规则」。
- 「应用」立即写入这条规则并重载。提示消息说明新规则已生效;路由规则提供「查看规则」,从 DNS 查询新建的 DNS 规则则提供「重新查询」。
- 配置无法写入时,对话框改为提供「复制规则」。
暂存列表
- 暂存规则只保留在当前的浏览器会话中。重新加载页面会丢弃暂存规则,因此有暂存规则时离开页面,浏览器会先要求确认。
- 「规则」页在每份含暂存规则的列表上方显示「待应用:N」卡片。每行显示规则内容和插入位置。
- 点击某行的「舍弃暂存的规则」可舍弃该规则。
- 点击卡片上的「应用暂存的规则」或顶部栏的「应用(N)」,会写入所有列表中的全部暂存规则。卡片会注明其他列表中的暂存规则数;需写入多个文件时,也会显示文件数。
- 规则逐个文件写入,每个文件各自校验并重载。已写入的规则会离开暂存列表。某个文件失败时,尚未写入的规则保留在暂存列表中,失败原因和相关行号显示在卡片上。
- 顶部栏的「重载 honk」只重载已写入的配置,不会写入暂存规则。参阅顶部栏。
追踪模拟
追踪模拟按当前配置模拟规则匹配,不会与目标建立连接。
执行追踪
- 打开「规则」中的「追踪模拟」。
- 选择「网络协议」(TCP 或 UDP)。输入「域名」「目标 IP」或两者,以及「目标端口」。
- 选择「解析模式」:「不解析(none)」「实时解析(live)」或「先查 DNS 再模拟(query)」。live 和 query 会先解析域名,因此须填写域名,并将「目标 IP」留空。只能使用后端提供的模式。
- 展开「高级条件」可加入「来源 IP」「来源端口」或「进程名称」。
- 点击「开始追踪」。
仅提供目标 IP 时,模拟按 IP 与端口判定。dial_mode 使用 domain 系列模式时,引擎会从实际 TLS 或 HTTP 流量嗅探域名,并重新评估规则;如需模拟此结果,请一并提供域名。
解读结果
- 状态行显示观测时间和追踪所依据的
generation。 - 使用 query 解析时,DNS 查询卡片显示查询结果。「查询 DNS」和「查看缓存」会在「DNS」页打开该名称。
- 每张「规则评估 N」卡片显示「判定」(「已判定」或「无法判定」)和「出站」。前序规则缺少输入时,卡片改为显示「可能出站」和「缺少输入」;补齐这些输入后重新执行追踪。
- 出站为组时,卡片显示「节点」链和「连通性」。测试按钮可测量该节点;查看组和查看节点的链接可打开对应页面。
- 表格列出每条规则的「结果」(「匹配」「不匹配」「跳过」或「无法判定」)以及该规则缺少的输入。
从结果新建规则
点击规则评估卡片上的「新建规则」,会打开从观测流量新建的对话框,条件取自追踪输入。再点击「暂存」或「应用」。