Skip to content

Tailscale Root v0.6.3

Choose a tag to compare

@RyanRaw RyanRaw released this 30 Oct 14:33
· 16 commits to master since this release

KernelSU / Magisk / APatch 模块:把 tailscaled 以 root 守护进程方式常驻运行在 Android 上,并内置 WebUI 管理。

本版亮点

  • 子网重叠自动避让:对端 advertise 的网段(如 192.168.4.0/24)与本机当前所在局域网重叠时,自动 --accept-routes=false,本地路由器 / NAS / 打印机恢复直连;离开该网段后自动恢复。按 CIDR 位比较而非字符串近似,只撤销自己做的切换(标记文件 .accept_routes_auto)。设置页可单独关闭(TS_ROUTE_GUARD=0)。
  • 标签页切回时自动刷新数据。

修复

  • 真实 DNS 被公共 DNS 覆盖:update_resolv.sh --quick 在网络未变化、net.dns* 为空时会落到 223.5.5.5 兜底并写文件,把全量探测拿到的真实上游(如路由器 192.168.4.21)在 5 分钟内覆盖掉。现在按默认路由指纹(table/dev/gateway)判断,网络没变就保持现状,只有换网才重新探测。
  • 静默级别不静默:TS_LOGLEVEL=quiet 只关闭了 --verbose,tailscaled 仍在写日志。现在守护进程输出丢弃到 /dev/null,启动快照与定时网络快照也不再采集(状态页「抓取」仍可手动采集)。
  • 日志页清空无效:原来只清空前端数组,跟随刷新后立刻回填。现在真正截断文件;用 truncate 而非 rm,因为守护进程持有该 fd,删除后它会继续写已删除的 inode,日志页再也读不到。
  • tailscaled.log 无上限:原来只在守护进程启动时检查 2 MB。现在看门狗每 5 分钟检查一次,并用 copytruncate 滚动(mv 会让运行中的进程继续写改名后的文件)。
  • 安装页看不出「离线包不可用」的原因:「内置版本」改名为「离线包」,不可用时直接说明原因(当前安装包不含二进制 / 包内文件不完整 / 架构未知);在线安装完成后会重新读取状态,并提示离线包未被更新——在线安装只写 /data/adb/tailscale/bin/,之前那一行永远不变,看起来像安装失败。
  • 保存设置后立即按新配置重写 resolv.conf,清空 TS_DNS 不再残留旧值。

改进

  • 暗色主题下开关增加描边,未选中状态也能看清(light-dark() 跟随主题的 color-scheme)。
  • 移除状态页两个手动「修复」按钮(网络路由 / src_valid_mark):看门狗已自动覆盖,手动入口只是重复劳动,且 src_valid_mark 是全局内核参数、误点影响面更大。
  • 看门狗周期 15s → 30s,每轮 fork 的进程数减半(实测 CPU 0.20% → 0.10%),健康检查只取自身状态(--peers=false)。

升级

覆盖安装即可,/data/adb/tailscale/env 配置与已注册状态保留。

提醒:TS_WAKELOCK=1(默认)会持有内核唤醒锁,熄屏期间保持数据面可用,代价是待机耗电上升。介意续航可在设置页关掉「唤醒锁」,代价是熄屏后连接会停摆。