项目/网络基础设施
网络基础设施 · 运行中 · AI 自动收录

Tailscale 为主的同名访问方案与验收

Tailscale 为主的同名访问方案与验收

以 Tailscale 路由与 split DNS 让内网服务沿用原域名,完成验收并准备收网。

✦ 同名访问加 Tailscale 路由可行,服务端零改动,已完成验收,待 split DNS 与收网。
约 4 分钟阅读
TailscaleSplit DNSNPMAuthelia内网访问验收
← 返回列表

本项目记录「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。

技术栈

TailscaleSplit DNSAdGuard HomeNPMAutheliafrpTLS

使用 / 部署教程

以下步骤依据 2026-10-31 记录整理;Tailscale 管理台菜单名称可能随版本变化。

  1. 先补齐 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 条重写未受影响。
  1. 在 Tailscale 管理台配置 split DNS。进入 DNS → Nameservers → Add nameserver → Custom,填入只对 tailnet 提供解析的内网 DNS;然后在 Split DNS 中把 xiejun-server.top 指向该 nameserver。记录建议在 .164 起一个仅监听 tailnet 的 dnsmasq,把该域固定解析到 100.91.208.124。
  1. 在客户端验证同名访问。保持原域名不变,确认解析到 Tailscale IP 后访问 https://xiejun-server.top。可用 curl --resolve <host>:443:100.91.208.124 做对照验证。
  1. 验证门禁与 SSO。先对真实域名请求 POST /auth/api/firstfactor 获取 authelia_session,再对 tailnet IP 带同一 cookie 访问 git、memory、chat,检查是否返回 200。
  1. 收网与回滚。确认无误并经确认后,关闭公网 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 位主力机到货后再装。

评论

加载中…