本项目记录「Tailscale 为主」的访问方案与验收结果。目标是在不修改服务端、不破坏现有 cookie 域与 SSO 的前提下,让客户端继续使用 xiejun-server.top、git.xiejun-server.top、memory.xiejun-server.top、chat.xiejun-server.top 等原域名,只把域名解析结果从公网 IP 改为 NAS 的 Tailscale IP 100.91.208.124。
可行性来自 NPM 在 .164 上监听 0.0.0.0:443,tailscale0 与 NPM 同机,因此经 tailnet 访问 100.91.208.124:443 时 SNI、证书、TLS、Authelia 门禁与 cookie 域保持一致。2026-10-31 已用匿名与带 Authelia 会话两种方式验收:公网域名与 tailnet 路径状态码一致,带同一 session 的 git、memory、chat 均可穿门禁返回 200。
当前还差两步:在 Tailscale 管理台配置 split DNS;确认后关闭不必要的公网入口,仅保留 blog 与应急入口。补充排查发现 AdGuard 需先补齐 blog/git/pan/vault/video/chat 的 DNS 重写,否则 split DNS 后仍会走公网解析。
功能
- 原域名访问:不改客户端 hub_url,解析切换为 Tailscale IP。
- 服务端零改动:NPM、证书、Authelia 与会话链路保持一致。
- 同名 + split DNS:tailnet 内设备按域名走隧道访问家中服务。
- SSO 验收:同一 authelia_session 在 tailnet 路径上仍有效。
- 可回滚:split DNS 为增量配置;NPM/FRP 配置已备份。
- 收网准备:公网仅保留 blog 与应急入口,其余只走 tailnet。
技术栈
使用 / 部署教程
以下步骤依据 2026-10-31 记录整理;Tailscale 管理台菜单名称可能随版本变化。
- 先补齐 DNS 重写。在 AdGuard Home 配置中为
blog / git / pan / vault / video / chat等*.xiejun-server.top增加指向192.168.50.164的重写。记录中采用docker stop → 修改 AdGuardHome.yaml → docker start,并先备份AdGuardHome.yaml.bak-<ts>-rewrites。完成后查询确认这些名字返回.164,并检查原有 6 条重写未受影响。
- 在 Tailscale 管理台配置 split DNS。进入
DNS→Nameservers→Add nameserver→Custom,填入只对 tailnet 提供解析的内网 DNS;然后在Split DNS中把xiejun-server.top指向该 nameserver。记录建议在.164起一个仅监听 tailnet 的 dnsmasq,把该域固定解析到100.91.208.124。
- 在客户端验证同名访问。保持原域名不变,确认解析到 Tailscale IP 后访问
https://xiejun-server.top。可用curl --resolve <host>:443:100.91.208.124做对照验证。
- 验证门禁与 SSO。先对真实域名请求
POST /auth/api/firstfactor获取authelia_session,再对 tailnet IP 带同一 cookie 访问git、memory、chat,检查是否返回 200。
- 收网与回滚。确认无误并经确认后,关闭公网 443 上不必要的 vhost,仅保留
blog.xiejun-server.top与应急入口。NPM/FRP 配置已备份,单条 vhost 可秒级恢复;split DNS 删除 nameserver 即可回滚。
常见问题
为什么不用 *.ts.net 证书?
Authelia 会话 cookie 域固定为 xiejun-server.top,改用 *.ts.net 会导致 cookie 域不匹配、SSO 断开;本期采用同名 + split DNS。
客户端需要改代码吗?
不需要。客户端只认 hub_url,名字到 IP 的解析交给系统。
收网后公网还能访问什么?
目标仅保留 blog.xiejun-server.top 与一个应急入口;其余服务只走 tailnet。
split DNS 配好后为什么还要改 AdGuard?
实测 AdGuard 原本只重写 6 个名字,blog/git/pan/vault/video/chat 仍走公网解析;不补齐会继续绕公网,收网后不可达。
注意
- split DNS 仅影响 tailnet 内设备,公网解析不受影响,属纯增量配置。
- 若改用
*.ts.net专用 TLS 名,Authelia cookie 域不匹配会导致 SSO 断开,本期未启用。 - Android 7.1 的 Find5 目前未装 Tailscale,仍走内网/公网域名;64 位主力机到货后再装。

评论
加载中…