Files
homelab-wiki/services/tailscale.md
T

63 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Tailscale 远程访问指南
lifecycle: unknown
evidence: documented
last_reviewed: 2026-09-16
last_verified: null
---
# Tailscale
Tailscale 提供远程访问 homelab 的网络路径。维护者于 2026-09-16 表示没有需补充的动态事项;
本页根据 `apps/tailscale/subnet-routes.sh` 和共享 PostgreSQL Service 配置整理。
未读取含 OAuth 值的安装脚本,也未查询 tailnet、路由批准状态或现场连通性。
## 两种访问路径
| 路径 | 来源记录的用途 |
|---|---|
| laptop 子网路由 | 访问 LAN 与两个 SDN 网段中的原有地址 |
| Kubernetes operator 暴露 Service | 为特定 Service 提供 tailnet 入口,例如共享 PostgreSQL |
子网脚本将 laptop(LAN 地址 `192.168.10.127`)记录为唯一子网路由器,声明以下完整路由集合:
- `192.168.10.0/24`:homelab LAN。
- `10.60.0.0/24`:SDN labnet。
- `10.61.0.0/24`:SDN retronet。
operator 管理的 Service 入口不能直接视为新的通用子网路由器。
子网路由可达也不等于拥有所有目标服务的应用权限。
## 第一次从远程客户端访问
1. 在自己的客户端登录维护者指定的 tailnet,完成该设备所需的批准流程。
2. 确认客户端接受子网路由。Linux 客户端需要时可执行下面的设置;它改变本机路由接受配置。
3. 打开已有权限的 LAN 服务,例如 [Grafana](grafana.md)。域名还须通过适当的 DNS 配置解析。
```bash
sudo tailscale set --accept-routes=true
```
客户端行为见 [Tailscale 子网路由文档](https://tailscale.com/docs/features/subnet-routers)。
服务登录仍按该服务自己的流程进行。
如果访问 operator 暴露的 Service,使用维护者提供的 tailnet 地址;
不要把 Kubernetes `.svc.cluster.local` 名称当成远程客户端已经可解析的名称。
## 路由、DNS 与权限分别检查
“客户端已登录”“路由已广播”“路由已批准”“访问规则允许”和“目标服务可用”是不同条件。
LAN 的 [Blocky / 路由器 DNS 设计](lan-dns.md) 不自动证明远程客户端已获得相同解析配置。
IP 可达而域名失败时,先查看远程客户端 DNS 路径,不直接改 LAN DNS。
脚本记录两个 SDN 网段由 laptop 从 VyOS 通过 OSPF 学习。
即使 Tailscale 仍广播这两个前缀,底层 OSPF 路由缺失也会导致转发失败。
新增路由还需 tailnet 批准及访问规则配合,单看广播配置不足以验收。
`apps/tailscale/subnet-routes.sh` 是维护端脚本,`--advertise-routes` 替换完整集合;
普通客户端接入无需执行它。新增网段时按完整声明审查,避免意外移除既有路由。
现有脚本提供批准信息的查看方法;执行现场检查前仍需按本库规则对齐范围。
依赖为 Tailscale 控制与数据路径、laptop 转发及目标网络;SDN 另依赖 VyOS/OSPF,
operator Service 另依赖 Kubernetes 和 operator。
本页没有记录 tailnet OAuth、设备密钥或凭据内容。