从简开始

相信不少人刚开始折腾内核的时候,都是一脸茫然的,要配置的内容太多,对新手不友好。所以我们从最简单的方法做起,力求先把内核跑起来,然后再慢慢拓展。

搞代理的前提是你需要去各大机场订阅节点,或者你自己拥有节点。通常机场会给你提供一个订阅链接🔗,复制下来。

下载内核

先去mihomo仓库,根据你的电脑下一个适合的内核版本(去参考官方文档),我下的是这个版本: 图一.jpg

获取配置

在任意位置建一个文件夹,就叫mihomo吧。 在该位置打开cmd,输入

1curl -k -H "User-Agent: Clash" -o config.yaml "你的订阅链接"
  • 添加-k参数跳过证书验证(仅临时测试使用)
  • -H "User-Agent: Clash" 的作用是将请求头中的用户代理标识为 Clash,部分机场可能会根据此标识返回适配的配置格式。

如果机场支持连接转换成clash格式的话,此时你的mihomo文件夹下会出现一个新的config.yaml文件,打开看一下,这个就是机场给你配好的基础配置。 图二.png|294

运行内核

是不是很简单?这个配置已经足够内核正常运行了,我们接着把它跑起来。

打开powershell,输入

1.\mihomo-windows-amd64.exe -d .\ -f config.yaml
  • -d .\ 用于指定程序的工作目录
  • -f config.yaml 用于指定配置文件路径

第一次运行需要拉取geoip文件,可能需要给powershell设置代理才能拉取成功(实在不行暂时用客户端吧,开个tun模式)

在性能管理器里检查一下,发现内核正在运行,说明内核启动成功: 图三|275

开启代理

启动了内核之后的最后一步:我们要到系统设置中手动开启系统代理: image.png|325

至此,我们学会了如何使用裸核mihomo开启代理,不管那些有的没的,至少我们已经可以成功运行啦。

要想在windows的终端使用代理,就在当前会话输入 set http_proxy=http://127.0.0.1:7890,如图所示: image.png 我们已经与google正常连通。

更进一步

现在我们用的完全是机场给我们的配置,当然会有很多细节处没有匹配我们的个人需求,所以我们需要自己去改进一下这个配置,当然如果你觉得这样已经够用,那么不必接着往下看。

自己写规则最主要的目的显然是为了能够让一些自己的服务器或者一些特殊地址能够直连\走代理,其实整个代理配置说白了就是 规定了谁要走直连,谁要走代理,方便我们使用代理时可以实现全自动化策略调控。

要想自己写配置,我们首先要搞懂mihomo的配置分为哪些部分,每一部分是干什么的。让我带大家初步了解一下mihomo的配置中的几个主要模块:

主要模块

proxy-providers

作用

定义 从哪里获取代理节点,支持在线订阅、本地文件等方式,是代理节点的 “源头”。

常用参数

参数含义
url代理订阅链接
path订阅内容的本地保存路径
type订阅类型为 http(常见类型还有 file 本地文件、clash 标准格式等)。
interval订阅更新间隔,通常是设定86400 秒 = 1 天,即每天自动更新一次代理节点。

全局配置

作用

定义 mihomo 的基础运行参数、网络入口(端口)、全局模式等,是软件启动的 基础设置

常用参数

类别关键参数 & 含义
端口配置port: 7891:HTTP 代理端口;

socks-port: 7892:SOCKS5 代理端口;

mixed-port: 7890:混合端口
网络开关allow-lan: true:允许局域网设备(如手机、平板)连接该代理;
运行模式mode: rule:规则模式(核心模式,按 rules 分流,优先推荐);
界面与控制external-controller: 127.0.0.1:9090:外部控制接口(用于 Web 管理或第三方客户端连接);

secret: 控制接口的密码;

external-ui: zashboard:自定义 Web 界面(用 external-ui-url 拉取界面文件)。
地理数据geodata-mode: true:启用地理数据(用于 GEOSITE/GEOIP 规则);

geo-auto-update: true:自动更新地理数据库(geoip/geosite 等);

geox-url:指定地理数据库的下载地址(用 MetaCubeX 的精简库,体积小)。

DNS

作用

解决 DNS 污染问题,确保域名能正确解析到真实 IP,同时按规则分流 DNS 请求(比如国内域名用国内 DNS,国外域名用代理 DNS)。

常用参数

参数含义
enable: true启用 mihomo 自带 DNS(必须开,否则可能 DNS 污染)。
listen: 0.0.0.0:1053DNS 监听地址(局域网设备可将 DNS 设为该地址,共享无污染解析)。
enhanced-mode: fake-ip增强模式:fake-ip(核心!用 “伪装 IP” 替代真实 IP,避免解析延迟,同时防 DNS 泄漏)。
nameserver主要 DNS 服务器(用支持 HTTP/3 的国内 DNS,如阿里 120.53.53.53,速度快)。
proxy-server-nameserver走代理的 DNS(解析国外域名时用,避免污染,比如访问 google.com 时用这个)。

proxy-groups(核心模块)

作用

将代理节点按 功能 或 地区 分组,方便管理和使用(比如 “AI 流量走美国组”“奈飞走新加坡组”),是规则分流的 “目标载体”

如何工作

比如我自己的代理组分为两层,第一层是功能组,第二层是地区组,我举个好理解的例子:

我现在要访问ChatGPT,我的rules 里有一条规则: - GEOSITE,category-ai-!cn,AIGC 意思是 “所有非国内的 AI 类流量(比如 ChatGPT),都交给 AIGC 这个功能组处理”—— 这一步确定了 “用哪个上层组”。

然后AIGC里面有很多的地区组,我选择了美国组。

接着,由于United States 组是 fallback 模式(自动故障转移),它会:

  • 从 proxy-providers 拉取的所有节点中,用 filter: *FilterUS 筛选出 “美国节点”(比如有 3 个美国节点:US-1、US-2、US-3);
  • 按顺序自动检测节点可用性(先测 US-1,再测 US-2…);
  • 优先使用「第一个可用的节点」(比如 US-1 能连,就用 US-1;如果 US-1 失效,自动切到 US-2);
  • 全程不需要手动干预,自动保障连接稳定。

rules(核心模块)

作用

按「优先级」定义 “什么样的流量走哪个代理 / 直连 / 拒绝”。规则优先级:上 → 下,先匹配的先生效

各种规则

1. 拒绝规则
  • - RULE-SET,awavenue,REJECT:匹配 awavenue 广告规则的流量,直接拒绝(拦截广告)。
2. 直连规则
  • 私有地址 / 公共 Tracker:GEOSITE,private/ category-public-tracker,DIRECT(本地局域网、BT Tracker 直连);
  • 国内服务:GEOSITE,apple@cn/ icloud/ microsoft@cn,DIRECT(苹果 / 微软国内服务直连);
  • 国内域名:DOMAIN-SUFFIX,cn,DIRECT(所有 .cn 域名直连);
  • 国内 IP:RULE-SET,domestic_ip/ china_ip/ china_ip_ipv6,DIRECT(国内 IP 段直连)。
3. 特定服务规则
  • AI 服务:GEOSITE,category-ai-!cn,AIGC(非国内 AI 流量,走 AIGC 组);
  • 流媒体:GEOSITE,spotify,Spotify(Spotify 走 Spotify 组)、GEOSITE,netflix/ disney,Netflix(奈飞 / 迪士尼走 Netflix 组);
  • 即时通讯:GEOSITE,telegram,Proxy(Telegram 走 Proxy 组);
  • OneDrive 特例:DOMAIN-SUFFIX,onedrive.live.com,Proxy(OneDrive 国际版走代理,国内版直连)。
4. 通用代理规则
  • CDN 流量:RULE-SET,cdn_domainset/ cdn_non_ip,Proxy(CDN 流量走 Proxy 组);
  • 国外非 IP 流量:RULE-SET,global_non_ip,Proxy(国外非 IP 规则流量走 Proxy 组)。
5. 兜底规则
  • - MATCH,Proxy:所有没被上面规则匹配的流量,默认走 Proxy 组(确保国外流量都能走代理)。

重写配置

有了以上的知识储备,我们就可以自己写一个新的配置文件了,这里贴出我的配置:

  1proxy-providers: 
  2  JingLingXueYuan:
  3    # 敏感信息:原链接中的 Token 已替换为占位符,请替换为自己的有效订阅 Token
  4    url: 'https://pd9jg1kf94.laoyao.ltd/api/v1/client/subscribe?token=[你的订阅Token]'
  5    path: './proxy-providers/JingLingXueYuan.yaml'
  6    type: http
  7    interval: 86400
  8    health-check: 
  9      enable: true
 10      lazy: true
 11      url: http://latency-test.skk.moe/endpoint
 12      interval: 60
 13
 14port: 7891
 15socks-port: 7892
 16mixed-port: 7890
 17unified-delay: true
 18tcp-concurrent: true
 19allow-lan: true
 20mode: rule
 21log-level: info
 22ipv6: true
 23udp: true
 24profile:
 25  store-selected: true
 26  store-fake-ip: true
 27find-process-mode: strict
 28global-client-fingerprint: chrome
 29geodata-mode: true
 30geodata-loader: standard
 31geo-auto-update: true
 32geo-update-interval: 24
 33geox-url:
 34  geoip: https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat
 35  geosite: https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat
 36  mmdb: https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb
 37  asn: https://github.com/xishang0128/geoip/releases/download/latest/GeoLite2-ASN.mmdb
 38external-controller: 127.0.0.1:9090
 39# 敏感信息:原固定密钥已替换为占位符,请设置为自定义的复杂密钥(建议包含字母、数字、符号)
 40secret: [自定义安全密钥]
 41external-ui: ui
 42external-ui-name: zashboard
 43external-ui-url: https://github.com/Zephyruso/zashboard/releases/latest/download/dist.zip
 44sniffer:
 45  enable: true
 46  force-dns-mapping: true
 47  parse-pure-ip: true
 48  override-destination: true
 49  sniff:
 50    HTTP:
 51      ports:
 52        - 80
 53        - 8080-8880
 54      override-destination: true
 55    TLS:
 56      ports:
 57        - 443
 58        - 8443
 59    QUIC:
 60      ports:
 61        - 443
 62        - 8443
 63  force-domain:
 64    - +.v2ex.com
 65  skip-domain:
 66    - Mijia Cloud
 67    - +.push.apple.com
 68  skip-src-address:
 69    - 192.168.1.1/24
 70  skip-dst-address:
 71    - 91.105.192.0/23
 72    - 91.108.4.0/22
 73    - 91.108.8.0/21
 74    - 91.108.16.0/21
 75    - 91.108.56.0/22
 76    - 95.161.64.0/20
 77    - 149.154.160.0/20
 78    - 185.76.151.0/24
 79    - 2001:67c:4e8::/48
 80    - 2001:b28:f23c::/47
 81    - 2001:b28:f23f::/48
 82    - 2a0a:f280:203::/48
 83tun:
 84  enable: false
 85  stack: mixed
 86  device: utun0
 87  dns-hijack:
 88    - any:53
 89    - tcp://any:53
 90  auto-route: true
 91  auto-detect-interface: true
 92  strict-route: true
 93dns:
 94  enable: true
 95  listen: 0.0.0.0:1053
 96  ipv6: true
 97  prefer-h3: true
 98  use-hosts: true
 99  use-system-hosts: true
100  respect-rules: true
101  enhanced-mode: fake-ip
102  fake-ip-range: 28.0.0.1/8
103  fake-ip-filter:
104    - 'rule-set:fake_ip_filter'
105  default-nameserver:
106    - 223.5.5.5
107    - 119.29.29.29
108  nameserver:
109    - https://120.53.53.53/dns-query#h3=true
110    - https://223.6.6.6/dns-query#h3=true
111    - https://223.5.5.5/dns-query#h3=true
112  proxy-server-nameserver:
113    - https://120.53.53.53/dns-query
114    - https://223.5.5.5/dns-query
115
116FilterHK: &FilterHK '(?=.*(🇭🇰|港|HK|(?i)Hong))^((?!(日|坡|狮|美)).)*$'
117FilterJP: &FilterJP '(?=.*(🇯🇵|(?<!尼)日|JP|(?i)Japan))^((?!(港|坡|狮|美)).)*$'
118FilterSG: &FilterSG '(?=.*(🇸🇬|坡|狮|獅|SG|(?i)Singapore))^((?!(港|日|美)).)*$'
119FilterUS: &FilterUS '(?=.*(🇺🇸|美|US|(?i)States|American))^((?!(港|日|坡|狮)).)*$'
120FilterOther: &FilterOther '^((?!(🇭🇰|🇸🇬|🇺🇸|🇯🇵|港|美|日|坡|狮|广告|剩余|官网|到期|流量|HK|US|JP|SG|Hong|Singapore|Japan|United)).)*$'
121
122Select: &select
123  type: select
124  disable-udp: false
125  hidden: false
126UrlTest: &urltest
127  type: url-test
128  interval: 6
129  tolerance: 20
130  lazy: true
131  url: http://latency-test.skk.moe/endpoint
132  disable-udp: false
133  timeout: 2000
134  max-failed-times: 3
135  hidden: false
136FallBack: &fallback
137  type: fallback
138  interval: 6
139  lazy: true
140  url: http://latency-test.skk.moe/endpoint
141  disable-udp: false
142  timeout: 2000
143  max-failed-times: 3
144  hidden: false
145LoadBalance:
146  type: load-balance
147  interval: 6
148  lazy: true
149  url: http://latency-test.skk.moe/endpoint
150  disable-udp: false
151  strategy: consistent-hashing
152  timeout: 2000
153  max-failed-times: 3
154  hidden: false
155
156Classical: &classical
157  type: http
158  behavior: classical
159  interval: 86400
160Domain: &domain
161  type: http
162  behavior: domain
163  interval: 86400
164IP: &ip
165  type: http
166  behavior: ipcidr
167  interval: 86400
168
169proxy-groups:
170  - name: Proxy
171    <<: *select
172    icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Proxy.png
173    proxies:
174      - Hong Kong
175      - Japan
176      - Singapore
177      - United States
178      - Others
179  - name: AIGC
180    <<: *select
181    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/OpenAI.png
182    proxies:
183      - United States
184      - Hong Kong
185      - Japan
186      - Singapore
187      - Others    
188  - name: Netflix
189    <<: *select
190    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/Netflix.png
191    proxies:
192      - Singapore
193      - Hong Kong
194      - Japan
195      - United States
196      - Others
197  - name: Spotify
198    <<: *select
199    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/Spotify.png
200    proxies:
201      - DIRECT
202      - Hong Kong
203      - Japan
204      - Singapore
205      - United States
206      - Others
207  - name: Hong Kong
208    include-all: true
209    <<: *fallback
210    filter: *FilterHK
211    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/HK.png
212  - name: Japan
213    include-all: true
214    <<: *fallback
215    filter: *FilterJP
216    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/JP.png
217  - name: Singapore
218    include-all: true
219    <<: *fallback
220    filter: *FilterSG
221    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/SG.png
222  - name: United States
223    include-all: true
224    <<: *fallback
225    filter: *FilterUS
226    icon: https://raw.githubusercontent.com/Orz-3/mini/master/Color/US.png
227  - name: Others
228    include-all: true
229    <<: *select
230    filter: *FilterOther
231    icon: https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/World_Map.png
232
233rule-providers:
234  awavenue:
235    <<: *domain
236    format: yaml
237    path: ./rule-providers/awavenue.yaml
238    url: https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/Filters/AWAvenue-Ads-Rule-Clash.yaml
239  fake_ip_filter:
240    <<: *domain
241    format: text
242    path: ./rule-providers/fake_ip_filter.list
243    url: https://cdn.jsdelivr.net/gh/juewuy/ShellCrash@dev/public/fake_ip_filter.list
244  applications:
245    <<: *classical
246    format: text
247    path: ./rule-providers/direct.txt
248    url: https://ruleset.skk.moe/Clash/non_ip/direct.txt
249  global_non_ip:
250    <<: *classical
251    format: text
252    path: ./rule-providers/global_non_ip.txt
253    url: https://ruleset.skk.moe/Clash/non_ip/global.txt
254  cdn_domainset:
255    <<: *domain
256    format: text
257    path: ./rule-providers/cdn_domainset.txt
258    url: https://ruleset.skk.moe/Clash/domainset/cdn.txt
259  cdn_non_ip:
260    <<: *classical
261    format: text
262    path: ./rule-providers/cdn_non_ip.txt
263    url: https://ruleset.skk.moe/Clash/non_ip/cdn.txt
264  domestic_non_ip:
265    <<: *classical
266    format: text
267    path: ./rule-providers/domestic_non_ip.txt
268    url: https://ruleset.skk.moe/Clash/non_ip/domestic.txt
269  domestic_ip:
270    <<: *classical
271    format: text
272    path: ./rule-providers/domestic_ip.txt
273    url: https://ruleset.skk.moe/Clash/ip/domestic.txt
274  china_ip:
275    <<: *ip
276    format: text
277    path: ./rule-providers/china_ip.txt
278    url: https://ruleset.skk.moe/Clash/ip/china_ip.txt
279  china_ip_ipv6:
280    <<: *ip
281    format: text
282    path: ./rule-providers/china_ip_ipv6.txt
283    url: https://ruleset.skk.moe/Clash/ip/china_ip_ipv6.txt
284
285rules:
286  - RULE-SET,awavenue,REJECT
287  - GEOSITE,private,DIRECT
288  - GEOSITE,category-public-tracker,DIRECT
289  - GEOSITE,category-games@cn,DIRECT
290  - GEOSITE,apple@cn,DIRECT
291  - GEOSITE,icloud,DIRECT
292  - GEOSITE,microsoft@cn,DIRECT
293  - DOMAIN-SUFFIX,onedrive.live.com,Proxy
294  - GEOSITE,onedrive,DIRECT
295  - GEOSITE,microsoft,Proxy
296  - GEOSITE,telegram,Proxy
297  - GEOSITE,category-ai-!cn,AIGC
298  - GEOSITE,spotify,Spotify
299  - GEOSITE,netflix,Netflix
300  - GEOSITE,disney,Netflix
301  - RULE-SET,cdn_domainset,Proxy
302  - RULE-SET,cdn_non_ip,Proxy
303  - RULE-SET,global_non_ip,Proxy
304  - RULE-SET,applications,DIRECT
305  - RULE-SET,domestic_non_ip,DIRECT
306  - DOMAIN-SUFFIX,cn,DIRECT
307  - GEOIP,telegram,Proxy,no-resolve
308  - GEOIP,netflix,Netflix,no-resolve
309  - GEOIP,private,DIRECT,no-resolve
310  - RULE-SET,domestic_ip,DIRECT,no-resolve
311  - RULE-SET,china_ip,DIRECT,no-resolve
312  - RULE-SET,china_ip_ipv6,DIRECT,no-resolve
313  - MATCH,Proxy

参考:Windows 下 Mihomo 裸核使用分享 - 开发调优 - LINUX DO

手搓脚本

有了一个自定义的配置文件,接下来只要运行内核,开启代理即可,你可以使用我们上面讲到的方法,也可以选择折腾一点,自己手搓脚本。至少需要写以下几个满足基本需求的脚本:

  • 启动内核
  • 启动代理
  • 切换tun\系统代理模式
  • 关闭代理
  • 关闭内核

我自己改写了一套迁移性比较好的脚本(windows上使用ps1后缀的脚本),可供参考: 我的脚本仓库 (暂时还未开放,可能过几天)。

写好脚本后,给文件添加快捷图标,右击图标选择属性,在 目标 前添加C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoExit -File 如果你希望弹出自动关闭,就去掉 -NoExit 。 然后点击 高级 勾选以管理员运行。 image.png|275

小结

此配置文件内置了zashboard web管理面板,在浏览器输入127.0.0.1:9090/ui即可查看面板。可以比较方便地手动切换代理组与节点。

如果你希望开机自启,就给内核添加一个计划程序即可。

之后想要改写规则的时候,直接在config.yaml上续写就好了,非常方便。