Clash 与网络代理详解

想彻底搞懂“翻墙”背后的技术原理?从 VPN 到 TUN 模式,带你硬核拆解网络数据的“隐形隧道”。

📚 基本概念速读

名称 定义 省流
VPN Virtual Private Network,虚拟专用网络,在公网上建立加密通道。 秘密隧道
Proxy 代理服务器,充当客户端和服务器之间的“中介”。 传话筒
Clash 一个基于 Go 语言开发的多平台代理客户端核心。 智能调度员
Rule 根据域名、IP、地理位置决定流量走代理还是直连的规则。 分流路牌
TUN 操作系统层的虚拟网络接口,用于接管系统级流量。 虚拟网卡
Mixin 混合配置,在不修改订阅文件的前提下,注入自定义配置。 补丁包

VPN vs 代理 (Proxy) 简要对比:

特性 VPN 代理 (Proxy)
工作层级 操作系统层 (OSI L3 网络层) 应用程序层 (OSI L4/L7 传输/应用层)
接管范围 全局接管(通常),所有软件流量都走隧道 仅接管支持代理设置的软件 (如浏览器)
加密程度 全程加密,强调安全性 视协议而定 (HTTP不加密, HTTPS/Socks5加密)
灵活性 较差,通常“全走”或“全不走” 极高,可按域名/进程分流
典型协议 WireGuard, OpenVPN, IPSec HTTP, Socks5, Shadowsocks, VMess

⚡ 代理模式:流量的指挥棒

Clash 最核心的功能就是决定“这个请求该走哪条路”。

1. Global 全局模式

  • 原理:所有流量一视同仁,强制通过代理服务器转发。
  • 场景:访问完全被封锁的网络环境,或者需要隐藏真实 IP 的所有活动。
  • 缺点:访问国内网站(如 B站、淘宝)会绕路国外,速度慢且浪费流量。

2. Rule 规则模式 (最常用)

  • 原理:根据预设的规则列表(Rule List)智能判断。
  • 流程
    1. 拦截请求。
    2. 匹配规则(是 Google? 走 US 节点;是 Baidu? 走直连 Direct)。
    3. 未匹配到的请求走“漏网之鱼”策略(Final)。
  • 优势:国内直连快,国外代理通,自动分流。

3. Direct 直连模式

  • 原理:所有流量都不走代理,直接发送。
  • 场景:暂时不需要代理,或者代理服务器挂了的时候。

4. Script 脚本模式

  • 原理:使用 JavaScript 编写复杂的路由逻辑。
  • 场景:极客玩家,需要根据特定时间段、网络延迟动态调整路由。

🧠 进阶黑科技:TUN 模式

很多小白用户会发现:“为什么我开了 Clash,浏览器能上 Google,但终端 (Terminal) 或 游戏 还是连不上?”

这是因为传统的 Clash 工作在 应用层 (Layer 7),它会在本地开启 HTTP/Socks5 端口(如 7890)。只有主动去连接这个端口的软件(如设置了系统代理的浏览器)才会被代理。而游戏、命令行工具默认是不走系统代理配置的。

TUN (Network Tunnel) 模式 就是为了解决这个问题。

🛡️ TUN 的工作原理



graph TD;
    A["应用程序 (App/Game)"] -- "1. 发送数据包" --> B["操作系统网络栈"];
    B -- "2. 路由表指向虚拟网卡" --> C["TUN 虚拟网卡 (utun/tun0)"];
    C -- "3. 拦截数据 (Layer 3 IP包)" --> D["Clash 内核"];
    D -- "4. 重新封装/加密" --> E["物理网卡 (Wi-Fi/Ethernet)"];
    E -- "5. 发送至公网" --> F["代理服务器"];

  1. 创建虚拟网卡:Clash 在系统中创建一个名为 utuntun0 的虚拟网卡。
  2. 修改路由表:修改系统的默认网关,将所有流量“骗”进这个虚拟网卡。
  3. 三层接管:因为 TUN 工作在网络层 (Layer 3),它处理的是 IP 数据包。这意味着所有软件(无论是否支持代理)发出的流量都会经过它。
  4. 用户态处理:Clash 读取 TUN 设备的数据,进行拆包、分析目标地址、匹配规则,然后转发。

总结:开启 TUN 模式后,Clash 就变成了一个“类 VPN”,能够接管系统级的所有流量,实现“真·全局接管”。

TUN 模式 vs 规则模式:它们如何协同工作?

这是一个核心问题:TUN 模式负责“拦截”,而规则模式负责“分流”

  • TUN 模式:作为流量入口,它只决定 Clash 能处理哪些应用的流量。开启后,它会接管所有应用的数据包,然后交给 Clash 核心。
  • 规则/全局/直连模式:作为调度中心,它决定被拦截进来的流量的最终去向

结论:开启 TUN 模式并选择规则模式,意味着 “拦截所有应用的流量,然后根据规则智能判断走代理还是直连”,并不会变成全局代理。

🛠️ Service Mode 服务模式

在 Windows/macOS 上开启 TUN 模式通常需要管理员权限,因为涉及到创建网卡和修改路由表。

为了避免每次启动都要输密码,或者为了更稳定的后台运行,Clash 引入了 Service Mode

  • 守护进程:Service Mode 会安装一个后台系统服务(Daemon)。
  • 权限隔离:这个服务以高权限(System/Root)运行,专门负责处理底层的网络操作(DNS 劫持、TUN 路由)。
  • UI 分离:Clash 的图形界面(UI)只需要以普通权限运行,通过 IPC 接口指挥后台服务干活。
  • 主要作用
    1. 无感启动 TUN:不需要每次弹窗提权。
    2. 系统级抗杀:UI 关闭了,后台代理服务依然可以在线。
    3. 重启自愈:系统重启后服务自动拉起。

🧱 配置文件结构与 Mixin

Clash 的配置文件(通常是 .yaml)是它的灵魂。

核心结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
port: 7890               # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
mode: rule # 默认模式
log-level: info # 日志等级

# 1. 代理节点池 (Proxies)
proxies:
- { name: "HK Server", type: ss, server: 1.2.3.4, ... }

# 2. 策略组 (Proxy Groups)
proxy-groups:
- name: "自动选择"
type: url-test # 自动测速选择最快的
proxies:
- "HK Server"
- "US Server"

# 3. 规则 (Rules) - 从上到下匹配,命中即止
rules:
- DOMAIN-SUFFIX,google.com,Proxy # Google 域名走代理
- DOMAIN-SUFFIX,bilibili.com,Direct # B站直连
- GEOIP,CN,Direct # 中国 IP 直连
- MATCH,Proxy # 剩下的全走代理

🌪️ Mixin (混合配置)

很多时候我们使用机场提供的订阅链接,这个 URL 下载下来的配置文件是只读的,每次更新都会覆盖。如果你想永久修改某些配置(比如开启 TUN,或者添加自定义规则),直接改下载的文件是没用的。

Mixin (混合/覆写) 机制应运而生:

  • 原理:Clash 启动时,会先读取订阅的配置文件,然后读取本地的 Mixin 配置,将两者合并
  • 优先级:Mixin 配置 > 订阅配置。
  • 用途
    • 强制开启 TUN 模式。
    • 注入自定义的 DNS 服务器(防止 DNS 污染)。
    • 添加个人的局域网 IP 直连规则。

Mixin 示例 (开启 TUN 和 DNS劫持):

1
2
3
4
5
6
7
8
9
10
11
12
13
mixin: # 注意:不同客户端写法可能不同,原理一致
dns:
enable: true
listen: :53
enhanced-mode: fake-ip # 配合 TUN 使用的核心模式
nameserver:
- 8.8.8.8
- 114.114.114.114
tun:
enable: true
stack: system # 网络栈类型
dns-hijack:
- any:53 # 劫持所有 DNS 查询

Fake-IP 模式是什么? 当开启 TUN 模式时,为了避免频繁的 DNS 解析请求导致延迟,Clash 会立即返回一个“假 IP”(Fake-IP,如 198.18.0.1)给浏览器。 浏览器以为拿到了真实 IP,向这个假 IP 发送请求。Clash 拦截到发往假 IP 的包,根据映射表找到原始域名,再在远端代理服务器进行真正的解析和连接。这能极大地提高响应速度。

⚠️ 常见误区纠正

  1. “开了全局模式就是最安全的”
    • 。全局模式只是将所有流量转发给代理服务器。如果你的代理协议(如 HTTP)是明文的,或者机场本身记录日志,你的隐私依然不安全。
  2. “Ping 值低网速就快”
    • 不一定。Clash 面板上的 Ping 通常是 TCP Handshake 时间,只代表你到代理服务器的延迟。实际网速还取决于代理服务器的带宽拥塞程度和线路质量(CN2/GIA 等)。
  3. “TUN 模式会影响打游戏吗?”
    • 正面影响。大多数外服游戏基于 UDP 协议,普通代理模式无法代理 UDP,必须开启 TUN 模式才能让游戏流量走代理加速。
  4. Clash 是 VPN 吗?
    • 技术实现上看:Clash 只是一个代理客户端。
    • 用户体验上看:开启 TUN 模式后的 Clash,表现得和 VPN 几乎一致(接管全系统流量)。