ANALYSIS
Tailscale 子路由部署教程
x01 概述
本文介绍如何将 Tailscale 部署为子路由(Subnet Router),使 Tailscale 网络中的其他设备能够访问部署节点所在的局域网,同时实现 NAT 转发和流量代理。
前置条件:已有可用的 Tailscale 账号,部署节点已安装 Tailscale 并完成认证。
x02 核心概念
x02.1 什么是子路由
子路由(Subnet Router)是 Tailscale 中的一种角色,允许将部署节点的局域网网段暴露给整个 Tailscale 网络。其他加入 Tailscale 的设备无需额外配置,即可访问该局域网内的所有设备。
x02.2 关键组件
| 组件 | 作用 |
|---|---|
| Tailscale 客户端 | 接入 Tailscale 网络 |
| IP 转发 | 允许 Linux 内核转发来自 Tailscale 的数据包 |
| 子网路由 | Tailscale 控制台注册的局域网网段 |
| NAT 转发 | 让来自 Tailscale 的流量正确路由到局域网 |
x03 部署步骤
x03.1 安装 Tailscale
PRTCL // BASH
# Debian/Ubuntucurl -fsSL https://tailscale.com/install.sh | sh
# 或者使用一键脚本curl -fsSL https://tailscale.com/install.sh | bashx03.2 启动并认证
PRTCL // BASH
# 启动 Tailscale 服务sudo systemctl start tailscaled
# 首次认证(自动打开浏览器)sudo tailscale upx03.3 配置 IP 转发
第一步:开启 Linux 内核 IP 转发
PRTCL // BASH
# 临时生效(重启后失效)echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# 永久生效echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.confecho 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
# 使配置立即生效sudo sysctl -p /etc/sysctl.d/99-tailscale.conf验证转发是否开启
PRTCL // BASH
cat /proc/sys/net/ipv4/ip_forward# 输出 1 表示成功x03.4 在 Tailscale 控制台注册子网
登录 Tailscale 控制台,执行以下操作:
- 进入 Machines(或 Devices)页面
- 找到部署节点,点击右侧菜单(三个点)
- 选择 Edit route settings
- 启用需要暴露的局域网网段(如
192.168.1.0/24) - 点击保存
注意:如果路由注册后其他设备仍无法访问目标网段,通常是子网路由未在控制台审批批准。
x03.5 启用子路由功能
PRTCL // BASH
# 启用子网路由(advertise)sudo tailscale up --advertise-routes=192.168.1.0/24
# 如果需要作为出口节点(提供 NAT 转发)sudo tailscale up --advertise-exit-nodex03.6 在控制台审批路由
回到 Tailscale 控制台:
- 进入 Machines 页面
- 找到部署节点,点击 Edit route settings
- 将显示
192.168.1.0/24待审批路由 - 勾选该路由并确认
x03.7 验证路由状态
PRTCL // BASH
# 查看当前 Tailscale 状态sudo tailscale status
# 查看路由表(确认子网路由已生效)ip route show | grep tailscalex04 客户端配置
x04.1 自动配置(推荐)
在其他 Tailscale 客户端上(Windows、macOS、iOS、Android),无需任何额外配置。只要子路由在控制台已审批通过,这些设备会自动获取到新路由条目。
x04.2 手动验证连接
PRTCL // BASH
# 在 Tailscale 网络中的任意设备上测试ping 192.168.1.1 # 测试网关ping 192.168.1.215 # 测试局域网内其他设备x04.3 允许特定用户访问子网
在 Tailscale 控制台的 ACLs 中配置:
PRTCL // JSON
{ "acls": [ { "action": "accept", "src": ["group:your-group"], "dst": ["*:192.168.1.0/24:*"] } ]}x05 高级配置
x05.1 使用 Tailscale 作为透明代理
如果需要将特定流量通过 Tailscale 节点转发,可以在该节点配置 tailscaled 的 --tun 模式和 iptables 规则。
PRTCL // BASH
# 启用 Tailscale 的 NAT 模式sudo tailscale up --nat-type=symmetricx05.2 配置 DNS 覆盖
Tailscale 支持通过 MagicDNS 解析局域网设备名,无需手动配置 hosts。
PRTCL // BASH
# 在控制台启用 MagicDNS# 设备名格式:device-name.tail-scale-id.ts.netx05.3 开启流量日志
PRTCL // BASH
# 查看实时流量日志sudo tailscale debug --serve /var/log/tailscale.logx06 常见问题排查
x06.1 其他设备无法访问子网
检查清单:
- 确认
ip_forward已开启 - 确认控制台中路由已审批通过
- 确认目标设备的防火墙未阻止 ICMP/ 其他流量
- 在 Tailscale 网络内执行
tailscale status查看路由是否分发
x06.2 路由注册被标记为 “advertised” 但未生效
PRTCL // BASH
# 重新宣告路由sudo tailscale up --advertise-routes=192.168.1.0/24 --resetx06.3 带宽或延迟异常
- 检查 Tailscale 节点的出口带宽
- 确认 NAT 类型(非对称 NAT 可能影响性能)
- 使用
ping和traceroute定位瓶颈
x06.4 节点重启后 Tailscale 未自动启动
PRTCL // BASH
# 启用 tailscaled 服务自启sudo systemctl enable tailscaledsudo systemctl start tailscaledx07 安全建议
- 最小权限原则:仅注册必要的子网网段
- 定期更新 Tailscale 客户端
- 使用 ACLs 限制访问范围
- 避免在公网暴露不必要的端口
- 定期审计 Tailscale 网络中的设备和路由
x08 相关资源
本文档最后更新于 2026-05-20
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.01.01
Auth_Verified: 2026.01.01
