Skip to content

Tailscale 子网路由与当前 Wi‑Fi 同网段时发生冲突,导致 Shadowrocket 外网异常 #28

Description

@sd4142395

问题描述

Shadowrocket 内置 Tailscale 全局隧道模组启用“使用 Tailscale 子网”后,如果当前 Wi‑Fi 的本地网段与 tailnet 中已广播并批准的子网路由相同,会出现路由冲突。

我的家庭局域网是 192.168.31.0/24,tailnet 中也有一台 subnet router 广播并已批准 192.168.31.0/24。

实际现象

  • 蜂窝网络下:

    • 开启 Shadowrocket 内置 Tailscale
    • 开启“使用 Tailscale 子网”
    • 可以正常访问家里的 192.168.31.x
    • Tailnet 的 100.x.x.x 节点也可以正常访问
  • 回到家中 Wi‑Fi(本地网段同样为 192.168.31.0/24):

    • 只要“使用 Tailscale 子网”保持开启,Shadowrocket 的正常外网访问会异常,Google 等代理流量无法正常使用
    • 本地 192.168.31.x 仍可访问
    • 即使切换到家里的主路由、绕开 OpenClash,问题仍存在
    • 关闭“使用 Tailscale 子网”后立即恢复正常
  • 使用官方 Tailscale iOS 客户端时:

    • 同一个 tailnet
    • 同一个 subnet router
    • 同一个 192.168.31.0/24
    • 在外和回家连接同网段 Wi‑Fi 都可以正常工作,没有上述冲突

因此看起来更像是 Shadowrocket 内置 Tailscale 在接受 subnet routes 时,没有正确处理“当前本地直连网段”和“远端已接受子网路由”重叠的优先级。

复现步骤

  1. 在 tailnet 中准备一台 subnet router,广播并批准:
    192.168.31.0/24
    
  2. 在 iPhone 的 Shadowrocket 中启用内置 Tailscale。
  3. 开启“使用 Tailscale 子网”。
  4. 使用蜂窝网络访问 192.168.31.x,可正常访问。
  5. 再连接一个本地网段同样为 192.168.31.0/24 的 Wi‑Fi。
  6. 保持“使用 Tailscale 子网”开启。
  7. 此时 Shadowrocket 的普通代理外网访问异常。
  8. 关闭“使用 Tailscale 子网”,网络立即恢复。

期望行为

当设备已经直接连接到与已接受 subnet route 相同的本地网段时,应优先使用本地直连路由,或至少不应影响 Shadowrocket 的普通代理流量。

官方 Tailscale iOS 客户端在相同环境下可以正常处理这一情况。

补充

这个开关对应的是接受/使用 tailnet 中其他设备广播的 subnet routes,并不是本机声明子网路由。

问题与配置文件本身关系不大:切回默认配置后仍可复现。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions