← 返回 穿梭VPN是什么?功能、使用方法与注意事项 首页

Mihomo macOS TUN 模式设置步骤

更新于 2026-10-23 · transocks.cyou

简答:Mihomo macOS TUN 开启失败,通常不是节点问题,而是权限、路由或 DNS 配置未生效。先确认配置已激活,再授权网络组件,开启 TUN,最后用 /configs 与 /connections API 检查实际运行状态。

定义:Mihomo 的 TUN 模式是通过虚拟网络接口接管系统流量,使未读取系统代理的终端、开发工具或部分应用也能按 Mihomo 规则处理连接。

先试这一步:确认配置、权限和冲突项

本文是面向 macOS 用户的第三方使用指南,不代表任何客户端或服务的官方页面。截至 2026年10月23日,Mihomo 文档将 TUN 配置分为启用、协议栈、设备名、自动路由、自动检测出口网卡和 DNS 劫持等字段;macOS 的 TUN 设备名必须以 utun 开头。可先查看 Mihomo TUN 配置文档,菜单名称则以当前客户端版本为准。

检查项建议判定标准
配置状态先激活一份能正常启动的配置,再改 TUN客户端能正常启动内核,节点或策略组可用
其他网络工具先退出其他 VPN、透明代理、网络过滤器和抓包工具只保留一个程序负责系统级路由
系统代理首次测试时可保留客户端系统代理,但不要同时叠加其他代理浏览器和终端的路径可单独判断
网络权限若系统弹出网络组件、网络扩展或本地网络权限提示,选择允许客户端不再反复请求授权,TUN 能创建
处理器架构Apple Silicon 与 Intel 选择对应安装包应用可以正常启动,内核文件能加载

如果 macOS 没有再次显示权限弹窗,可打开“系统设置 → 隐私与安全性”检查相关提示;若应用需要访问局域网设备,还可在“隐私与安全性 → 本地网络”中确认权限。Apple 的路径说明见 Apple Mac 本地网络访问设置。这项权限主要影响局域网访问,不等同于 TUN 已成功。

在客户端中开启 TUN:先用界面路径

旧教程常写 Mihomo Party,当前项目页面使用 Clash Party 名称;项目发布页同时提供 macOS Intel 与 Apple Silicon 安装包,具体菜单会随版本变化,可参考 Clash Party Releases,不要依据第三方分发页面判断安装包来源。

  1. 启动客户端,确认已经导入并激活配置。
  2. 确认当前策略组或节点可以正常连接;如果配置本身无法启动,先不要排查 TUN。
  3. 进入客户端的设置、网络或 TUN 相关页面,打开 TUN 开关。不同版本的入口名称可能不同,以当前版本界面为准。
  4. 首次开启时,按 macOS 提示输入当前用户密码,允许客户端安装或启用所需的网络组件。
  5. 如果有“自动路由”或“自动检测出口网卡”选项,首次排查建议开启自动路由,并保留自动检测出口网卡。
  6. 协议栈先选择 system;如果开启后出现连接异常,再单变量改为 mixed 或 gvisor。Mihomo 文档列出的协议栈差异与防火墙注意事项见 TUN 字段说明。

macOS 通常不需要手动填写 device。如果确实要填写,必须使用以 utun 开头的名称;不要照抄别人机器上的 utun0、utun7 等编号,因为接口编号可能随系统、网络工具和启动顺序变化。

系统代理是否同时开启? TUN 负责接管更广泛的系统流量,系统代理主要影响遵循 HTTP 或 SOCKS 代理设置的应用。首次验证时,可以先保持客户端的系统代理设置不变,但关闭其他软件的代理;如果需要判断某个应用到底走哪条路径,再分别测试 TUN 开启和关闭的结果。

需要手动调整时:只添加明确字段

如果客户端界面无法保存 TUN 参数,可在当前配置的顶层增加以下配置段。这里不使用 dns-mode,避免因不同核心版本或客户端覆写机制造成误判;DNS 劫持字段以当前 Mihomo 文档为准。

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

这段配置的作用是启用 TUN、自动设置路由、自动选择出口接口,并把匹配到的 DNS 连接交给 Mihomo 的 DNS 模块。官方示例与字段定义可查看 Mihomo 快速配置示例 和 Mihomo TUN 文档。

macOS 和 Windows 无法自动劫持发往局域网的 DNS 请求,因此局域网设备访问、公司网络、校园网或本地解析异常时,不能只凭 DNS 劫持字段下结论。Mihomo 文档还说明,mtu 一般可保持默认;不要为了“优化速度”随意填写未经验证的数值。

如果配置中已有 tun: 段,不要重复添加两个同名顶层字段;应在现有段内逐项修改。修改后重新加载或重启内核,并以客户端设置页显示的端口为准。

用 external-controller API 验证:不要只看网页能否打开

网页能打开只能说明某条连接成功,不能单独证明流量经过 TUN。若客户端开放了 Mihomo API,可用运行中的控制器检查版本、TUN 状态和连接记录。Mihomo 官方 API 文档说明,/version 用于读取核心版本,/configs 返回运行配置,/connections 返回当前连接信息;API 基础配置说明见 Mihomo 全局配置 和 Mihomo API 文档。

下面统一以 127.0.0.1:9090 为示例,实际端口以客户端设置页为准。若设置了 API 密钥,把环境变量中的占位值替换成自己的密钥。

export MIHOMO_API="http://127.0.0.1:9090"
export MIHOMO_SECRET="你的API密钥"

curl -s -H "Authorization: Bearer $MIHOMO_SECRET" "$MIHOMO_API/version"
curl -s -H "Authorization: Bearer $MIHOMO_SECRET" "$MIHOMO_API/configs" | grep -i -A 12 -B 2 tun
curl -s -H "Authorization: Bearer $MIHOMO_SECRET" "$MIHOMO_API/connections"
返回结果说明下一步
/version 返回 JSONAPI 地址和密钥基本正确继续查看 /configs
tun.enable 为 true运行配置已启用 TUN检查连接记录是否出现目标应用或终端
出现 device 且以 utun 开头核心已记录 TUN 接口继续做关闭 TUN 的对照测试
/connections 出现测试连接这是流量经过核心的直接证据之一查看对应规则、链路和进程信息
返回 401、连接失败或空响应API 端口、密钥或客户端控制方式不匹配回到设置页核对,入口以当前版本界面为准

不同核心版本返回字段可能略有差异,所以不要只按某个固定 JSON 字段判断;优先确认 tun.enable、device 和连接记录是否同时符合预期。

单变量排查:权限、DNS、断网和路由冲突

1. TUN 开关打开后立即关闭

先看客户端日志是否出现权限、网络组件或内核启动错误。退出客户端后重新启动,并在 macOS 的“系统设置 → 隐私与安全性”查看是否有待处理的系统软件或网络扩展提示。若使用防火墙,Mihomo 文档指出 macOS 通常无需额外配置;遇到阻断时再检查防火墙是否允许相关应用。

2. TUN 显示开启,但应用仍无法联网

先关闭其他 VPN、透明代理和网络过滤工具,只保留 Mihomo。然后用 API 查看 /connections,启动一个终端请求,再观察是否出现对应连接。如果没有记录,说明问题更可能在 TUN 路由、应用绕过规则或客户端开关未真正作用于运行中的核心,而不是节点延迟。

curl -I https://example.com

执行时不要加 -x,这样测试的是 TUN 或系统默认路径;加 -x 会变成显式 HTTP 代理测试,不能与 TUN 结果混为一谈。

3. DNS 解析异常

先保持其他设置不变,只临时移除 dns-hijack 两行并重启核心,观察普通域名是否恢复;再恢复配置进行对照。macOS 对局域网 DNS 的自动劫持存在限制,局域网域名异常时应单独判断,不要把所有现象归因于节点。

4. 开启 TUN 后断网

先关闭 TUN,确认基线网络能恢复;再只改一个变量:将协议栈从 system 改为 mixed,或从 mixed 改为 gvisor,不要同时修改 DNS、路由和节点。若仍断网,退出其他网络工具后重新测试,并检查 API 中的运行配置是否与界面显示一致。

5. Tailscale 或其他虚拟网卡冲突

如果设备同时存在多个虚拟网络接口,先暂时退出其他网络工具,再测试 TUN。Mihomo 的 auto-detect-interface 用于自动选择出口接口;多出口环境下,官方文档建议根据实际情况指定出口接口。未确认具体环境前,不要手动填写他人示例中的 utun 编号。

完成判断:用三项结果收尾

  1. 客户端界面显示 TUN 已开启,且未持续弹出权限错误。
  2. /configs 中的 tun.enable 为 true,设备名符合 macOS 的 utun 命名要求。
  3. 执行不带 -x 的终端请求时,/connections 能看到对应连接记录;关闭 TUN 后重复测试,结果能够形成清晰对照。

满足这三项,才能较有把握地判断 TUN 已被核心接管。若只满足第一项,不足以证明终端、游戏或开发工具的流量已经经过 Mihomo。

常见问题

macOS TUN 一定要手动填写 utun 设备名吗?

通常不需要。先让客户端和核心自动创建接口;只有在明确需要固定接口名且当前版本支持时,才考虑填写以 utun 开头的名称。具体编号不要照抄其他设备。

TUN 开启后还要不要打开系统代理?

两者作用不同。TUN 面向更广泛的系统流量,系统代理主要影响遵循 HTTP 或 SOCKS 设置的应用。首次排查可以保留客户端自身的系统代理,但必须关闭其他代理软件,并通过 /connections 判断实际路径。

为什么网页能打开,但 API 看不到连接?

可能是请求没有经过当前 Mihomo 核心,例如浏览器走了其他系统代理、缓存或另一套网络工具。请执行不带 -x 的终端请求,同时确认 API 地址、密钥和当前运行核心一致。

dns-hijack 写了 any:53 还是解析异常,怎么办?

macOS 无法自动劫持发往局域网的 DNS 请求,因此局域网域名不一定适用。可暂时移除 dns-hijack 做单变量对照,并检查当前 DNS 配置、其他 DNS 工具和网络过滤器。

Apple Silicon 和 Intel 的 TUN 设置有区别吗?

核心配置字段基本按 Mihomo 文档执行,主要差异在客户端安装包和内核架构。项目发布页提供对应架构的 macOS 安装包;下载前先确认芯片类型,并以当前版本提示为准。

常见问题

macOS TUN 一定要手动填写 utun 设备名吗?

通常不需要。先让客户端和核心自动创建接口;只有在明确需要固定接口名且当前版本支持时,才考虑填写以 utun 开头的名称。

TUN 开启后还要不要打开系统代理?

两者作用不同。TUN 面向更广泛的系统流量,系统代理主要影响遵循 HTTP 或 SOCKS 设置的应用。首次排查时不要叠加其他代理软件。

为什么网页能打开,但 API 看不到连接?

可能是请求没有经过当前 Mihomo 核心。请执行不带 -x 的终端请求,并确认 API 地址、密钥和运行中的核心一致。

dns-hijack 写了 any:53 还是解析异常怎么办?

macOS 无法自动劫持发往局域网的 DNS 请求。可暂时移除 dns-hijack 做单变量对照,并检查其他 DNS 工具和网络过滤器。

Apple Silicon 和 Intel 的 TUN 设置有区别吗?

核心字段按 Mihomo 文档执行,主要差异在客户端安装包和内核架构。下载时选择对应架构,并以当前版本提示为准。

相关阅读

参考资料

  1. Mihomo 文档:TUN 配置字段与 macOS 设备要求
  2. Mihomo 文档:快速配置示例
  3. Mihomo 文档:API、运行配置与连接查询
  4. Mihomo 文档:外部控制器与 API 配置
  5. Clash Party Releases:macOS 安装包与版本说明
  6. Apple 支持:macOS 本地网络访问权限
  7. wiki.metacubex.one