Skip to content

Clash原理略解

字数
1655 字
阅读时间
7 分钟

Clash 概览

  • Clash 不是协议,而是集成多种科学上网协议(Shadowsocks、SSR、VMess、VLESS、Trojan 等)的代理工具。
  • 用户可以在配置文件中定义 proxy-groups,并结合 fallback(优先级回退)、url-test(节点测速)或 select(手动选择)等策略,对多个上游代理节点进行分组,再根据节点可用性或用户需求自动或手动切换,从而实现智能灵活的流量分流。

本地代理端口

Clash 默认提供两种应用层代理服务:

  1. HTTP(S) 代理(默认端口 7890)
    • 接收 HTTP 请求和 HTTPS 的 CONNECT 隧道。
  2. SOCKS5 代理(默认端口 7891)
    • 支持 TCP 转发,若开启可选的 UDP 转发也可代理 DNS、QUIC、游戏等 UDP 流量。

注意:部分 Clash 分支可能还提供额外端口(如 Mixed Port、DNS 代理端口等),以不同方式兼容更多协议。

两种流量捕获模式

1. 普通模式(Application Proxy)

  • 不需 root 权限,只需在应用或系统环境变量中将代理地址设置为 127.0.0.1:7890/7891

  • 拦截点位于 回环接口;只有那些在应用或系统中明确定义代理地址为 127.0.0.1:7890127.0.0.1:7891 的请求,才会被内核回环送入 Clash 处理。未设置代理的流量将直接走默认网络,不会经过 Clash。

  • 应用层会先剥离 HTTP/SOCKS5 头部,解析出目标地址、端口,然后按规则分流到对应上游节点。

  • 优点:配置简单,跨平台一致,无需修改系统路由;稳定性高。

  • 缺点:需要手动配置每个应用;UDP 支持有限,只有 SOCKS5 UDP 转发。

  • 流量方向示意:

    应用程序
       ↓ (发起 HTTP/SOCKS5 请求)
    回环接口 (127.0.0.1:7890/7891)
       ↓ (在 **内核态**,回环网络栈接收并转发到该端口)
    Clash 在应用层(用户态)
       ↓ (剥离协议头,分流 & 加密封装)
    上游代理节点
       ↓ (解密 & 发起真实请求)
    目标服务器

2. TUN 模式(Transparent Proxy / VPN 模式)

  • 需 root/管理员权限,在操作系统中创建一个虚拟网卡(如 tun0)。

  • 系统路由表将匹配规则的 IP 包(可按地理/端口)导入该虚拟网卡,Clash 从中读取原始 IP 包。

  • 按传输层剥离 TCP/UDP 头部,再解析应用层协议,完成分流与加密。

  • 优点:全局透明代理,原生支持 TCP&UDP,适合游戏、视频、P2P 等场景,无需逐应用配置。

  • 缺点:配置复杂,权限要求高,依赖系统 TUN 驱动,跨平台兼容性和本高。

  • 流量方向示意:

    应用程序 / 系统发出的 IP 数据包
       ↓ (路由表定向到 tun0)
    TUN 虚拟网卡 (tun0)(在内核态管理)
       ↓ (Clash 读取原始 IP 包)
    Clash 在应用层处理(用户态,即非内核态进行的应用层协议解析)
       ↓ (解析 TCP/UDP 头部,剥离,分流 & 加密封装)
    上游代理节点
       ↓ (解密 & 发起真实请求)
    目标服务器

默认不开启 TUN:保持普通模式的易用性和稳定性,高级用户可根据需要手动启用。

远程部署TUN和普通模式没区别

  • 如果 Clash 部署在非本机(远程服务器或软路由以外的机器),普通模式与 TUN 模式在那台服务器上都无法拦截其他客户端的原始流量
    • 客户端到远程的流量已被封装为 HTTP/SOCKS5 代理请求,服务器上的 TUN 设备不会捕获这些已封装的流量。
  • 正确做法:要对客户端全局代理,需在每台客户端本地开启 TUN 或配置本地应用代理。

分流与上游节点

  • Clash 根据配置规则选择上游节点,如直连、Shadowsocks、SSR、VMess、VLESS、Trojan、HTTP、SOCKS5 等。
  • 上游节点负责解密、访问真正目标、再将响应加密返回给本地 Clash,Clash 解密并转交给客户端。

不影响入站服务

  • 运行 Clash 并不会拦截或占用 sshd 的 22 端口;外部 SSH 访问(ssh user@该机IP)依然直达本机 sshd
  • TUN 模式仅拦截本机的出站流量,不会干扰入站连接。

Anthropic User Safety团队,

你好,我是Linli。我写信是因为,我的Claude账号 (cnshilinli@gmail.com)被无缘无故地封禁了。

我最近看到了Claude 4很厉害的新闻,所以想要谷歌登录来尝试一下这个模型。然而,当我尝试邮箱登录以及谷歌登录的时候,我都被告知,"Your account has been disabled"。这真的很奇怪,因为我几乎没有用过你们的产品,我甚至不记得我曾经注册过你们的账号。然而,当我想要登录的时候却被告知被封禁,这真的很荒谬。

我本来想着算了,注册一个新的账号使用也不是不行。但是,当我用我的手机(+44 7354564001)来注册账号的时候,我又被告知:That phone number has been used too many times. 这绝对不可能,我从2024年9月注册这个手机号以来,最多就在你们的网站绑定过一个账号,也就是我上面的 cnshilinli@gmail.com账号。too many times是绝不可能的。

我希望你们解封我的账号以及手机。如果我是一个有恶意的人,或者注册机器人,我完全可以注册新的邮箱,用新的手机来注册你们的账号然后搞破坏,给你们写邮件申诉解封账号的性价比并不高。我之所以这样做,就是因为我相信我没有做过任何违反你们条例的事情,并且我甚至不记得我用过你们的产品。我希望你们能够解封我的账号,以及我的手机,感谢!

贡献者

文件历史