每次更新,都有迹可循。
TSLink v0.1.1 的安全更新与升级说明
2026/10/09
安全更新。命令、标志和已存储的数据与 0.1.0 保持一致。
brew upgrade --cask anydoor7/tap/tslink。其他安装方式:从本次发布下载新的归档或软件包。tslink install,让服务启动新二进制。govulncheck -mode=binary 报告其中包含涉及 12 项安全公告的标准库漏洞符号:GO-2026-6599、GO-2026-6600、GO-2026-6603、GO-2026-6605、GO-2026-6607、GO-2026-6608、GO-2026-6609、GO-2026-6610、GO-2026-6611、GO-2026-6612、GO-2026-6613 和 GO-2026-6617。这些问题涵盖 HTTP/2 服务器崩溃、资源耗尽和流量控制错误,畸形标头导致的 HTTP/2 响应走私,CONNECT 后的 HTTP/1 连接失同步,Range 请求头解析缺少大小限制,MIME 标头内存限制绕过,html/template 转义问题,以及 crypto/tls 中畸形 ECH 扩展引用。使用 Go 1.27.2 后,在 macOS arm64 上对 0.1.1 源码运行 govulncheck ./...,未报告可达漏洞。tailscale.com 更新至 v1.104.1,golang.org/x/net 更新至 v0.60.0。tslink manifest --json 会报告这一最低版本。TSLink 首次公开版本的变更与兼容性说明
2026/10/06
首次公开发布。TSLink 为你电脑或服务器上的每个应用提供 Tailscale 网络中独立的私有地址,无论是 Web 应用、文件夹、单个文件还是 TCP 端口,都能从你自己的设备访问。谁还能访问,由你决定:你指定的人员、持有到期链接的浏览器访客,或仅在你明确选择时开放的公共互联网。你可以亲自通过 CLI 操作,也可以让 AI agent 通过 MCP 操作。TSLink 需要 Tailscale 账号,是一个独立项目,并非由 Tailscale 制作或背书。
.deb 与 .rpm 软件包,以及适用于 macOS 和 Linux 的 Homebrew cask:brew install --cask anydoor7/tap/tslink。checksums.txt 和 SBOM 附带 Sigstore 签名,每个发布资产都有 GitHub 构建来源证明。参见验证发布资产。从源码构建需要 Go 1.26.6 或更高版本。tslink share 3000、tslink share ./photos 或 tslink share ./report.html 为 Web 应用、文件夹或单个文件提供 tailnet 内独立的 HTTPS 地址。tslink add <name> --tcp <port> 为 TCP 服务提供同样的独立地址。每个应用在同一个后台 daemon 中运行自己的嵌入式 Tailscale 节点。tslink install 让 daemon 在登录时启动:macOS 使用 LaunchAgent,Linux 使用 systemd 用户服务,Windows 使用用户级计划任务(--startup 改用 Startup 文件夹)。tslink apps detect 查找本机正在监听的应用;tslink apps share <recipe> 先预览注册内容,加上 --yes 才应用。--max-request-body 和超时),以适应较大或较慢的上传。默认请求体上限为 32 MiB。tslink people add alice@example.com --apps photos,finance --for 7d 允许该 Tailscale 登录身份在期限内访问指定的 Web 和文件应用。people update、extend 和 people remove 可修改或撤销访问。--invite --print-links 可为 tailnet 外的人员附加设备邀请(需要用户拥有的 API token),--qr 输出手机设置二维码。tslink guest create photos --for 3d --public --print-link 为 Web 应用创建会到期的浏览器链接,也可设置 PIN。访客无需 Tailscale 账号。链接通过 Tailscale Funnel,并受强制访客门控保护。持有链接的人都能使用;TSLink 只保存链接的哈希。--funnel --public,仅支持 Web 应用且始终有到期时间,默认 24 小时,最长 7 天,除非你提高 durations.public_max。90m、36h、3d、1w、1d12h 或 until 2030-06-01。最短为一小时。只有 tailnet 成员可以获授 never,并且必须加上 --ack-never。tslink portal enable --owner you@example.com 在独立的 tailnet 节点上启动私有主页。每位访客只能看到自己可以打开的应用,以及应用的健康状态和访问期限。--requestable 注册的应用可供申请。通过 tslink requests approve <id> --for 3d 或 tslink requests deny <id> 作出决定;新申请可以触发告警。status、list --verbose、doctor 和门户中报告 healthy、degraded、down 或 unknown。status 和 doctor 会在节点密钥到期前 14 天和 3 天发出提醒。alerts.json 中配置的 webhook。tslink access log 显示谁在何时访问了哪个应用,包括被拒绝的请求,并提供按人员和应用汇总的结果。默认只记录路径的第一段;tslink access path 可按应用修改这一设置。tslink mcp 外,都支持 --json,返回带版本的 tslink.result envelope;Cobra 的 help 和 completion 不在 manifest 中,只输出纯文本。tslink manifest --json 列出这些命令及其标志、退出码和错误码。tslink mcp 通过 stdio 提供 MCP server。tslink serve --mcp 在独立的、仅限 tailnet 的节点上增加远程 MCP endpoint,绝不会通过 Funnel 公开。viewer、app-operator 和 people-manager 角色把 agent 限制在指定应用、固定工具集与最长授权期限内,owner 则保留完整控制权。本地使用 tslink mcp --scope,远程调用方使用 mcp.bindings,由 Tailscale 登录身份或 tag 识别。tslink mcp-audit 读取通过 MCP 作出的变更日志。link_local_target_refused),也拒绝会暴露 TSLink 配置目录的文件分享(path_exposes_config_dir)。Tailscale-* 和 X-Tailscale-* 身份头,再添加由 Tailscale 提供的调用方身份。tslink remove 和清理操作只有在 TSLink 记录了该设备确实归自己所有时,才会删除对应的 tailnet 设备。mcp.allow_elevated_invites。后续 0.x 版本将保留以下公开自动化与数据契约:
--json 保留 tslink.result envelope,以及 type、ok、schema_version、command、code、data 和 error 字段。可选的 data、error 和 error.next 继续保持可选;允许新增字段。data 字段保持原有含义;允许新增字段和警告。公开视图的 data.schema_version 保持为整数。tslink manifest --json 从这一映射生成 error_codes。registry.json schema 1 和 2 以及已知的 config.json key 仍可读取;允许新增字段。升级前请运行 registry check。isError: true 的工具结果,包含一个 JSON 文本失败对象(code、message、next 和可选 data),且没有 structuredContent;schema 参数错误使用 usage_error。每个工具继续保留四项行为注解。--json。runtime.json 及其他 daemon/CLI 状态文件属于私有接口。