Network


Mar. 8, 2025

Clash TUN


Clash Premium 的 TUN 模式 本质上是一种实现 透明代理(Transparent Proxy)的技术手段 透明代理的核心特点是:无需客户端主动配置代理,流量被“透明”地拦截并转发到代理服务器。例如:

  • 用户访问 google.com,流量被系统层自动劫持,通过代理服务器转发,而用户无需在浏览器中设置代理。
  • 应用(如命令行工具、游戏客户端)完全无感知,代理过程对用户和应用程序是“透明”的。

工作原理

(1)流量劫持

  • 虚拟网卡(TUN 设备):在系统中创建一个虚拟网络接口(TUN 设备),所有系统流量默认经过此设备。
  • IP 层拦截:在 OSI 模型的 网络层(第3层) 直接捕获原始流量(包括 TCP、UDP、ICMP),无需依赖应用层协议(如 HTTP/Socks5)。

(2)代理规则决策

  • Clash 内核根据配置的规则(如域名、IP、GEOIP)决定流量走向:
    • 代理:将流量转发到指定的代理服务器。
    • 直连:直接发送到目标服务器。
    • 拒绝:直接丢弃(如广告拦截)。

(3)DNS 透明代理

  • DNS 劫持:强制将系统的 DNS 请求转发到 Clash 内置的 DNS 服务器,防止 DNS 污染。
  • 分域名解析:国内域名直连解析,国外域名通过代理服务器解

TUN 模式的优势

  • 协议全覆盖:支持 TCP、UDP、ICMP,适合游戏、视频通话等场景。
  • 无需应用适配:所有流量(包括系统服务、命令行工具)默认被劫持。
  • 绕过防火墙检测:流量看起来像普通网络请求,而非代理协议(如 Socks5)。

流量处理流程

  1. DNS 请求
    • 系统发起 DNS 查询(如访问 google.com)。
    • dns-hijack 规则拦截该请求,转发到 Clash 的 listen: 0.0.0.0:53
    • Clash 根据域名判断:
      • 若为国内域名 → 通过 nameserver114.114.114.114)直连解析。
      • 若为境外域名 → 通过 fallback8.8.8.8)代理解析。
    • 返回 Fake-IP(如 198.18.1.1)给应用。
  2. 应用发起连接
    • 应用尝试连接 Fake-IP(198.18.1.1)。
    • auto-route 确保流量经过 TUN 设备,被 Clash 捕获。
    • Clash 根据域名关联的规则(如 google.com 走代理)决定是否转发到代理服务器