Skip to main content

mihomo on MacOS

前置准备

选择下载mihomo对应架构的macOS版本。
按照官方文档编写配置文件。配置文件基本和clash的配置文件一样的语法规则。配置文件使用默认的文件名:config.yaml
把下载好的mihomo可执行文件和配置文件放在一个目录中,例如:/Users/rockcat/Apps/mihomo/

注册macOS服务

编写一个.plist文件,xml标准格式,示例文件名:my.mihomo.plist
注意修改.plist文件中的目录信息(多处)与放置mihomo可执行文件以及配置文件的目录保持一致

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.mihomo</string>

<key>ProgramArguments</key>
<array>
<string>/Users/rockcat/Apps/mihomo/mihomo</string>
<string>-d</string>
<string>/Users/rockcat/Apps/mihomo</string>
</array>

<key>WorkingDirectory</key>
<string>/Users/rockcat/Apps/mihomo</string>

<key>RunAtLoad</key>
<true/>

<key>StandardOutPath</key>
<string>/Users/rockcat/Apps/mihomo/logs/my_mihomo_stdout.log</string>

<key>StandardErrorPath</key>
<string>/Users/rockcat/Apps/mihomo/logs/my_mihomo_stderr.log</string>
</dict>
</plist>

my.mihomo.plist复制到:~/Library/LaunchAgents/目录中。
执行命令加载启动服务

launchctl load ~/Library/LaunchAgents/my.mihomo.plist
launchctl list | grep my.mihomo

如果没有报错,则服务安装并启动成功。

CLI控制台脚本

确保mihomo的配置文件中包含以下内容:

external-controller: 127.0.0.1:9090

这是mihomo的web api服务地址和端口号,CLI通过web api操控mihomo。
这里下载CLI控制台脚本。下载后与mihomo的可执行文件和配置文件放在同一个目录中,例如:/Users/rockcat/Apps/mihomo/
给下载的脚本fuckgfw.sh授权

chmod +x fuckgfw.sh

执行./fuckgfw.sh,应该看到以下输出:

用法: ./fuckgfw.sh [命令]
命令:
show 显示当前代理设置
list 列出所有可用的代理
select 显示代理列表并让用户选择代理
global 切换全局代理
osproxy 切换操作系统代理
restart 重启代理服务
help 显示此帮助信息

mihomo参考配置

不含代理服务和规则

# Generated by Clash Verge
redir-port: 7895
mixed-port: 1080
secret: ""
tun:
stack: gvisor
device: Mihomo
auto-route: true
strict-route: false
auto-detect-interface: true
dns-hijack:
- any:53
mtu: 1420
external-controller-cors:
allow-private-network: true
allow-origins:
- "*"
unified-delay: true

allow-lan: true
bind-address: "*"
mode: rule
log-level: error
external-controller: 127.0.0.1:9090
ipv6: false
dns:
enable: false
nameserver:
- 119.29.29.29
- 114.114.114.114
- 223.5.5.5
- 2001:4860:4860::8888
- 2606:4700:4700::1111
fallback:
- https://cloudflare-dns.com/dns-query
- https://dns.google/dns-query
- tls://1.1.1.1:853
- tls://1.0.0.1:853
- tls://8.8.8.8:853
- tls://8.8.4.4:853
use-system-hosts: true
proxies:
- name: 你自己的代理服务
proxy-groups:
- name: Proxy
type: select
proxies:
- 你自己的代理服务
rules:
- DOMAIN-KEYWORD,bing,Proxy
- DOMAIN-KEYWORD,cn.bing,REJECT
- DOMAIN-SUFFIX,local,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,cn,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,100.64.0.0/10,DIRECT,no-resolve
- MATCH,Proxy

tun模式配置

因为Google Antigravity AI IDE使用SOCKS5代理无法登录,所以改成tun模式。
核心配置如下:

dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
default-nameserver:
- 119.29.29.29
- 114.114.114.114
nameserver:
- 119.29.29.29
- 114.114.114.114
- 223.5.5.5
- 2001:4860:4860::8888
- 2606:4700:4700::1111
use-system-hosts: false
fake-ip-filter:
- "*.不经过clash的域名.com"

tun:
enable: true
stack: gvisor
device: utun99
dns-hijack:
- any:53
- tcp://any:53
auto-route: true
strict-route: true
auto-detect-interface: true
exclude-interface:
- utun6
mtu: 1420
  • devicemacOS系统中必须以utun开头加数字。
  • exclude-interface是VPN的tun网卡名称(例如:WireGuard),每台机器的名称可能不一样。

实验环境中梯子的入口在一个内网中,需要通过VPN才能访问到,因此,在每个代理设置中,要interface-name,指定出口网卡为VPN的tun网卡。

- name: remote-socks5-us
type: socks5
server: 10.10.10.7
port: 18094
interface-name: utun6

tun模式要开启本地监听(用于本地dns服务),因此mihomo服务的plist脚本必须放置在:/Library/LaunchDaemons目录中。