clash科学上网工作原理

Clash是一款强大的网络代理翻墙工具,它的核心功能主要包括以下几点:

  1. 多协议支持:Clash支持多种代理服务器协议,包括Shadowsocks、VMess、SOCKS5、HTTP等,以及它们的安全传输版本(例如Shadowsocks over WebSocket)。
  2. 规则管理:Clash可以根据用户配置的规则,对不同的网络请求采取不同的代理策略。这些规则可以基于域名、IP、GEOIP(地理位置)等因素。
  3. 策略组:用户可以定义策略组,策略组可以包含多个代理,并指定一个策略,如顺序选择、URL测试、延迟最低等,用于在这个组里面选择一个最优的代理。
  4. 负载均衡和高可用性:Clash可以在多个代理服务器之间进行负载均衡,提高网络访问的性能。同时,如果某个代理服务器失效,Clash可以自动切换到其他可用的代理服务器,提高了代理的高可用性。
  5. Web UI管理:Clash提供了一个Web UI,用户可以通过这个界面方便地管理Clash的配置和状态。
  6. 跨平台:Clash可以在多种操作系统上运行,包括Windows、macOS、Linux、Android等。
  7. MitM(中间人攻击)解密:对于HTTPS流量,Clash可以进行MitM解密,以便更精细地控制网络请求。
  8. 支持Docker:Clash还提供了Docker镜像,用户可以在Docker环境中运行Clash,增加了部署的灵活性。
clash科学上网工作原理
clash for windows主界面

它的工作原理主要基于以下几个方面:

代理规则

Clash会通过用户配置的规则,决定哪些网络请求需要通过代理,哪些不需要。这些规则可以基于域名、IP、GEOIP(地理位置)等因素。

clash都有一个yaml规则配置文件,无需是机场订阅还是自建节点,都会有一个yaml文件,文件中定义了DNS规则、域名分流规则、IP分流规则、DNS解析规则、代理节点、代理使用协议、代理节点组、主机配置等信息。clash完成代理,正是依赖这些核心规则文件。

关于Clash分流规则的介绍,可参见本站教程:Clash 怎么设置规则?Clash自定义分流规则编写详细教程

以下是一个yaml规则配置文件的示例代码:

port: 7890
socks-port: 7891
allow-lan: false
mode: Rule
log-level: info
external-controller: 127.0.0.1:9090
hosts:
  time.facebook.com: 17.253.84.125
  time.android.com: 17.253.84.125
dns:
  enable: true
  use-hosts: true
  nameserver:
    - 119.29.29.29
    - 223.5.5.5
    - 223.6.6.6
    - tcp://223.5.5.5
    - tls://dns.google:853
    - tls://8.8.8.8:853
    - https://dns.google/dns-query
    - https://8.8.8.8/dns-query
    - https://8.8.4.4/dns-query
  default-nameserver:
    - 119.29.29.29
    - 223.5.5.5
    - tcp://119.29.29.29
    - tcp://223.5.5.5
proxies:
  - {name: 🇭🇰 香港Z01, server: 000aa.art, port: 19274, type: ss, cipher: aes-256-gcm, password: 33645ec1-7cb9-359a-99a8-b7cef8de4af6, udp: true}
  - {name: 🇯🇵 日本Z01 | x0.8, server: 000aa.art, port: 475, type: ss, cipher: aes-256-gcm, password: 33645ec1-7cb9-359a-99a8-b7cef8de4af6, udp: true}
proxy-groups:
  - name: 🔰 选择节点
    type: select
    proxies:
      - 🇭🇰 香港Z01
      - 🇯🇵 日本Z01 | x0.8
      - DIRECT
  - name: 🌏 爱奇艺&哔哩哔哩
    type: select
    proxies:
      - DIRECT
      - 🇭🇰 香港Z01
      - 🇭🇰 香港Z02 | IEPL
  - name: 📺 动画疯
    type: select
    proxies:
      - 🔰 选择节点
      - 🇯🇵 日本Z01 | x0.8
      - DIRECT
  - name: 🇨🇳 国内网站
    type: select
    proxies:
      - DIRECT
      - 🔰 选择节点
  - name: 🛑 拦截广告
    type: select
    proxies:
      - REJECT
      - DIRECT
      - 🔰 选择节点
  - name: 🐟 漏网之鱼
    type: select
    proxies:
      - 🔰 选择节点
      - DIRECT
rules:
 - DOMAIN,app.biliapi.net,🌏 爱奇艺&哔哩哔哩
 - DOMAIN-SUFFIX,iq.com,🌏 爱奇艺&哔哩哔哩
 - DOMAIN-SUFFIX,gamer.com.tw,📺 动画疯
 - DOMAIN-SUFFIX,exhentai.org,🔰 选择节点
 - DOMAIN-SUFFIX,teraboxcdn.com,🔰 选择节点
 - IP-CIDR,69.171.235.0/16,🔰 选择节点,no-resolve
 - DOMAIN-SUFFIX,mediawiki.org,🔰 选择节点
 - DOMAIN,app.adjust.com,🇨🇳 国内网站
 - DOMAIN-SUFFIX,googletraveladservices.com,🇨🇳 国内网站
 - DOMAIN,dl.google.com,🇨🇳 国内网站
 - DOMAIN,mtalk.google.com,🇨🇳 国内网站
 - DOMAIN,livew.l.qq.com,🇨🇳 国内网站
 - DOMAIN,vd.l.qq.com,🇨🇳 国内网站
 - DOMAIN-SUFFIX,mzstatic.com,🇨🇳 国内网站
 - IP-CIDR,17.0.0.0/8,🇨🇳 国内网站,no-resolve
 - DOMAIN-KEYWORD,admarvel,🛑 拦截广告
 - DOMAIN-SUFFIX,local,DIRECT
 - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
 - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
 - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
 - GEOIP,CN,🇨🇳 国内网站
 - DOMAIN-KEYWORD,.,🐟 漏网之鱼
 - DOMAIN-KEYWORD,q,🐟 漏网之鱼
 - DOMAIN-KEYWORD,m,🐟 漏网之鱼
 - MATCH,🐟 漏网之鱼

代理选择

对于需要通过代理的网络请求,Clash会根据预先配置的代理服务器列表来选择一个合适的代理服务器。这个选择过程可以基于多种策略,例如负载均衡、最少连接、延迟最小等。

协议支持

Clash支持多种代理协议,包括但不限于Shadowsocks、Vmess、Trojan等。这意味着它可以与各种类型的代理服务器进行通信。

以下是对几种主要代理协议的简单介绍:

  1. Shadowsocks:Shadowsocks是一个开源的安全网络传输协议,设计目标是提供简单无痕的在线安全保护。它使用了混淆技术来难以被检测和封锁。
  2. Vmess:Vmess是V2Ray使用的一种加密传输协议,它分为入站和出站两部分,通常配合WebSocket、HTTP/2、QUIC等传输协议使用,以提供更好的伪装能力。
  3. Trojan:Trojan是一个较新的代理协议,其特点是模拟HTTPS协议进行通信,从而在流量特征上更像常规的HTTPS流量,难以被封锁。

Clash支持这些代理协议意味着,无论你使用哪种类型的代理服务器,只要它使用了这些协议中的一个,Clash就能够与之通信。

请求转发

当Clash选择了一个代理服务器后,它会将网络请求转发到该服务器,并将服务器的响应转发回请求者。在这个过程中,Clash会尽可能地保持网络连接的持久性,以提高性能。

策略组

用户可以定义策略组,策略组可以包含多个代理,并指定一个策略,如顺序选择、URL测试、延迟最低等,用于在这个组里面选择一个最优的代理。

clash会根据会根据当前选择的节点策略来动态调整代理节点。

比如当选择“故障转移”节点时,clash会在当前节点无法正常使用时,立即切换到新的可用节点。

比如当选择“自动选择”节点时,clash会动态选择延迟较低的节点,动态优化科学上网体验。

clash科学上网工作原理
节点策略选择
正文完