Skip to content

TUN 与网络接入 ​

需要另外开启 TUN 模式吗? ​

不需要,连接 Clash 即可。Clash 在 iPhone、iPad、Mac 和 Apple TV 上使用 Apple Network Extension(NE)的 Packet Tunnel 接入网络,再按你的规则处理流量。首次连接时,允许系统添加 VPN 配置即可。

tun.enable: false 不会关闭 VPN,也不会切换为仅代理端口模式。需要停止接管网络时,请在 Clash 中断开连接。

日常需要配置 TUN 吗? ​

通常不用。你可以省略整个 tun: 段,让 Clash 管理隧道。如果已有完整配置,只想指定协议栈,可以加入:

yaml
tun:
  stack: gvisor

支持 gvisor、system 和 mixed。不填写时默认使用 gVisor;Mixed 使用 System 处理 TCP、gVisor 处理 UDP。iOS/macOS 开启 Include All Networks 时,会统一使用 gVisor。

stack: system 是协议栈选择;Rule、Global、Direct 是流量如何选路,两者分别设置。日常按规则使用时,选择 Rule 即可。

修改隧道设置后,断开并重新连接,再访问目标服务确认效果。需要完整配置,可参考配置最佳实践。

能否只代理某个应用? ​

可以按目标域名、IP 或规则集,让某个应用使用的服务走代理,其余目标走 DIRECT。注意:DIRECT 表示直连出站,流量和 DNS 仍可能经过 Clash。

  • iPhone、iPad 和 Apple TV:使用目标域名、IP 或规则集分流,不能直接按进程名选择应用。多个应用可能访问相同目标,因此目标规则不等于精确的应用筛选。
  • Mac:还可以使用进程名、进程路径或 UID 分流规则;具体连接需要能识别到对应进程。

如果希望其他应用完全绕过 Clash,单纯设置 DIRECT 不够;tun.enable: false 和 include-package 等 TUN 筛选字段也不能实现这种效果。

三个平台有什么区别? ​

大部分 TUN 配置在三端的处理相同,主要区别如下:

功能iOS / iPadOStvOSmacOS
gVisor / System / Mixed支持支持支持
Include All Networks开启后使用 gVisor不启用开启后使用 gVisor
按进程名、路径或 UID 分流不支持不支持支持

macOS 的进程/UID 分流使用规则配置;tun.include-uid 等字段在三端都不生效。

TUN 字段怎么填写? ​

所有字段都放在 tun: 下。下面按用途列出,查找你需要的项目即可。标注“不生效”的字段可以省略;Clash 调整运行设置时,不会改写你保存的原始 YAML。

协议栈与设备
字段使用说明
enable连接时始终开启。写 false 不会关闭 VPN 或切换为仅代理端口模式;请在 App 中断开连接。
stack支持 system、gvisor、mixed;未指定时默认 gVisor。iOS/macOS 实际启用 Include All Networks 时,System/Mixed 改为 gVisor;tvOS 不启用该选项。
device由 Clash 管理,填写 utun0 等名称不会指定系统网卡。
mtu由 Clash 启动时统一设置,YAML 中的值不生效。
file-descriptor由 Clash 管理,无需填写。
gso不生效,Clash 不启用 GSO 分段卸载。
gso-max-size不生效,Clash 不启用 GSO 分段卸载。
recvmsgx固定关闭,无需填写。
sendmsgx固定关闭,无需填写。
路由与出口
字段使用说明
auto-route运行时设为 false,系统路由仍由 Clash 设置;不影响正常接管流量。
auto-detect-interface运行时设为 false,Clash 自动管理出口网卡。
strict-route没有为某个地址族指定 route-address 时,影响该地址族的默认路由拆分方式。与 Include All Networks 是不同设置。
route-address指定进入隧道的目标网段。还需结合客户端路由选项、IPv6 和系统 VPN 设置。
route-exclude-address指定从隧道路由中排除的目标网段。还需结合客户端路由选项、IPv6 和系统 VPN 设置。
route-address-set配置可以读取,但不会把规则集转换为系统路由。普通 RULE-SET 分流仍可使用。
route-exclude-address-set配置可以读取,但不会把规则集转换为系统路由。普通 RULE-SET 分流仍可使用。
auto-redirectLinux 专用设置,在 Clash 的 Apple 版本中不生效。
iproute2-table-indexLinux 专用设置,在 Clash 的 Apple 版本中不生效。
iproute2-rule-indexLinux 专用设置,在 Clash 的 Apple 版本中不生效。
auto-redirect-input-markLinux 专用设置,在 Clash 的 Apple 版本中不生效。
auto-redirect-output-markLinux 专用设置,在 Clash 的 Apple 版本中不生效。
auto-redirect-iproute2-fallback-rule-indexLinux 专用设置,在 Clash 的 Apple 版本中不生效。
DNS、IPv6 与连接设置
字段使用说明
dns-hijack由 Clash 统一设置为 0.0.0.0:53,接管进入隧道的 TCP/UDP 53 端口 DNS 请求。不解密 DoH/DoT。
inet6-address设置隧道 IPv6 地址。关闭 TUN IPv6 时不使用;自动/启用时保留填写的地址,未填则补默认地址。最终是否启用还取决于 IP Stack 设置和网络条件。
udp-timeoutUDP 会话状态超时,单位为秒;不影响 VPN 可以连接多久。
endpoint-independent-nat配置可以读取,但更改它不会改变当前 NAT 行为。
disable-icmp-forwarding固定为 true,ICMP 应答在本地生成。请用实际访问验证代理连接,不要只看 ping。
icmp-timeoutICMP 状态超时,单位为秒;设置它不会开启远端 ICMP 转发。
loopback-address用于 TCP 回环地址处理;不用于排除网段或选择应用。
网卡、用户、应用与端口筛选
字段使用说明
include-interface不生效,不能用它筛选来源网卡或指定出口网卡。
exclude-interface不生效,不能用它筛选来源网卡或指定出口网卡。
include-uid三端均不生效。macOS 按用户或进程分流请使用分流规则。
include-uid-range三端均不生效。macOS 按用户或进程分流请使用分流规则。
exclude-uid三端均不生效。macOS 按用户或进程分流请使用分流规则。
exclude-uid-range三端均不生效。macOS 按用户或进程分流请使用分流规则。
include-mac-address不生效,不能按设备 MAC 地址筛选。
exclude-mac-address不生效,不能按设备 MAC 地址筛选。
include-android-userAndroid 专用设置,不生效;填写 iOS 应用标识也不能按应用筛选。
include-packageAndroid 专用设置,不生效;填写 iOS 应用标识也不能按应用筛选。
exclude-packageAndroid 专用设置,不生效;填写 iOS 应用标识也不能按应用筛选。
exclude-src-port不生效,不能按端口排除隧道接管。
exclude-src-port-range不生效,不能按端口排除隧道接管。
exclude-dst-port不生效,不能按端口排除隧道接管。
exclude-dst-port-range不生效,不能按端口排除隧道接管。
旧字段
字段使用说明
inet4-route-address仍接受,与 route-address (IPv4) 合并后传给 Apple;新字段不会覆盖旧字段,避免重复填写。
inet6-route-address仍接受,与 route-address (IPv6) 合并后传给 Apple;新字段不会覆盖旧字段,避免重复填写。
inet4-route-exclude-address仍接受,与 route-exclude-address (IPv4) 合并后传给 Apple;新字段不会覆盖旧字段,避免重复填写。
inet6-route-exclude-address仍接受,与 route-exclude-address (IPv6) 合并后传给 Apple;新字段不会覆盖旧字段,避免重复填写。

配置 IPv6 时要区分什么? ​

  • dns.ipv6:DNS 是否向应用提供 IPv6 解析结果。
  • IP 查询模式:Clash 自身如何解析和选择地址。
  • TUN IPv6:是否接管 IPv6 流量。

只修改其中一项,不会代替另外两项。IP Stack 选择自动时,还会根据当前网络决定是否启用隧道 IPv6。

其他入站设置 ​

本地代理端口、allow-lan、listeners 和外部控制器用于提供本地服务,按需设置即可。 Linux 的 routing-mark、iptables、TPROXY 路由,以及用 interface-name 指定出口,在这里不适用。

其他字段可在完整配置参考中搜索。

版本说明 ​

本文适用于 Clash 的 Apple 版本。部分设置随版本更新而变化,请以已安装版本提供的功能为准。

文档参考版本

更新于 2026-09-14,依据 Clash Core 5bca0bcb73cd6dcb2d276be31f3a149211388c6d。此参考版本不代表所有 App Store 版本均已包含相同功能,尤其是 IP Stack 的“跟随配置”选项。字段名称可对照 mihomo TUN 文档。