Skip to content

Latest commit

 

History

History
1147 lines (823 loc) · 31.3 KB

File metadata and controls

1147 lines (823 loc) · 31.3 KB

第42节 Clash 学习和配置

❤️💕💕CS自学指南,大学教育无论是深度还是广度都没有办法支撑我们的职业素养,这个板块算是自己在CS学习中额外补充和记录的。个人博客:http://nsddd.top


[TOC]

Clash

Go 中基于规则的隧道。

Release 中有各种类型的包(windows 、 Linux 、 mac)

特征

  • 具有身份验证支持的本地 HTTP/HTTPS/SOCKS 服务器
  • Shadowsocks(R)、VMess、Trojan、Snell、SOCKS5、HTTP(S) 出站支持
  • 内置假 IP DNS 服务器,旨在最大限度地减少 DNS 污染攻击的影响。支持 DoH/DoT 上游。
  • 基于域、GEOIP、IP-CIDR 或进程名称的规则将数据包路由到不同的目的地
  • 代理组允许用户实施强大的规则。支持自动回退、负载均衡或基于关闭延迟自动选择代理
  • 远程提供商,允许用户远程获取代理列表而不是在配置中硬编码
  • 透明代理:使用自动路由表/规则管理重定向 TCP 和 TProxy TCP/UDP
  • 通过全面的 HTTP RESTful API 控制器进行热重载

构建 Clash 作为库的 Go 应用程序

您可以从https://github.com/Dreamacro/clash/releases获取 Clash 的预构建二进制文件或在本地构建。

Clash 需要 Golang 1.19 或更高版本。

$ go install github.com/Dreamacro/clash@latest

二进制文件构建在 $GOPATH/bin 下

$ clash -v

Clash for Linux

windows 中 V2ray N,尝试一些新东西,Clash 很优秀的轨道,而且也是用 Go语言 编写的开源的工具,正合我意。

下载

install:

wget https://github.com/Dreamacro/clash/releases/download/v1.13.0/clash-linux-amd64-v3-v1.13.0.gz

tar:

gunzip clash-linux-amd64-v3-v1.13.0.gz
mv clash-linux-amd64-v3-v1.13.0.gz clash 

mkdir:

mkdir Clash
mv clash ./Clash;cd clash

载clash 配置文件config.yaml (注意:这个订阅链接是自己的,替代 [订阅链接],如果失败了说明订阅链接有问题)

下载Country.mmdb:

可能出现下载不成功,ftp 就行

wget -O Country.mmdb https://www.sub-speeder.com/client-download/Country.mmdb

配置文件移动到 .config:

mkdir -p ~/.config/clash/
sudo cp /opt/clash/Country.mmdb ~/.config/clash/Country.mmdb

启动clash:

chmod +x clash 
./clash -d .

配置

wget 获取配置文件:

wget -O config.yaml [订阅链接(3293172751nss@gmail.com)] 
#下载订阅链接内容并重命名为config.yaml

修改配置文件:

vim config.yaml #编辑config.yaml的文件

修改如下:

#配置文件
#port: 1234 #http端口,不用动
#socks-port: 1235 #socks端口,不用动
#allow-lan: true #是否允许来自局域网的链接,不用动
external-controller: '0.0.0.0:0000' #用于ui连接的地址,冒号前面一定要是0.0.0.0,不然无法连接ui。0000改为自己想要的端口
secret: '密钥' #连接ui用的密钥,自己配置
#proxies:
#省略

启动

查看此时的文件结构:

image-20230201150201722

启动:

./clash -f config.yaml #-f表示以指定配置文件运行clash

使用ctrl+c停止clash

后台运行

运行calsh后,一旦关闭终端会导致clash也关闭,所以使用nohup命令后台运行clash

nohup ./clash -f config.yaml &

验证:

浏览器访问网址http://clash.razord.top/,根据配置文件填入对应信息,然后选择节点。用下面命令测试能否使用。

我是用的是 CLI :

root@cubmaster01:~/workspces# curl -x http://127.0.0.1:7890 google.com 
{"message":"Unauthorized"}

终端测试能否通过clash连接谷歌。返回内容能说明有效。其中7890为你配置的http端口

后台关闭

使用后台运行clash后,关闭clash使用下面命令

pkill -9 clash #杀死clash进程

设置终端代理,并且配置变量

终端默认是直连的,设置代理命令如下

export http_proxy=http://127.0.0.1:7890 #7890为你配置的端口
export https_proxy=http://127.0.0.1:7890 #7890为你配置的端口

取消终端代理

unset http_proxy
unset https_proxy

快捷方式-环境变量

本次终端设置代理后,下次打开终端依旧需要重新设置,每次输入太麻烦,直接添加变量解决

sudo vim ~/.bashrc #编辑bashrc文件

在文件中添加下面的内容,其中7890为你设置的端口。“proxy”和“unproxy”为你喜欢的变量名字,一个用于开启代理,一个用于关闭

alias proxy="export http_proxy=http://127.0.0.1:7890;export https_proxy=http://127.0.0.1:7890"
alias unproxy="unset http_proxy;unset https_proxy"

刷新:

source ~/.bashrc #注意不编译无法生效

我一般放在 /etc/profile.d/mypath.sh 文件中

以后终端代理直接终端输入proxyCopy即可。取消用unproxyCopy。查看终端代理状态:

[root@dev workspces]# env | grep -i proxy
https_proxy=http://127.0.0.1:7890
http_proxy=http://127.0.0.1:7890

使用变量启动clash

上面的终端代理可以用变量快速进行,同理clash也可以快速启动。不过上面的命令是在 /opt/vpn/Clash目录下且该目录有配置文件才能正确执行,所以变量的命令需要将路径都写为绝对路径。

在文件中添加下面的内容。“clash”和“unclash”为你喜欢的变量名字,一个用于开启clash,一个用于关闭

后面的意思是将输出文件写入到/dev/null下,这个目录会丢弃所有写入数据,就是垃圾站,而数字是linux的重定向,里面的数字含义如下所示

  • 1:标准输出,在一般使用时,默认的是标准输出;
  • 2:表示错误信息输出。

这里整句话含义是将错误信息重定向到标准输出,其他信息丢进 /dev/null

alias 'clash'='nohup /opt/vpn/Clash/clash -f /opt/vpn/Clash/config.yaml -d /opt/vpn/Clash/ > /dev/null 2>&1 &'   
alias 'unclash'='pkill -9 clash'

刷新:

source ~/.bashrc #注意不编译无法生效

此时就可用clashCopyunclashCopy命令来启动和关闭clash,通过命令ps -ef | grep clashCopy来判断clash是否运行,测试一下

[root@dev workspces]# unclash 
[root@dev workspces]# curl -x http://127.0.0.1:7890 google.com 
curl: (7) Failed to connect to 127.0.0.1 port 7890: Connection refused
[2]+  Killed                  nohup /opt/vpn/Clash/clash -f /opt/vpn/Clash/config.yaml -d /opt/vpn/Clash/ > /dev/null 2>&1
[root@dev workspces]# clash 
[1] 99148
[root@dev workspces]# curl -x http://127.0.0.1:7890 google.com 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

状态:

[root@dev workspces]# ps -ef | grep clash #判断clash状态
root       99148   97461  0 07:21 pts/8    00:00:00 /opt/vpn/Clash/clash -f /opt/vpn/Clash/config.yaml -d /opt/vpn/Clash/
root       99170   97461  0 07:21 pts/8    00:00:00 grep --color=auto clash

完成了,我们测试一下 Google :

[root@dev workspces]# nmap -p google.com
Starting Nmap 7.80 ( https://nmap.org ) at 2023-02-01 07:25 UTC
Found no matches for the service mask 'google.com' and your specified protocols
QUITTING!

[root@dev workspces]# nmap -p 7890 google.com
Starting Nmap 7.80 ( https://nmap.org ) at 2023-02-01 07:25 UTC
Nmap scan report for google.com (142.251.42.238)
Host is up (0.00061s latency).
rDNS record for 142.251.42.238: tsa01s11-in-f14.1e100.net

PORT     STATE    SERVICE
7890/tcp filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds

Clash for And

订阅方式很简单,不描述~

Clash for Windows OR Mac

安装包: https://github.com/ClashrAuto/Clashr-Auto-Desktop/releases

我是用的是国际版,适用于 Windows 和 Mac

Windows 用户下载 Clash.for.Windows.Setup.x.y.z.exe 即可(其中 x.y.z 是版本号)。

安装包:https://github.com/Fndroid/clash_for_windows_pkg/releases/tag/0.20.17

image-20230225202803795

版本说明:

文件名 说明
Clash.for.Windows-0.20.6-arm64-linux.tar.gz Linux ARM 64位 版本 压缩包
Clash.for.Windows-0.20.6-arm64-mac.7z Mac ARM 64位 版本 压缩包
Clash.for.Windows-0.20.6-arm64-win.7z Windows ARM 64位 版本 压缩包
Clash.for.Windows-0.20.6-arm64.dmg Mac ARM 64位 版本
Clash.for.Windows-0.20.6-ia32-win.7z Windows 32位 版本 压缩包
Clash.for.Windows-0.20.6-mac.7z Mac 64位 版本 压缩包
Clash.for.Windows-0.20.6-win.7z Windows 64位 版本 压缩包
Clash.for.Windows-0.20.6-x64-linux.tar.gz Linux 64位 版本 压缩包
Clash.for.Windows-0.20.6.dmg Mac 64位 版本
Clash.for.Windows.Setup.0.20.6.arm64.exe Windows ARM 64位 版本
Clash.for.Windows.Setup.0.20.6.exe Windows 64位 版本
Clash.for.Windows.Setup.0.20.6.ia32.exe Windows 32位 版本
sha256sum 检测文件完整性的命令
Source code (zip) 源文件压缩包 zip 版本
Source code (tar.gz) 源文件压缩包 tar.gz 版本

使用很简单,直接演示(中文版):

这个版本的功能比较少,不过适合不折腾的 同学 使用~

image-20230225202314026

官方版

演示:可以开系统代理

image-20230225205921285

📜 对上面的解释:

当然,网上也有汉化的方法:

  1. 进入安装目录,然后双击进入 resources 文件夹,找到 app.asar 这个文件。
  2. 汉化补丁下载页里的 app.asar 文件替换即可,替换完成之后运行软件就可以看到汉化效果了,注意下载汉化补丁的时候要和安装的版本号一致。

英文版看着没啥影响,所以我没有替换。

可以看出功能要多很多~

  • General(常规)

    • PortSocks Port;分别为 HTTP、SOCKS 代理端口,点击终端图案可以打开一个配置了代理的命令行窗口,点击端口数字可以复制该命令;

      HTTP、SOCKS 在同一个端口服务器上。mixed = HTTP + SOCKS

    • Allow LAN:启用局域网共享代理功能;

    • Log Level:日志等级;

    • Home Directory:点击下方路径直达 C:\Users\用户名\.config\clash 文件夹;

    • GeoIP Database:点击下方日期可更新 GeoIP 数据库;

    • UWP Loopback :可以用来使 UWP 应用解除回环代理限制;

    • Tap Device :安装 cfw-tap 网卡,可用于处理不遵循系统代理的软件(实际启动 tap 模式需要更改配置文件);

    • Service Mode : 开启网关,命令行; 服务管理这可能需要一段时间。APP会自动重新启动。当前状态:未激活安装方法:schtasks(推荐) / winsw安装卸载

    • TUN Mode : 用来使得 TUN 命令行等解除回环代理限制

    • General YML:编辑 config.yml 文件,可用于配置部分 General 页面内容;

    • Dark Theme:控制暗色模式;

    • System Proxy:启用系统代理;开启状态下按钮状态为绿色;

    • Start with Windows:设置开机自启;开启状态下按钮状态为绿色;

  • Proxies(代理):选择代理方式(Global – 全局、Rule – 规则、Direct – 直连)及策略组节点选择;

  • Profiles(配置管理)

    • 用来下载远端配置文件和创建本地副本,且可在多个配置文件间切换;
    • 对配置进行节点、策略组和规则的管理(添加节点、策略组和规则在各自编辑界面选择 Add, 调整策略组顺序、节点顺序及策略组节点使用拖拽的方式);
    • 点击界面左侧菜单 Profiles,点击 Update All 即可更新所有配置文件;
  • Logs(日志):显示当前请求命中规则类型和策略;

  • Connections (连接): 显示当前的 TCP 连接,可对某个具体连接执行关闭操作;

  • Settings(设置):软件详细设置;

  • Feedback(反馈):显示软件、作者相关信息。

General

TAP 设备

Clash for Windows 中提供了一个新的 TAP 模式。对于不遵循系统代理的软件,TAP 模式可以接管其流量并交由 CFW 处理。

安装 TAP 网卡

点击 General 页面下的 TAP Device 以安装 TAP 网卡,此网卡将用于接管系统流量,安装完成可在系统网络连接中看到一张新的虚拟网卡 cfw-tap

启动 TAP 模式

在配置文件中,添加以下字段 (包含 fake-ip):

dns:
   enable: true
   enhanced-mode: fake-ip # 或 redir-host
   listen: 127.0.0.1:53
   nameserver:
      - 223.5.5.5
experimental:
  interface-name: WLAN # WLAN 为物理网卡名
工作原理

此版本可以使用 interface-name 属性避免回环,所以可以不使用 fake-ip 模式,并且支持了 UDP 及 IP 类请求

Allow LAN

补充Allow LAN:启用局域网共享代理功能;

Clash
Address:
198.18.0.1
Netmask:
255.255.0.0 (16)
MAC:
00:00:00:00:00:00
VMware Network Adapter VMnet1
Address:
169.254.219.50
Netmask:
255.255.0.0 (16)
MAC:
00:50:56:c0:00:01
VMware Network Adapter VMnet8
Address:
192.168.232.1
Netmask:
255.255.255.0 (24)
MAC:
00:50:56:c0:00:08
WLAN
Address:
10.100.19.52
Netmask:
255.255.192.0 (18)
MAC:
94:e7:0b:b0:3f:b0
Loopback Pseudo-Interface 1
Address:
127.0.0.1
Netmask:
255.0.0.0 (8)
MAC:
00:00:00:00:00:00

我们会发现 IP 地址,我们可以打开手机 在代理设置选择手动,输入 IP 地址和端口地址:

198.18.0.1  
7890

UWP Loopback

补充UWP Loopback :可以用来使 UWP 应用解除回环代理限制;

我们打开后,会发现 UWP 模式,因为我们即使开了 全局(Global)模式也是有一些不能使用的,那么我们可以将需要的打勾✔就好了。

谷歌插件 proxy

我们可以通过谷歌浏览器插件 Proxy SwitchyOmega 来轻松快捷地管理和切换多个代理设置。

  • 我们可以添加一个情景模式 name = clash (名称随意)
  • 代理协议使用 SOCKS 5
  • 代理服务器 127.0.0.1
  • 代理端口使用的端口 7890
  • 点击 应用选项 即可

Proxies

Proxies」选项卡,上方「Global」「Rule」「Direct」为运行模式,下方即是所有可用节点以供选择。

image-20230225220846452

  • Global - 全局连接 - 所有请求通过节点代理
  • Rule - 规则判断 - 根据配置规则进行自动分流,按照规则列表设置运行
  • Direct - 直接连接 - 所有请求都不通过节点代理,直接从本地发起请求(不走代理)
  • Script 高阶操作

节点要求

我使用的是付费节点,是永久版的,所以给与一些参考为止:

免费节点

由于软件支持Shadowsocks、ShadowsocksR、Socks、Snell、V2Ray、Trojan等代理协议,如需免费节点可以使用搜索引擎搜索。

收费节点

免费节点资源少或者觉得免费节点不稳定的话可以考虑购买收费节点。推荐搬瓦工官方机场 Just My Socks,支持 Shadowsocks 及 V2Ray 协议,并且有多个数据中心及套餐可选。

自己搭建节点

如果对稳定性要求高且有一定的技术基础,推荐自己搭建节点,速度有保证且安全性也最高,具体搭建教程可参考下面的链接。

Clash 配置语法

Clash 使用YAMLYAML Ain't Markup Language,作为配置文件。YAML 被设计为易于计算机阅读、编写和解释,通常用于精确的配置文件。在本章中,我们将介绍 Clash 的常见功能以及如何使用和配置它们。

Clash的工作原理是在本端开启HTTP、SOCKS5或透明代理服务器。当请求或数据包传入时,Clash使用 VMess、Shadowsocks、Snell、Trojan、SOCKS5 或 HTTP 协议将数据包路由到不同的远程服务器(“节点”)。

# Port of HTTP(S) proxy server on the local end
port: 7890

# Port of SOCKS5 proxy server on the local end
socks-port: 7891

# Transparent proxy server port for Linux and macOS (Redirect TCP and TProxy UDP)
# redir-port: 7892

# Transparent proxy server port for Linux (TProxy TCP and TProxy UDP)
# tproxy-port: 7893

# HTTP(S) and SOCKS4(A)/SOCKS5 server on the same port
# mixed-port: 7890

# authentication of local SOCKS5/HTTP(S) server
# authentication:
#  - "user1:pass1"
#  - "user2:pass2"

# Set to true to allow connections to the local-end server from
# other LAN IP addresses
allow-lan: false

# This is only applicable when `allow-lan` is `true`
# '*': bind all IP addresses
# 192.168.122.11: bind a single IPv4 address
# "[aaaa::a8aa:ff:fe09:57d8]": bind a single IPv6 address
bind-address: '*'

# Clash router working mode
# rule: rule-based packet routing
# global: all packets will be forwarded to a single endpoint
# direct: directly forward the packets to the Internet
mode: rule

# Clash by default prints logs to STDOUT
# info / warning / error / debug / silent
log-level: info

# When set to false, resolver won't translate hostnames to IPv6 addresses
ipv6: false

# RESTful web API listening address
external-controller: 127.0.0.1:9090

# A relative path to the configuration directory or an absolute path to a
# directory in which you put some static web resource. Clash core will then
# serve it at `http://{{external-controller}}/ui`.
external-ui: folder

# Secret for the RESTful API (optional)
# Authenticate by spedifying HTTP header `Authorization: Bearer ${secret}`
# ALWAYS set a secret if RESTful API is listening on 0.0.0.0
# secret: ""

# Outbound interface name
interface-name: en0

# fwmark on Linux only
routing-mark: 6666

# Static hosts for DNS server and connection establishment (like /etc/hosts)
#
# Wildcard hostnames are supported (e.g. *.clash.dev, *.foo.*.example.com)
# Non-wildcard domain names have a higher priority than wildcard domain names
# e.g. foo.example.com > *.example.com > .example.com
# P.S. +.foo.com equals to .foo.com and foo.com
hosts:
  # '*.clash.dev': 127.0.0.1
  # '.dev': 127.0.0.1
  # 'alpha.clash.dev': '::1'

profile:
  # Store the `select` results in $HOME/.config/clash/.cache
  # set false If you don't want this behavior
  # when two different configurations have groups with the same name, the selected values are shared
  store-selected: false

  # persistence fakeip
  store-fake-ip: true

# DNS server settings
# This section is optional. When not present, the DNS server will be disabled.
dns:
  enable: false
  listen: 0.0.0.0:53
  # ipv6: false # when the false, response to AAAA questions will be empty

  # These nameservers are used to resolve the DNS nameserver hostnames below.
  # Specify IP addresses only
  default-nameserver:
    - 114.114.114.114
    - 8.8.8.8
  enhanced-mode: fake-ip # or redir-host (not recommended)
  fake-ip-range: 198.18.0.1/16 # Fake IP addresses pool CIDR
  # use-hosts: true # lookup hosts and return IP record
  
  # Hostnames in this list will not be resolved with fake IPs
  # i.e. questions to these domain names will always be answered with their
  # real IP addresses
  # fake-ip-filter:
  #   - '*.lan'
  #   - localhost.ptlogin2.qq.com
  
  # Supports UDP, TCP, DoT, DoH. You can specify the port to connect to.
  # All DNS questions are sent directly to the nameserver, without proxies
  # involved. Clash answers the DNS question with the first result gathered.
  nameserver:
    - 114.114.114.114 # default value
    - 8.8.8.8 # default value
    - tls://dns.rubyfish.cn:853 # DNS over TLS
    - https://1.1.1.1/dns-query # DNS over HTTPS
    - dhcp://en0 # dns from dhcp
    # - '8.8.8.8#en0'

  # When `fallback` is present, the DNS server will send concurrent requests
  # to the servers in this section along with servers in `nameservers`.
  # The answers from fallback servers are used when the GEOIP country
  # is not `CN`.
  # fallback:
  #   - tcp://1.1.1.1
  #   - 'tcp://1.1.1.1#en0'

  # If IP addresses resolved with servers in `nameservers` are in the specified
  # subnets below, they are considered invalid and results from `fallback`
  # servers are used instead.
  #
  # IP address resolved with servers in `nameserver` is used when
  # `fallback-filter.geoip` is true and when GEOIP of the IP address is `CN`.
  #
  # If `fallback-filter.geoip` is false, results from `nameserver` nameservers
  # are always used if not match `fallback-filter.ipcidr`.
  #
  # This is a countermeasure against DNS pollution attacks.
  # fallback-filter:
  #   geoip: true
  #   geoip-code: CN
  #   ipcidr:
  #     - 240.0.0.0/4
  #   domain:
  #     - '+.google.com'
  #     - '+.facebook.com'
  #     - '+.youtube.com'
  
  # Lookup domains via specific nameservers
  # nameserver-policy:
  #   'www.baidu.com': '114.114.114.114'
  #   '+.internal.crop.com': '10.0.0.1'

proxies:
  # Shadowsocks
  # The supported ciphers (encryption methods):
  #   aes-128-gcm aes-192-gcm aes-256-gcm
  #   aes-128-cfb aes-192-cfb aes-256-cfb
  #   aes-128-ctr aes-192-ctr aes-256-ctr
  #   rc4-md5 chacha20-ietf xchacha20
  #   chacha20-ietf-poly1305 xchacha20-ietf-poly1305
  - name: "ss1"
    type: ss
    server: server
    port: 443
    cipher: chacha20-ietf-poly1305
    password: "password"
    # udp: true

  - name: "ss2"
    type: ss
    server: server
    port: 443
    cipher: chacha20-ietf-poly1305
    password: "password"
    plugin: obfs
    plugin-opts:
      mode: tls # or http
      # host: bing.com

  - name: "ss3"
    type: ss
    server: server
    port: 443
    cipher: chacha20-ietf-poly1305
    password: "password"
    plugin: v2ray-plugin
    plugin-opts:
      mode: websocket # no QUIC now
      # tls: true # wss
      # skip-cert-verify: true
      # host: bing.com
      # path: "/"
      # mux: true
      # headers:
      #   custom: value

  # vmess
  # cipher support auto/aes-128-gcm/chacha20-poly1305/none
  - name: "vmess"
    type: vmess
    server: server
    port: 443
    uuid: uuid
    alterId: 32
    cipher: auto
    # udp: true
    # tls: true
    # skip-cert-verify: true
    # servername: example.com # priority over wss host
    # network: ws
    # ws-opts:
    #   path: /path
    #   headers:
    #     Host: v2ray.com
    #   max-early-data: 2048
    #   early-data-header-name: Sec-WebSocket-Protocol

  - name: "vmess-h2"
    type: vmess
    server: server
    port: 443
    uuid: uuid
    alterId: 32
    cipher: auto
    network: h2
    tls: true
    h2-opts:
      host:
        - http.example.com
        - http-alt.example.com
      path: /
  
  - name: "vmess-http"
    type: vmess
    server: server
    port: 443
    uuid: uuid
    alterId: 32
    cipher: auto
    # udp: true
    # network: http
    # http-opts:
    #   # method: "GET"
    #   # path:
    #   #   - '/'
    #   #   - '/video'
    #   # headers:
    #   #   Connection:
    #   #     - keep-alive

  - name: vmess-grpc
    server: server
    port: 443
    type: vmess
    uuid: uuid
    alterId: 32
    cipher: auto
    network: grpc
    tls: true
    servername: example.com
    # skip-cert-verify: true
    grpc-opts:
      grpc-service-name: "example"

  # socks5
  - name: "socks"
    type: socks5
    server: server
    port: 443
    # username: username
    # password: password
    # tls: true
    # skip-cert-verify: true
    # udp: true

  # http
  - name: "http"
    type: http
    server: server
    port: 443
    # username: username
    # password: password
    # tls: true # https
    # skip-cert-verify: true
    # sni: custom.com

  # Snell
  # Beware that there's currently no UDP support yet
  - name: "snell"
    type: snell
    server: server
    port: 44046
    psk: yourpsk
    # version: 2
    # obfs-opts:
      # mode: http # or tls
      # host: bing.com

  # Trojan
  - name: "trojan"
    type: trojan
    server: server
    port: 443
    password: yourpsk
    # udp: true
    # sni: example.com # aka server name
    # alpn:
    #   - h2
    #   - http/1.1
    # skip-cert-verify: true

  - name: trojan-grpc
    server: server
    port: 443
    type: trojan
    password: "example"
    network: grpc
    sni: example.com
    # skip-cert-verify: true
    udp: true
    grpc-opts:
      grpc-service-name: "example"

  - name: trojan-ws
    server: server
    port: 443
    type: trojan
    password: "example"
    network: ws
    sni: example.com
    # skip-cert-verify: true
    udp: true
    # ws-opts:
      # path: /path
      # headers:
      #   Host: example.com

  # ShadowsocksR
  # The supported ciphers (encryption methods): all stream ciphers in ss
  # The supported obfses:
  #   plain http_simple http_post
  #   random_head tls1.2_ticket_auth tls1.2_ticket_fastauth
  # The supported supported protocols:
  #   origin auth_sha1_v4 auth_aes128_md5
  #   auth_aes128_sha1 auth_chain_a auth_chain_b  
  - name: "ssr"
    type: ssr
    server: server
    port: 443
    cipher: chacha20-ietf
    password: "password"
    obfs: tls1.2_ticket_auth
    protocol: auth_sha1_v4
    # obfs-param: domain.tld
    # protocol-param: "#"
    # udp: true

proxy-groups:
  # relay chains the proxies. proxies shall not contain a relay. No UDP support.
  # Traffic: clash <-> http <-> vmess <-> ss1 <-> ss2 <-> Internet
  - name: "relay"
    type: relay
    proxies:
      - http
      - vmess
      - ss1
      - ss2

  # url-test select which proxy will be used by benchmarking speed to a URL.
  - name: "auto"
    type: url-test
    proxies:
      - ss1
      - ss2
      - vmess1
    # tolerance: 150
    # lazy: true
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  # fallback selects an available policy by priority. The availability is tested by accessing an URL, just like an auto url-test group.
  - name: "fallback-auto"
    type: fallback
    proxies:
      - ss1
      - ss2
      - vmess1
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  # load-balance: The request of the same eTLD+1 will be dial to the same proxy.
  - name: "load-balance"
    type: load-balance
    proxies:
      - ss1
      - ss2
      - vmess1
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
    # strategy: consistent-hashing # or round-robin

  # select is used for selecting proxy or proxy group
  # you can use RESTful API to switch proxy is recommended for use in GUI.
  - name: Proxy
    type: select
    # disable-udp: true
    proxies:
      - ss1
      - ss2
      - vmess1
      - auto
 
  # direct to another infacename or fwmark, also supported on proxy
  - name: en1
    type: select
    interface-name: en1
    routing-mark: 6667
    proxies:
      - DIRECT 

  - name: UseProvider
    type: select
    use:
      - provider1
    proxies:
      - Proxy
      - DIRECT

proxy-providers:
  provider1:
    type: http
    url: "url"
    interval: 3600
    path: ./provider1.yaml
    health-check:
      enable: true
      interval: 600
      # lazy: true
      url: http://www.gstatic.com/generate_204
  test:
    type: file
    path: /test.yaml
    health-check:
      enable: true
      interval: 36000
      url: http://www.gstatic.com/generate_204

tunnels:
  # one line config
  - tcp/udp,127.0.0.1:6553,114.114.114.114:53,proxy
  - tcp,127.0.0.1:6666,rds.mysql.com:3306,vpn
  # full yaml config
  - network: [tcp, udp]
    address: 127.0.0.1:7777
    target: target.com
    proxy: proxy

rules:
  - DOMAIN-SUFFIX,google.com,auto
  - DOMAIN-KEYWORD,google,auto
  - DOMAIN,google.com,auto
  - DOMAIN-SUFFIX,ad.com,REJECT
  - SRC-IP-CIDR,192.168.1.201/32,DIRECT
  # optional param "no-resolve" for IP rules (GEOIP, IP-CIDR, IP-CIDR6)
  - IP-CIDR,127.0.0.0/8,DIRECT
  - GEOIP,CN,DIRECT
  - DST-PORT,80,DIRECT
  - SRC-PORT,7777,DIRECT
  - RULE-SET,apple,REJECT # Premium only
  - MATCH,auto

指定配置目录

如果没有另外指定,Clash 默认读取位于$HOME/.config/clash/config.yaml. 如果不存在,Clash 将生成默认设置。

您可以使用命令行选项-d指定配置目录:

$ clash -d . # current directory
$ clash -d /etc/clash

您可以使用命令行选项-f来指定配置:

$ clash -f ./config.yaml # current directory
$ clash -f /etc/clash/config.yaml

END 链接

Clash 家族

Clash for Android 终于更新了支持 SSR 的新内核!! 至此三大平台的 Clash 客户端都支持了 SSR,可喜可贺 🎉🎉🎉 由于各种原因,需要使用以下客户端才能正常使用:

参考

贡献: