# Tailcat 全流程实验报告

实验日期为 2026 年 8 月 30 日。GitHub Trending 全球 Today 前三名 Archify、God’s Eye View 和 Scientific Agent Skills 已经在剑的 AI 实验室完成实验，因此按去重规则选择第 4 名 `tailscale/tailcat`。

## 实验目标

验证 Tailcat 能否在不登录 Tailscale 账号、不修改系统路由的条件下完成以下工作。

1. 从官方源码编译 CLI。
2. 运行核心令牌、网络格式、SOCKS 地址和 Web demo 测试。
3. 生成一组服务端与客户端密钥。
4. 把服务端连接令牌解析成可核验的 WireGuard 公钥和 DERP 信息。
5. 尝试完整集成测试，并保留环境限制。

## 环境

- Linux x86_64 容器
- 官方源码提交 `a34089b378fea36d49ea2276d83b9237a32bb338`
- 项目要求 Go 1.26.5
- 本地安装并校验 `go1.26.5.linux-amd64.tar.gz`
- 官方压缩包 SHA-256 `5c2c3b16caefa1d968a94c1daca04a7ca301a496d9b086e17ad77bb81393f053`

## 真实过程

首轮直接运行官方 Go 流程失败，环境返回 `go: command not found`。随后下载官方 Go 1.26.5 压缩包，校验 SHA-256 后解压到实验目录，没有修改系统 Go 环境。

第二轮运行 `go test ./... -count=1`。Web 和 Web demo 部分通过，但 6 组需要完整网络能力的集成测试失败。主要错误为 `netlinkrib: operation not permitted`。容器不允许读取所需的 netlink 路由信息，`TestPipeMode` 和 `TestSOCKSClientKey` 随后在自动选择 DERP 区域时触发空指针。这说明完整双端链路没有在本环境里跑通，不能写成端到端传输成功。

第三轮先编译 CLI，再挑选不依赖受限 netlink 能力的核心测试。CLI 编译成功，版本输出为 `v0.2.0`。11 组顶层测试通过，覆盖连接令牌编解码、畸形公钥拒绝、DERP map 内存缓存、网络字段、SOCKS 地址分类、SSH 目标解析、监听地址规范化和 Web demo handler。

第四轮使用自定义 DERP 主机名 `derp.example.com` 生成服务端密钥和连接令牌，随后用官方 `parse` 子命令解析。结果包含一枚 Curve25519 WireGuard 公钥和自定义 DERP 节点信息。实验还生成了客户端公钥并确认两组密钥能被 CLI 列出。私钥仅存在隔离工作目录，没有进入公开收成包。

## 结果

- 官方源码克隆成功。
- 官方 Go 1.26.5 下载并通过 SHA-256 校验。
- Linux amd64 CLI 编译成功，产物 30,393,371 字节。
- CLI 版本为 `v0.2.0`。
- 11 组无特权核心测试通过。
- 服务端连接令牌生成成功。
- 连接令牌解析成功，公开字段与预期一致。
- 完整测试集退出码为 1，6 组网络集成测试未通过。
- 未完成两台真实设备之间的文字、文件、端口、SSH 或 SOCKS5 传输。

## 结论

Tailcat 的源码、CLI 构建、连接令牌、密钥和一组核心逻辑已经在本实验中真实运行。它提供的核心方向很清楚，双方交换一个短令牌后，可以借 Tailscale 的数据平面建立 WireGuard 加密连接，默认还能使用限速的免费 DERP 中继，而且不要求 Tailscale 账号或 root 权限。

本次环境缺少完整 netlink 权限，端到端传输没有完成。最适合下一步复测的是两台普通电脑或一台电脑加一台云主机，分别运行服务端和客户端，记录 DERP 中继、直连升级、文件校验值和实际延迟。

## 来源

- https://github.com/tailscale/tailcat
- https://github.com/trending?since=daily
- https://x.com/Tailscale

