Skip to content

Tailscale — mihomo

mihomo 可以作为用户态节点加入 Tailscale tailnet 并 通过它路由流量,全部在代理配置内完成。该节点完全在用户态运行(由 gVisor 支撑), 因此不需要内核 TUN 设备或系统的 Tailscale 守护进程。将 control-url 指向 自托管的 Headscale,即可将其用于替代的协调服务器。

出站

位于 proxies: 下、type: tailscale 的条目。内嵌 BasicOption (通用出站字段)。

字段类型默认值允许值描述
namestring(required)<string>唯一的代理名称。
hostnamestring(unset)<string>要在 tailnet 上注册的节点主机名。
auth-keystring(unset)<auth key>用于无头(非交互式)登录的 Tailscale 认证密钥。
control-urlstring(Tailscale default)<URL>协调服务器 URL;设置此项以指向自托管的 Headscale,而非 Tailscale 的默认值。
state-dirstringtailscale<directory path>节点持久化其状态/密钥的目录。
ephemeralboolfalsetrue | false注册为临时节点,离线时自动移除。
udpboolfalsetrue | false允许 UDP 流量。
accept-routes*bool(unset)true | false接受其他 tailnet 节点通告的子网路由。
exit-nodestring(unset)<node name or IP>将此 tailnet 节点(名称或 IP)用作出口节点。
exit-node-allow-lan-access*bool(unset)true | false在经由出口节点路由时允许直接访问 LAN。

源码: adapter/outbound/tailscale.go:52-65 · 锚定版本 v1.19.27 (5184081)

示例

使用无头认证密钥加入 tailnet 的最简出站:

yaml
proxies:
  - name: ts
    type: tailscale
    auth-key: tskey-auth-xxxxxxxxxxxx

通过 tailnet 出口节点路由全部流量:

yaml
proxies:
  - name: ts-exit
    type: tailscale
    auth-key: tskey-auth-xxxxxxxxxxxx
    hostname: mihomo-node
    exit-node: us-exit-1
    exit-node-allow-lan-access: true
    accept-routes: true
    udp: true

针对自托管的 Headscale 协调服务器:

yaml
proxies:
  - name: ts-headscale
    type: tailscale
    auth-key: <headscale pre-auth key>
    control-url: https://headscale.example.com
    state-dir: tailscale-state

说明

  • auth-key 启用无头(非交互式)登录——无人值守节点所必需。没有它,节点无法 自行认证。
  • state-dir 默认为 tailscale,并相对于 mihomo 工作目录解析。节点在该处持久化 其密钥与机器身份,因此重用同一目录可在重启后保持相同的 tailnet 身份。
  • ephemeral: true 注册一个一旦离线即被协调服务器自动移除的节点——适用于不应 滞留在 tailnet 设备列表中的短生命周期或容器化实例。
  • exit-node 接受节点名称或 IP。当它指向一个真实对等点(而非自动选择表达式)时, mihomo 会等待 tailnet 后端进入运行状态后再应用出口节点偏好。
  • accept-routes 需主动启用:除非启用它,否则其他节点通告的子网路由会被忽略。

跨内核说明

  • sing-box 将 Tailscale 暴露为端点类型而非出站——它位于 endpoints[] 下, 与 WireGuard 并列,使用 snake_case 字段名。
  • Xray-core 没有 Tailscale 支持。

源码: adapter/outbound/tailscale.go:52-65 · v1.19.27 (5184081)

由 Argsment 出品的 Core Tutorial