2. 核心概念与数据流#
本章解释一条连接在 Link1 内部如何流动。理解这条路径后,再看配置字段会更容易。
总体数据流#
客户端连接
-> 入站监听器
-> 认证与局域网访问控制
-> 目标地址识别
-> DNS / Fake-IP / Hosts / Sniffer
-> 规则引擎
-> 策略组选择
-> 出站协议拨号
-> 流量转发
-> Link1 App 展示状态
每一步都能被配置影响。App 中看到的连接、日志、策略组状态和 HTTP 捕获,都是这条链路上不同阶段产生的结果。
1. 客户端连接进入 Link1#
入口可能是:
- 浏览器通过 HTTP proxy 连到
mixed-port。
- App 通过 SOCKS5 连到
socks-port。
- 路由器把 TCP 流量转到
redir-port。
- Linux TPROXY 把 TCP/UDP 流量转到
tproxy-port。
- 系统把所有 IP 包交给 TUN 虚拟网卡。
- 外部客户端用 VLESS/Hysteria2 连到
listeners。
入口会产生元数据:入站类型、入站名称、入站端口、源 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时,显式代理入口默认只给本机用。
bind-address='*'或0.0.0.0会让端口监听在所有网卡上。
lan-allowed-ips/lan-disallowed-ips用源 IP 进一步限制哪些局域网设备能用。
authentication可要求 HTTP/SOCKS 客户端提供用户名密码。
新手建议:先保持 allow-lan=false,本机验证通过后再开放局域网;开放局域网时要限制网段或使用用户名密码。
3. 目标地址识别#
不同入口拿到的目标信息不同:
| 入口 | 通常能直接拿到什么 | 风险 |
|---|---|---|
| HTTP proxy | 完整 URL 或 CONNECT host:port | HTTPS 只看到 CONNECT 目标,不看到路径 |
| SOCKS5 | 域名或 IP + port | 取决于客户端是否把域名交给 SOCKS |
| REDIRECT | 原始目标 IP/port | 通常没有域名 |
| TPROXY | 原始目标 IP/port,UDP 也可保留 | 仍可能缺域名 |
| TUN | IP 包目标地址 | 需要 DNS/Fake-IP/Sniffer 还原域名 |
| VLESS/Hysteria2 listener | 协议内目标 | 取决于客户端发送内容 |
因此透明代理和 TUN 场景中,DNS 配置非常关键。没有域名时,DOMAIN-SUFFIX、GEOSITE 等规则可能不会按预期命中。
4. DNS、Fake-IP 与 Sniffer#
Link1 用以下信息恢复“用户原本想访问什么”:
hosts:静态域名映射。
- Link1 DNS resolver:按
dns.nameserver等字段解析。
- Fake-IP:给域名分配一个虚拟 IP,后续连接到这个虚拟 IP 时可反查域名。
- Sniffer:从 HTTP Host、TLS SNI、QUIC SNI 中嗅探域名。
- 透明代理原始目标:拿不到域名时使用原始 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]
实际影响:
- Fake-IP 能提高域名规则命中率。
dns-hijack能把设备发出的 DNS 查询接到 Link1。
- Sniffer 能补救没有经过 Link1 DNS 的连接。
- 过度依赖 Sniffer 会增加首包识别开销,也不是所有协议都能嗅探。
5. 规则引擎#
规则按顺序执行,第一条命中即停止。
rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY
实际影响:
- 规则越靠前优先级越高。
MATCH应放最后兜底。
no-resolve会阻止某些 IP 规则触发 DNS 解析。
RULE-SET可引用大量规则,适合规则订阅。
AND/OR/NOT适合复杂条件。
SUB-RULE适合把一段规则拆出去复用。
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. 出站协议拨号#
出站协议真正建立到远端的连接。例如:
direct直接连目标。
http/socks5连上游代理。
hysteria2用 QUIC 连 Hysteria2 服务器。
wireguard建立 L3 隧道。
openvpn连接 OpenVPN remote。
warpprovider 物化出 WireGuard/MASQUE 候选。
协议字段会影响:
- 认证是否成功。
- TLS 握手行为。
- UDP 是否可用。
- 是否绑定网卡或 routing mark。
- 是否通过另一个
dialer-proxy前置出站。
- 是否启用 TFO/MPTCP/SMUX/UDP-over-TCP 等扩展。
出站错误通常会在日志里带出节点名称、协议类型、远端地址或握手阶段。看到错误时先确认是“节点连不上”,还是“规则没有把流量导到这个节点”。
8. 状态如何回到 Link1 App#
连接开始后,Link1 App 可以看到:
- 当前连接列表:源地址、目标地址、网络类型、入站、出站、规则命中。
- 上下行流量:总流量、连接流量、实时速率。
- 策略组状态:当前选择、成员延迟、健康检查历史。
- Provider 状态:订阅刷新时间、节点数量、过滤结果、健康检查结果。
- DNS 结果:域名解析、Fake-IP 映射、上游选择。
- 日志:启动、配置编译、DNS、规则、协议握手、拨号失败。
- HTTP Engine 捕获:请求/响应摘要、命中规则、body 预览或落盘位置。
这些信息用于排障,但它们不是新的数据路径。真正的数据仍然按“入站 → 规则 → 出站”流动。
四种常见场景的数据流#
场景 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 作为中转或入口。缺点:要处理服务端证书、用户认证、端口暴露和安全边界。
数据流排查口诀#
遇到“为什么没走预期节点”,按这个顺序排查:
- 流量有没有进入 Link1?看客户端代理、TUN 状态、路由器转发或 listener。
- Link1 知不知道目标域名?看 DNS/Fake-IP/Sniffer 和连接详情。
- 规则有没有按预期命中?用 App 的规则测试,或在连接详情里看命中规则。
- action 对应的组或节点是否存在?看策略组和 Provider 页面。
- 策略组当前选了谁?看 App 中该组的当前选择。
- 节点是否健康?看延迟测试、健康检查和日志。
- 出站协议字段是否正确?看启动错误、握手错误和协议配置。