Skip to content

路由与 DNS ​

路由决定到达节点的每个连接如何处理:由哪个出站承载,或是否拦截。DNS 决定节点如何解析域名。两者都属于模板,位于其路由和 DNS 标签页中,因此模板上的每个节点都按相同的方式路由。

路由的工作方式 ​

对于每个新连接,节点从上到下检查规则。第一条匹配的规则决定结果。没有匹配任何规则的连接交给默认出站。

完全没有规则时,所有流量都交给默认出站;除非你另选,默认出站就是内置的 direct。这是一个合理的起点:只为需要去别处的流量添加规则。

编写规则 ​

在模板的路由标签页中:

  1. 在规则集中选择规则要匹配的列表。只有被选中的规则集才能被规则引用。见 规则集。
  2. 点击添加规则。
  3. 在匹配中设置规则匹配的内容。
  4. 选择动作;动作为 route 时还要选择出站。
  5. 保存规则,然后保存模板。

列表按节点检查的顺序为规则编号。新规则添加在末尾;要调整顺序,请在 JSON 标签页中移动它。

规则可以匹配什么 ​

一条规则可以组合多个匹配条件。除非勾选 Invert match,所有条件都必须匹配。

匹配条件匹配对象
Domain、Domain suffix、Domain keyword、Domain regex目标的域名
IP CIDR、IP is private、IP version目标的地址
Port、Port range目标的端口
Rule set模板所选的任意列表;Rule set matches source IP 改为用用户的地址与之匹配
Networktcp 或 udp
Protocol嗅探识别出的协议:tls、http、quic、dns、bittorrent 等
Inbound连接进入时所用入站的标签
Auth user (panel user)用户的账户名
Source IP CIDR、Source port、Source IP is private连接的来源

基于只有手机或桌面应用才能看到的信息的规则,例如应用进程或 Wi-Fi 网络,会在保存时被拒绝:节点永远看不到这些信息,这样的规则永远不会匹配。

动作 ​

动作效果
route把连接发往所选的出站。
reject拒绝连接。
sniff读取连接的开头,识别其协议和域名,然后继续检查下一条规则。
resolve解析域名,让后面的地址规则可以匹配它。
hijack-dns把该连接当作 DNS 查询,用节点自己的 DNS 应答。
route-options设置连接选项,但不选择出站。

协议嗅探 ​

很多连接到达时只有地址,没有域名。sniff 规则从连接开头读取 TLS 服务器名称或 HTTP 主机名以及协议。之后的规则就可以按域名和 Protocol 匹配。当后面的规则要匹配域名或协议时,把 sniff 规则放在最前面。

嗅探是识别,不是保证:无法识别的流量会以未匹配状态继续交给下一条规则。

默认出站 ​

默认出站接收所有未被任何规则匹配的连接。它是模板上各节点的默认值。在单个节点上,有两种情况会覆盖它:节点自己的路由(见下文),以及恰好中继一条隧道的节点,它会把该隧道作为默认出站。

表单不够用时 ​

JSON 标签页按节点收到的原样显示整个路由配置。表单中没有的写法可以在这里编写。面板仍会拒绝那些会导致节点拒绝配置的选项。

DNS ​

模板的 DNS 标签页设置节点自身查询所用的解析器:用于 resolve 规则、按域名拨号服务器的出站,以及 hijack-dns。

用添加服务器添加服务器并选择类型:普通 UDP 或 TCP,加密的 tls、https、quic 或 h3,节点自身的系统解析器(local),其 hosts 文件(hosts),dhcp,或 fakeip。服务器可以通过**绕行(出站)**经由某个出站发送查询。服务器下方的 DNS 规则把指定的域名发往指定的服务器。

当模板定义了多个 DNS 服务器时,请在路由标签页中设置默认域名解析器。没有它,节点无法解析出站服务器的域名,会拒绝整个配置。缺少时编辑器会提醒你。

预设 ​

路由和 DNS 标签页中的从预设应用会套用现成的配置。列表见 模板。

  • 路由预设会替换模板的规则,因为规则的顺序就是路由本身。拦截 BT 下载是例外,它添加在你的规则之前。预设所需的规则集会加入选择中。
  • DNS 预设会把 DNS 配置替换为通过 DNS-over-TLS 使用的 Cloudflare、Google、Quad9 或 AdGuard,或节点的系统解析器。

预设所需的列表 ​

预设的效果取决于它的列表。如果面板没有预设所用某个列表的副本,面板会去掉该列表以及所有匹配它的规则,预设就会悄无声息地不起作用。因此对话框会先做检查:

  • 你还没有的列表会被列出名称,添加列表并应用会先下载它;
  • 面板中列出但没有副本的列表会被列出名称,你需要先在规则集页面修复它;
  • 预设目录没有提供来源的列表会被直接拒绝。

拦截 BT 下载 ​

拦截 BT 下载会添加一条 sniff 规则,并把看起来像 BitTorrent 的流量发往名为 block-torrent 的拦截出站。节点会统计它拦截的内容:数字显示在节点所在行和面板的指标中;超过你设定的速率时,会触发 node.rejections_high 事件。

它只是尽力而为。嗅探能识别 BitTorrent 握手,而对握手加密的客户端(大多数客户端默认如此)会漏过。请把计数看作被拦下的部分,而不是全部。

国家预设 ​

伊朗 + 拦截广告、中国 + 拦截广告和俄罗斯 + 拦截广告会让该国的域名和地址直接从节点出网,使国内流量不再继续转发,同时拒绝广告列表。在中继上,这能让本地流量不进入隧道。结果的完整程度取决于国家列表;如果需要更全的覆盖,请把预设目录指向更完整的列表(见下文)。

你自己的预设 ​

预设面板(规则集、入站、路由和 DNS)的内容来自面板提供的预设目录。你可以向其中添加条目或替换条目,无需等待新版本:

  1. 把一个 .json 文件放入预设目录:标准安装为 /var/opt/nexora/presets/,或在设置 → 常规 → 预设目录 → 目录路径中设置的目录。
  2. 重新打开预设对话框。无需重启。

该目录中的每个 *.json 文件都按文件名顺序合并到内置目录上。键或标签为新值的条目会被添加;键或标签已存在的条目会替换内置条目。无法解析的文件会被跳过并记录在面板日志中,设置页面会显示当前生效的文件。

例如,下面这个文件从你控制的镜像向规则集面板添加一个国家:

json
{
  "version": 1,
  "ruleSets": {
    "countries": [
      {
        "key": "tr",
        "label": "Turkey",
        "items": [
          { "tag": "geoip-tr", "url": "https://mirror.example.com/geoip-tr.srs", "label": "IP ranges" }
        ]
      }
    ]
  }
}

国家条目会整体替换具有相同 key 的内置条目,因此如果只想把某个内置国家的一个列表改指向别处,也要在你的条目中重复该国家的其他列表。规则集中的服务按 tag 合并;入站、路由和 DNS 预设按 key 合并。

节点自己的路由 ​

节点可以用自己的路由替换模板的路由。从节点所在行打开其配置面板,填写路由(本节点覆盖)。它只在该节点上优先于模板,包括默认出站。把它用于必须以不同方式路由的那一台服务器,其余一切仍放在模板中。

检查路由 ​

节点行或用户行菜单中的路由测试会针对你描述的连接(目标、端口,以及可选的嗅探协议和域名)逐条走一遍节点自己的规则,并给出接收该连接的规则和出站。测试并连接还会从节点沿这条路径真正建立一次连接。见 节点。

文字与图片采用 CC BY 4.0 许可。