2. 核心概念与数据流#


本章解释一条连接在 Link1 内部如何流动。理解这条路径后,再看配置字段会更容易。

总体数据流#

客户端连接
  -> 入站监听器
  -> 认证与局域网访问控制
  -> 目标地址识别
  -> DNS / Fake-IP / Hosts / Sniffer
  -> 规则引擎
  -> 策略组选择
  -> 出站协议拨号
  -> 流量转发
  -> Link1 App 展示状态

每一步都能被配置影响。App 中看到的连接、日志、策略组状态和 HTTP 捕获,都是这条链路上不同阶段产生的结果。

1. 客户端连接进入 Link1#

入口可能是:

入口会产生元数据:入站类型、入站名称、入站端口、源 IP、源端口、用户、网络类型等。这些元数据可以被规则使用,例如:

rules:
  - IN-TYPE,tun,PROXY
  - SRC-IP-CIDR,192.168.9.0/24,DIRECT

实际影响:同一个目标,在不同入口进入时可以命中不同规则。例如你可以让浏览器代理走 PROXY,让路由器透明接管的内网设备直连。

2. 访问控制与认证#

如果开放给局域网,需要理解四类字段:

allow-lan: true
bind-address: '*'
lan-allowed-ips:
  - 192.168.0.0/16
lan-disallowed-ips:
  - 192.168.9.99/32
authentication:
  - alice:password

实际影响:

新手建议:先保持 allow-lan=false,本机验证通过后再开放局域网;开放局域网时要限制网段或使用用户名密码。

3. 目标地址识别#

不同入口拿到的目标信息不同:

入口通常能直接拿到什么风险
HTTP proxy完整 URL 或 CONNECT host:portHTTPS 只看到 CONNECT 目标,不看到路径
SOCKS5域名或 IP + port取决于客户端是否把域名交给 SOCKS
REDIRECT原始目标 IP/port通常没有域名
TPROXY原始目标 IP/port,UDP 也可保留仍可能缺域名
TUNIP 包目标地址需要 DNS/Fake-IP/Sniffer 还原域名
VLESS/Hysteria2 listener协议内目标取决于客户端发送内容

因此透明代理和 TUN 场景中,DNS 配置非常关键。没有域名时,DOMAIN-SUFFIXGEOSITE 等规则可能不会按预期命中。

4. DNS、Fake-IP 与 Sniffer#

Link1 用以下信息恢复“用户原本想访问什么”:

  1. hosts:静态域名映射。
  1. Link1 DNS resolver:按 dns.nameserver 等字段解析。
  1. Fake-IP:给域名分配一个虚拟 IP,后续连接到这个虚拟 IP 时可反查域名。
  1. Sniffer:从 HTTP Host、TLS SNI、QUIC SNI 中嗅探域名。
  1. 透明代理原始目标:拿不到域名时使用原始 IP。

推荐透明代理/TUN 配置思路:

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16

tun:
  enable: true
  auto-route: true
  dns-hijack:
    - any:53

sniffer:
  enable: true
  sniff:
    HTTP:
      ports: [80, 8080]
    TLS:
      ports: [443]
    QUIC:
      ports: [443]

实际影响:

5. 规则引擎#

规则按顺序执行,第一条命中即停止。

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

实际影响:

App 中的规则测试功能本质上是让你构造一个“虚拟连接”,然后看它会命中哪条规则。它不会真的访问目标网站,适合排查规则顺序和元数据是否正确。

6. 策略组选择#

规则 action 可以指向具体节点,也可以指向策略组:

proxy-groups:
  - name: AUTO
    type: url-test
    proxies: [node-a, node-b]
    url: http://www.gstatic.com/generate_204
    interval: 300

rules:
  - MATCH,AUTO

策略组实际影响:

类型选择逻辑适合场景
select使用用户当前选择手动切换节点、临时指定出口
url-test选择延迟最低的可用成员多个同类节点自动择优
smart综合探测与质量反馈选择希望自动避开劣化节点
fallback按顺序选择第一个可用成员主备线路
load-balance在可用成员之间分摊连接多出口并发使用
relay多跳串联,按成员顺序逐跳转发特殊链路串联

Link1 App 会展示策略组当前选择、可选成员、延迟和健康状态。对 select 组,用户选择通常会被持久化;对自动组,选择结果会随探测结果变化。

7. 出站协议拨号#

出站协议真正建立到远端的连接。例如:

协议字段会影响:

出站错误通常会在日志里带出节点名称、协议类型、远端地址或握手阶段。看到错误时先确认是“节点连不上”,还是“规则没有把流量导到这个节点”。

8. 状态如何回到 Link1 App#

连接开始后,Link1 App 可以看到:

这些信息用于排障,但它们不是新的数据路径。真正的数据仍然按“入站 → 规则 → 出站”流动。

四种常见场景的数据流#

场景 A:电脑手动设置代理#

浏览器
  -> 127.0.0.1:7890 mixed-port
  -> Link1 直接拿到目标域名
  -> rules
  -> PROXY / DIRECT

优点:最容易验证。缺点:只接管配置了代理的应用。

场景 B:TUN 全局接管#

系统路由
  -> TUN 虚拟网卡
  -> Link1 根据 DNS/Fake-IP/Sniffer 还原域名
  -> rules
  -> 出站

优点:应用无需单独设置代理。缺点:DNS 配置、路由排除和系统权限更重要。

场景 C:路由器透明代理#

局域网设备
  -> 默认网关
  -> 路由器防火墙/TUN
  -> Link1
  -> rules
  -> 出站

优点:局域网设备无需安装 App。缺点:如果 DNS 没被接管,域名规则可能失效。

场景 D:Link1 作为协议服务端#

远端客户端
  -> VLESS/Hysteria2 listener
  -> Link1 读取协议内目标
  -> rules
  -> 出站

优点:可以把 Link1 作为中转或入口。缺点:要处理服务端证书、用户认证、端口暴露和安全边界。

数据流排查口诀#

遇到“为什么没走预期节点”,按这个顺序排查:

  1. 流量有没有进入 Link1?看客户端代理、TUN 状态、路由器转发或 listener。
  1. Link1 知不知道目标域名?看 DNS/Fake-IP/Sniffer 和连接详情。
  1. 规则有没有按预期命中?用 App 的规则测试,或在连接详情里看命中规则。
  1. action 对应的组或节点是否存在?看策略组和 Provider 页面。
  1. 策略组当前选了谁?看 App 中该组的当前选择。
  1. 节点是否健康?看延迟测试、健康检查和日志。
  1. 出站协议字段是否正确?看启动错误、握手错误和协议配置。