安装环境

软路由机器架构: x86_64
OpenWrt版本: 22.03
Clash版本: Premium
OpenWrt的IP: 192.168.88.3 (如果不同,后面涉及此地址全部需要修改)

目标

安装及配置完Clash后,在浏览器的设置->系统->打开您计算机的代理设置->手动设置代理 按上图输入主路由器地址和端口,并保存退出就可以访问Google


0. 下载

以下软件需要预先下载,然后再通过Winscp工具上传到openWrt里面。

  • Clash
  • Country.mmdb
  • yacd (UI界面,可选)

也可以在openWrt命令行执行以下脚本自动安装及配置后续全部内容(但代理配置文件仍需自定义)

wget https://www.shuncs.com/download/instclash.sh && chmod +x instclash.sh && ./instclash.sh

1. 安装Clash

打开Winscp客户端,点击新建会话(快捷键ctrl+n),文件协议选择SCP,主机名里面输入主路由器地址192.168.88.3,用户名输入root,如下图 然后点击保存和确定,然后点击登录,将下载好的软件上传到openWrt中(如果有密钥提示,点击添加)

使用putty登录openWrt,然后按顺序执行以下命令(大小写勿输错)

cd /root
gunzip clash-linux-amd64-latest.gz
mv clash-linux-amd64-latest  /usr/bin/clash
chmod +x /usr/bin/clash
mkdir -p /root/.config/clash
mv Country.mmdb .config/clash/

2. 配置

  • 新增Clash配置文件
vi /root/.config/clash/router.yaml

将如下内容复制到文件中(以下部分内容自定义),然后输入:wq保存退出

mixed-port: 7890
redir-port: 7892
tproxy-port: 7893
allow-lan: true
log-level: info
ipv6: false
#下面三行内容可以在web页面查看流量规则等,如果未安装请在前面加#
secret: ''
external-controller: '192.168.88.3:9090'
external-ui: ui

profile:
  store-fake-ip: true

#如果未安装tun,请在前面加#注释掉
tun:
  enable: true
  stack: system
  dns-hijack:
    - tcp://8.8.8.8:53
    - udp://8.8.8.8:53
  auto-route: true
  auto-detect-interface: true

dns:
  enable: true
  ipv6: false
  listen: 0.0.0.0:5353
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 114.114.114.114
    - 223.5.5.5
  fallback:
    - tls://dns.google:853
    - tls://1.1.1.1:853
  fallback-filter:
     geoip: true 
     ipcidr:
        - 240.0.0.0/4

proxy-providers:
  proxyA:                         #根据实际情况自定义
    type: file
    path: ./proxies/proxyA.yaml   #根据实际情况自定义
    health-check:
      enable: true
      interval: 36000
      url: http://www.gstatic.com/generate_204

  proxyB:                         #根据实际情况自定义
    type: file
    path: ./proxies/proxyB.yaml   #根据实际情况自定义
    health-check:
      enable: true
      interval: 36000
      url: http://www.gstatic.com/generate_204

   proxyURL:                      #如果是订阅链接在此处配置即可
    type: http
    url: "https://raw.githubusercontent.com/learnhard-cn/free_proxy_ss/main/clash/clash.provider.yaml" #根据实际情况自定义
    interval: 3600
    path: ./proxies/proxyURL.yaml #根据实际情况自定义
    health-check:
      enable: true
      interval: 600
      url: http://www.gstatic.com/generate_204

proxy-groups:
  - name: "auto"
    type: url-test
    use:
      - proxyA    #需要和上面名称对应
      - proxyB    #需要和上面名称对应
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  - name: Proxy
    type: select
    use:
      - proxyB    #需要和上面名称对应

# fallback 自动选择服务器
  - name: "fallback-auto"
    type: fallback
    use:
      - proxyA    #需要和上面名称对应
      - proxyB    #需要和上面名称对应
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  - name: "load-balance"
    type: load-balance
    use:
      - proxyA    #需要和上面名称对应
      - proxyB    #需要和上面名称对应
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

rule-providers:
  reject:
    type: file
    behavior: classical
    path: ./rules/reject.yaml

  proxy:
    type: file
    behavior: classical
    path: ./rules/proxy.yaml

rules:
# 拒绝->代理->其余直连
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,fallback-auto
  - MATCH,DIRECT

以上内容也可在以下地址下载
https://www.shuncs.com/download/route_sample.yaml

  • 新增规则文件

输入以下命令

vi /root/.config/clash/rules/proxy.yaml

将如下内容复制到文件中,然后输入:wq保存退出

payload:
  - DOMAIN-KEYWORD,google
  - DOMAIN-KEYWORD,gmail
  - DOMAIN-KEYWORD,youtube

以上内容仅是示例, 具体可在以下地址下载
https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt

  • 新增黑名单文件

输入以下命令

vi /root/.config/clash/rules/reject.yaml

将如下内容复制到文件中,然后输入:wq保存退出

payload:
  - DOMAIN-KEYWORD,admarvel
  - DOMAIN-KEYWORD,admaster

以上内容仅是示例, 详细可在以下地址下载
https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt

  • 测试Clash配置文件的格式是否正确
clash -d /root/.config/clash/ -t -f router.yaml
  • 设置openWrt中每次开机自动启动Clash
vi /etc/init.d/clash

将此内容复制到文件中,并输入:wq保存退出。

#!/bin/sh /etc/rc.common

START=90
STOP=15

USE_PROCD=1
#PROCD_DEBUG=1

CONF=/root/.config/clash/
CONFFILE=router.yaml
PROG=/usr/bin/clash

start_service() {
        procd_open_instance
        procd_set_param command $PROG -f $CONF$CONFFILE -d $CONF
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-9}
        procd_close_instance
}
  • 设置权限,并使之生效
chmod 755 /etc/init.d/clash
service clash enable
  • 启动Clash
service clash start
  • 配置Clash UI (可选)
    使用Winscp工具,将yacd.tar内的文件夹上传到openWrt机器,然后执行以下命令
mv /root/public /root/.config/clash/ui
/etc/init.d/clash restart

在浏览器地址栏中输入: http://192.168.88.3:9090/ui 显示以下内容,在Host一栏输入192.168.88.3,点击确定即可显示Clash详细页面


3. 软件下载

名称版本号说明下载地址
ClashPremium透明代理https://release.dreamacro.workers.dev/latest/clash-linux-amd64-latest.gz
Clash-dashboardclash Web界面https://github.com/Dreamacro/clash-dashboard/archive/refs/heads/gh-pages.zip
Winscp5.21SCP客户端https://winscp.net/download/WinSCP-5.21.5-Portable.zip
Putty0.78虚拟终端https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe
Country.mmdbIP地址库https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb

4. 说明

  • Clash版本区别

Premium 版本支持TUN和配置文件中RULE-SET
如果有电视机顶盒,只能使用Premium版本

  • Clash规则配置文件格式(Premium有效)
payload:
  - DOMAIN-SUFFIX,yinxiang.com
  - DOMAIN-SUFFIX,fb.me
  - DOMAIN-KEYWORD,linkedin
  - DOMAIN,local.adguard.org
  - IP-CIDR,192.168.0.0/16
  - PROCESS-NAME,wechat
  • Clash配置说明
    规则说明范例说明
    PROCESS-NAME匹配进程wechat.exe进程名包含该关键字,在透明代理上不生效
    PROCESS-SUFFIX域名后缀yinxiang.com
    PROCESS-KEYWORD域名关键字linkedin
    DOMAIN域名匹配local.adguard.org
    IP-CIDRIP段匹配192.168.0.0/16
    SRC-IP-CIDR源IP段匹配192.168.0.0/16
    GEOIPGEOIP数据库匹配CN国家代码
    DST-PORT目标端口匹配
    SRC-PORT源端口匹配
    MATCH全匹配一般放在最后

全文完