Tun

TUN 模式创建一张虚拟网卡,接管系统全局流量,不需要客户端软件支持代理设置,是目前最推荐的全局代理方式。这里是顶层 tun 字段的配置说明。

listeners 里也能配置 tun,但那是给高级用户用的写法;普通用户请直接使用顶层配置里的 tun 字段,也就是本页说的内容。

配置示例

config.yaml YAML
tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-redirect: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53
  device: utun0
  mtu: 9000
  strict-route: true

核心字段

enable必须

启用 TUN 模式。

stack默认 gvisor

协议栈,可选 system/gvisor/mixed。没有兼容性问题的话建议用 mixed:TCP 用 system 栈(更稳定、占用更低),UDP 用 gvisor 栈,体验通常最好。如果开启了系统防火墙,system/mixed 栈需要手动放行内核程序才能使用。

device可选

指定 TUN 网卡名称,macOS 只能使用 utun 开头的名字。

auto-route可选

自动设置全局路由,把系统流量自动导入 TUN 网卡,几乎总是需要开启。

auto-redirect仅 Linux

自动配置 iptables/nftables 重定向 TCP 连接,需要 auto-route 已开启,主要用在路由器场景。

auto-detect-interface可选

自动选择流量出口网卡;如果设备同时接了多个出口(比如同时连了 Wi-Fi 和有线网),建议手动指定出口网卡而不是自动检测。

dns-hijack可选

把匹配到的 DNS 请求导入内核内置的 DNS 模块,默认写法不带协议即 udp://。macOS/Windows 无法自动劫持发往局域网的 DNS 请求;Android 若开启了"私人 DNS"也无法自动劫持。

strict-route可选

auto-route 基础上执行更严格的路由规则,防止地址泄露,也是 Android 上 DNS 劫持能正常生效的前提。Windows 下可能导致 VirtualBox 等应用在某些场景下工作不正常。

mtu / gso / gso-max-size可选

mtu 最大传输单元,一般无需修改;gso(仅 Linux)启用通用分段卸载可以提升性能,gso-max-size 设置数据块最大长度。

路由范围与过滤

字段说明
route-address / route-exclude-address启用 auto-route 时路由自定义网段而非默认路由 / 排除自定义网段,一般无需配置
route-address-set / route-exclude-address-set把指定规则集里的目标 IP CIDR 加入防火墙做路由/排除,仅支持 Linux + nftables,需要 auto-route+auto-redirect
include-interface / exclude-interface限制被路由的网络接口,两者互斥不可同时配置
include-uid / exclude-uid(及 range 版本)按 Linux 用户 UID 限制/排除被 TUN 路由的流量,仅 Linux 支持,需要 auto-route
include-android-user限制被路由的 Android 用户(机主 0 / 分身 10 / 多开 999),仅 Android 支持
include-package / exclude-package按 Android 应用包名限制/排除被 TUN 路由的流量
endpoint-independent-nat启用独立于端点的 NAT,性能可能略有下降,不需要时不建议开启
udp-timeoutUDP NAT 过期时间,单位秒,默认 300(5 分钟)

还有一批"旧写法"字段(inet4-route-address 等)即将废弃,新配置建议直接用上面这些新字段名。