7. 路由、规则与策略#


路由系统决定“一条连接最终走哪个出口”。Link1 的规则按顺序执行,第一条命中即返回结果。

最小规则#

rules:
  - MATCH,DIRECT

含义:所有连接都直连。

常见代理配置:

rules:
  - DOMAIN-SUFFIX,google.com,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

含义:

  1. *.google.comPROXY
  1. 目标 IP 属于 CN 走 DIRECT
  1. 其他所有连接走 PROXY

规则格式#

普通规则:

TYPE,ARGUMENT,ACTION[,OPTIONS]

MATCH

MATCH,ACTION

逻辑规则:

AND,((规则1),(规则2)),ACTION
OR,((规则1),(规则2)),ACTION
NOT,((规则1)),ACTION

子规则跳转:

SUB-RULE,(条件表达式),子规则名称

逗号与引号#

规则行使用逗号分隔字段。通常节点名、策略组名、RULE-SET 名和 SUB-RULE 名不应包含逗号;如果确实包含逗号,可以用双引号包裹对应字段:

rules:
  - DOMAIN-SUFFIX,corp.example,"Corp, VPN"
  - RULE-SET,"$Corp, VPN","Corp, VPN"
  - MATCH,"Fallback, Group"

双引号内可以用反斜杠转义 "\。单引号也可用于包裹字段;单引号内用两个单引号表示一个字面量单引号。引号只影响逗号分隔和首尾 quote 去除,不改变字段语义;action 仍必须能匹配到实际节点名或策略组名。

Action 是什么#

Action 是规则命中后要交给谁处理,可以是:

如果 action 不存在,配置编译会失败。

规则类型全集#

域名规则#

类型参数含义示例
DOMAIN域名精确匹配域名DOMAIN,example.com,DIRECT
DOMAIN-SUFFIX后缀匹配域名后缀DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-KEYWORD关键字域名包含关键字DOMAIN-KEYWORD,google,PROXY
DOMAIN-WILDCARD通配符* 通配匹配DOMAIN-WILDCARD,*.example.com,PROXY
DOMAIN-REGEX正则按正则匹配域名DOMAIN-REGEX,^api\..*,PROXY
GEOSITE分类按 GeoSite 分类匹配GEOSITE,cn,DIRECT

实际影响:这些规则需要 Link1 知道域名。显式代理通常能拿到域名;TUN/透明代理依赖 DNS/Fake-IP/Sniffer。

IP、GeoIP 与 ASN 规则#

类型参数含义示例
IP-CIDRCIDR目标 IP 属于网段IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
IP-CIDR6IPv6 CIDR目标 IPv6 属于网段IP-CIDR6,fc00::/7,DIRECT,no-resolve
IP-SUFFIXIP 后缀目标 IP 后缀匹配IP-SUFFIX,1.2,DIRECT
IP-ASNASN目标 IP ASN 匹配IP-ASN,13335,PROXY
GEOIP国家/区域代码目标 IP GeoIP 匹配GEOIP,CN,DIRECT
SRC-GEOIP国家/区域代码源 IP GeoIP 匹配SRC-GEOIP,CN,DIRECT
SRC-IP-ASNASN源 IP ASN 匹配SRC-IP-ASN,45102,DIRECT
SRC-IP-CIDRCIDR源 IP 属于网段SRC-IP-CIDR,192.168.9.0/24,DIRECT
SRC-IP-SUFFIXIP 后缀源 IP 后缀匹配SRC-IP-SUFFIX,9.10,DIRECT

no-resolve 影响:

端口、入站与网络规则#

类型参数含义示例
DST-PORT端口/范围目标端口匹配DST-PORT,443,PROXY
SRC-PORT端口/范围源端口匹配SRC-PORT,50000-60000,DIRECT
IN-PORT端口/范围入站端口匹配IN-PORT,7890,PROXY
IN-TYPE类型,可用 / 分隔入站类型匹配IN-TYPE,tun/HTTP,PROXY
IN-USER用户,可用 / 分隔入站认证用户匹配IN-USER,alice,PROXY
IN-NAME入站名称,可用 / 分隔listener/TUN 等入口名匹配IN-NAME,hy2-in,PROXY
NETWORKtcpudp网络类型匹配NETWORK,udp,PROXY
DSCP0-63 或范围DSCP 值匹配DSCP,46,PROXY

端口范围常见写法:8044310000-20000。TUN 选择器里端口范围用 start:end,规则里按规则解析器支持的范围格式。

进程与 UID 规则#

类型参数含义示例
PROCESS-PATH路径进程路径精确匹配PROCESS-PATH,/usr/bin/curl,DIRECT
PROCESS-PATH-WILDCARD通配符进程路径通配匹配PROCESS-PATH-WILDCARD,*/Chrome,PROXY
PROCESS-PATH-REGEX正则进程路径正则匹配PROCESS-PATH-REGEX,.*/Chrome.*,PROXY
PROCESS-NAME名称进程名精确匹配PROCESS-NAME,curl,DIRECT
PROCESS-NAME-WILDCARD通配符进程名通配匹配PROCESS-NAME-WILDCARD,Google*,PROXY
PROCESS-NAME-REGEX正则进程名正则匹配PROCESS-NAME-REGEX,.*Chrome.*,PROXY
UIDUID 或范围Linux/Android UID 匹配UID,1000-1002,PROXY

实际影响:

规则集与逻辑规则#

类型参数含义示例
RULE-SET规则集名引用 rule-providersrule-setsRULE-SET,private,DIRECT
AND规则表达式所有条件都满足AND,((DOMAIN-SUFFIX,example.com),(DST-PORT,443)),PROXY
OR规则表达式任意条件满足OR,((DOMAIN,a.com),(DOMAIN,b.com)),PROXY
NOT规则表达式条件不满足NOT,((GEOIP,CN)),PROXY
SUB-RULE条件 + 子规则名条件满足后跳到子规则SUB-RULE,(DST-PORT,443),tls-flow
MATCH兜底MATCH,DIRECT

逻辑规则中不能使用 MATCHSUB-RULE 作为内部 matcher。

子规则#

子规则让你把一段规则流程拆出来:

sub-rules:
  tls-flow:
    - DOMAIN-SUFFIX,openai.com,AI
    - DOMAIN-SUFFIX,github.com,PROXY
    - MATCH,DIRECT

rules:
  - SUB-RULE,(DST-PORT,443),tls-flow
  - MATCH,DIRECT

实际影响:

rule-providers#

规则 provider 从 HTTP、文件或内联 payload 加载大量规则。

rule-providers:
  private:
    type: http
    behavior: domain
    format: text
    url: https://example.com/private.txt
    path: ./rules/private.txt
    interval: 86400
    proxy: DIRECT
    size-limit: 1048576

rules:
  - RULE-SET,private,DIRECT

字段影响:

字段含义实际影响
typehttpfileinline决定规则来源
behaviordomainipcidrclassical决定 payload 如何解释和优化
formatyamltextmrs决定文件格式
urlHTTP URLtype=http 使用
path本地路径/缓存路径http 缓存或 file 读取
interval刷新间隔,秒控制自动刷新频率
proxy下载 provider 使用的出口避免规则订阅被网络环境阻断
headerHTTP 请求头用于认证或 User-Agent
payload内联规则type=inline 使用
size-limit下载大小限制防止异常大响应占内存/磁盘

behavior 选择#

behaviorpayload 内容适合场景
domain域名、后缀、关键字等域名分流
ipcidrCIDR 列表IP 分流、TUN 路由集
classical完整规则语法复用复杂规则列表

rule-sets#

rule-sets 是已解析/内联规则集配置,通常用于运行时或高级配置。用户一般优先使用 rule-providers

规则顺序建议#

推荐从具体到通用:

rules:
  # 1. 本机、局域网、管理面
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - DOMAIN-SUFFIX,lan,DIRECT

  # 2. 明确业务域名
  - DOMAIN-SUFFIX,openai.com,AI
  - DOMAIN-SUFFIX,github.com,PROXY

  # 3. 大规则集
  - RULE-SET,reject,REJECT
  - RULE-SET,private,DIRECT
  - RULE-SET,china,DIRECT
  - RULE-SET,global,PROXY

  # 4. IP 地理规则
  - GEOIP,CN,DIRECT

  # 5. 最终兜底
  - MATCH,PROXY

用 Link1 App 测试规则#

Link1 App 的规则测试功能可以构造一条“虚拟连接”,不真正访问网络,只检查规则会怎样匹配。常用输入包括:

输入示例会影响哪些规则
目标域名chat.example.comDOMAINDOMAIN-SUFFIXGEOSITE
目标 IP1.1.1.1IP-CIDRGEOIPIP-ASN
端口443DST-PORT
网络类型tcp / udpNETWORK
入站类型mixed / tunIN-TYPEIN-NAMEIN-PORT
源 IP192.168.9.10SRC-IP-CIDRSRC-GEOIP

测试结果应重点看三项:

如果规则测试正确,但真实连接不正确,说明真实连接的元数据和测试输入不同。最常见原因是透明代理/TUN 下真实连接只有 IP,没有域名。