Tailscale 使用指南:从安装到高级功能详解
引言:告别传统 VPN 的繁琐,拥抱 Tailscale 的优雅
在数字化的今天,我们拥有越来越多的设备:笔记本电脑、台式机、手机、平板,甚至是树莓派或NAS。我们不仅需要在这些设备之间安全地共享文件、访问远程服务,还需要无论身在何处都能方便地连接回自己的网络。传统的解决方案,如配置 OpenVPN 或 IPsec VPN,往往涉及到复杂的服务器设置、防火墙规则、证书管理以及动态IP处理,对于非专业人士来说门槛很高,即使是专业人士,也可能耗费大量时间和精力。
Tailscale 正是为了解决这些痛点而诞生的。它基于 WireGuard® 协议构建,提供了一种零配置的、安全的、点对点的私有网络解决方案。简单来说,Tailscale 创建了一个属于你自己的虚拟网络(称为 Tailnet),将你的所有设备连接起来,无论它们身处何地,使用什么网络。在这个 Tailnet 中,每台设备都被赋予一个唯一的 IP 地址(通常是 100.x.y.z/8 网段),并且可以直接相互通信,仿佛它们都在同一个局域网中。
与传统中心化的 VPN 不同,Tailscale 采用的是网状网络(Mesh Network)架构。大多数连接是设备之间的直接点对点连接。只有当点对点连接因防火墙或NAT等原因无法建立时,流量才会通过 Tailscale 的中继服务器(称为 DERP)中转,但数据本身始终是端到端加密的。这种设计不仅提供了更高的性能和更低的延迟,还大大增强了网络的健壮性和可用性。
Tailscale 的核心优势在于其极致的易用性和强大的功能性:
- 零配置: 大部分情况下,只需安装客户端并登录即可。
- 基于身份: 使用你已有的身份提供商(如 Google、Microsoft、GitHub 等)进行认证,无需单独管理用户密码。
- WireGuard 加密: 提供现代、快速且安全的加密连接。
- 跨平台支持: 覆盖主流操作系统(Windows, macOS, Linux, iOS, Android)和更多平台(NAS, Raspberry Pi, Docker 等)。
- 丰富的高级功能: 子网路由、出口节点、ACL、SSH、HTTPS 证书、Funnel 等,满足各种复杂的网络需求。
本文将带您从零开始,一步步了解 Tailscale 的使用,从基础安装连接,到深入理解其核心概念,再到掌握各种高级功能,让您充分利用 Tailscale 构建自己的安全、高效的私有网络。
第一部分:入门 – 安装与连接设备
Tailscale 的入门过程非常简单,主要包括注册账号、安装客户端和登录连接设备。
步骤 1:注册 Tailscale 账号
访问 Tailscale 官方网站:https://tailscale.com/
点击页面上的 “Get Started” 或 “Sign Up”。Tailscale 不使用传统的用户名和密码,而是依赖于现有的身份提供商进行认证。你可以选择使用 Google、Microsoft、GitHub、Apple 等账号登录。推荐使用你最常用的、安全的账号进行注册。
首次登录后,你将被引导进入 Tailscale 的 Admin Console(管理控制台)。这里是你管理 Tailnet 中所有设备、用户、ACL 等设置的地方。
步骤 2:安装 Tailscale 客户端
Tailscale 支持广泛的平台。请根据你想要连接的设备类型,选择对应的安装方式。
Windows
- 访问 Tailscale 下载页面:https://tailscale.com/download/windows
- 下载最新的 Windows 安装程序(
.exe
文件)。 - 运行下载的文件,按照安装向导完成安装。安装过程很简单,通常只需同意许可协议并选择安装位置。
- 安装完成后,Tailscale 会自动启动并在系统托盘区显示一个图标。
- 点击托盘图标,选择 “Log in…”。
- 这将打开浏览器,跳转到 Tailscale 认证页面。使用你在步骤 1 注册时使用的身份提供商账号登录。
- 成功登录后,浏览器会显示一个确认页面,提示你可以关闭页面并返回 Tailscale 应用。
- 回到 Windows 桌面,Tailscale 托盘图标会显示已连接状态。在系统托盘菜单中,你可以看到设备的 Tailscale IP 地址,以及 Tailnet 中的其他在线设备。
macOS
- 访问 Tailscale 下载页面:https://tailscale.com/download/mac
- 下载最新的 macOS 安装程序(
.dmg
文件)。 - 打开下载的
.dmg
文件,将 Tailscale 应用拖拽到 “Applications” 文件夹。 - 打开 Launchpad 或 Applications 文件夹,找到 Tailscale 应用并运行它。
- 首次运行时,可能需要授予一些系统权限(如网络扩展)。请按照提示进行操作。
- Tailscale 会在菜单栏显示一个图标。点击图标,选择 “Log In…”。
- 同样,这将打开浏览器进行认证。使用你的身份提供商账号登录。
- 登录成功后,菜单栏图标会显示已连接状态,并显示设备的 Tailscale IP 地址和其他设备。
Linux
Linux 的安装方式因发行版而异,Tailscale 提供了软件源,方便安装和更新。
以 Debian/Ubuntu 为例:
- 打开终端。
- 添加 Tailscale 软件源的 GPG 密钥:
bash
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
注意: 将jammy
替换为你对应的 Ubuntu 版本代号(如 focal, jammy, mantic 等)。对于 Debian,使用buster
,bullseye
,bookworm
等。如果你不确定,可以访问 https://pkgs.tailscale.com/stable/ 查看支持的发行版和代号。 - 添加 Tailscale 软件源到 sources list:
bash
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.list | sudo tee /etc/apt/sources.list.d/tailscale.list
注意: 同样将jammy
替换为你对应的版本代号。 - 更新软件包列表并安装 Tailscale:
bash
sudo apt update
sudo apt install tailscale - 启动 Tailscale 服务并连接到你的 Tailnet:
bash
sudo tailscale up - 执行
tailscale up
命令后,终端会输出一个认证链接。复制这个链接并在浏览器中打开,使用你的身份提供商账号登录。 - 认证成功后,终端会显示连接成功的提示。
- 你可以使用
tailscale status
命令查看当前连接状态和 Tailnet 中的设备。
对于其他 Linux 发行版(如 Fedora, CentOS, Arch Linux 等),请参考官方文档的安装指南:https://tailscale.com/download/linux。
iOS/Android
- 在 App Store (iOS) 或 Google Play Store (Android) 中搜索 “Tailscale”。
- 下载并安装 Tailscale 应用。
- 打开应用,点击 “Sign in with…” 按钮,选择你的身份提供商账号登录。
- 登录成功后,应用会显示已连接状态,你可以看到你的 Tailscale IP 地址和 Tailnet 中的其他设备。
- 在设置中,你可以启用 “Connect On Demand”(iOS)或 “Always-on VPN”(Android),让 Tailscale 在网络可用时自动连接。
其他平台 (NAS, Docker, Raspberry Pi etc.)
Tailscale 提供了针对各种设备的安装包和指南。例如,许多 NAS(如 Synology, QNAP)都有官方或第三方提供的 Tailscale 套件。对于 Docker,有官方的 tailscale/tailscale
镜像。对于 Raspberry Pi,可以使用标准的 Linux 安装方法。具体请参考 Tailscale 官方下载页面和文档。
步骤 3:连接更多设备并验证连接
重复步骤 2,在你想要加入 Tailnet 的所有设备上安装并登录 Tailscale 客户端。每当你登录一个新设备,它就会自动加入你的 Tailnet,并在 Admin Console 中显示为一个新的节点。
在 Admin Console 的 “Machines” 页面,你可以看到所有已连接的设备列表,包括它们的名称、Tailscale IP、操作系统、上次在线时间等信息。
验证连接:
在任何一个已连接 Tailscale 的设备上,你可以尝试访问 Tailnet 中的其他设备。最简单的方式是使用 ping
命令或 SSH/RDP 连接。
例如,如果你有两台设备:my-laptop
和 my-server
,并且它们都已连接到 Tailscale。
- 在 Admin Console 中找到
my-server
的 Tailscale IP 地址(例如:100.10.20.30)或其 Magic DNS 名称(例如:my-server
)。 - 在
my-laptop
上打开终端或命令提示符。 - 尝试 ping
my-server
的 Tailscale IP 或名称:
bash
ping 100.10.20.30
# 或者如果 Magic DNS 已启用
ping my-server
如果 ping 命令成功收到回复,说明这两台设备已经在 Tailnet 中成功连接并可以直接通信了。
通过以上步骤,你就已经成功建立了一个基本的 Tailscale 私有网络,你的所有设备现在可以安全地相互访问了。
第二部分:深入理解 Tailscale 核心概念
Tailscale 不仅仅是一个简单的 VPN,它引入了一些独特的概念,理解它们有助于更好地利用 Tailscale 的强大功能。
1. Tailnet(你的私有网络)
Tailnet 是 Tailscale 的核心概念,它代表了由你的账号(或组织)控制的所有设备组成的虚拟私有网络。每当你使用同一个账号登录 Tailscale 客户端时,这台设备就会加入到这个 Tailnet 中。在同一个 Tailnet 中的设备可以直接相互访问,就像在同一个局域网一样,即使它们物理上分布在全球各地,连接着不同的网络。
2. Magic DNS(神奇的 DNS)
默认情况下,Tailscale 会为 Tailnet 中的每台设备分配一个唯一的、可读的名称(通常基于设备的主机名)。启用 Magic DNS 后,Tailscale 会为你配置 DNS 设置,使得你可以通过设备的名称直接访问它,而无需记住复杂的 Tailscale IP 地址。
例如,如果你的服务器名称是 my-server
,在启用 Magic DNS 后,你可以直接 ping my-server
或 ssh my-server
,而不是 ping 100.10.20.30
。
启用 Magic DNS:在 Admin Console 的 “DNS” 设置页面,勾选 “Enable Magic DNS”。你还可以选择使用 Tailscale 的 DNS 服务器作为你 Tailnet 的默认 DNS 服务器,或者将其作为辅助 DNS 服务器。
3. Subnet Routers(子网路由器)
这是 Tailscale 一个非常强大的功能,允许你通过 Tailscale 网络访问未安装 Tailscale 的本地网络设备。
想象一下这种情况:你的家庭网络有 NAS、智能家居设备、打印机等,它们都没有安装 Tailscale 客户端。你有一台安装了 Tailscale 的电脑(例如你的台式机或树莓派)连接在这个家庭网络中。通过将这台电脑配置为“子网路由器”,它可以将整个家庭网络的子网(例如 192.168.1.0/24)路由到你的 Tailnet 中。
配置步骤(在 Admin Console 中):
- 确保作为子网路由器的设备已经安装并连接 Tailscale。
- 在那台设备上,打开终端或命令提示符,运行命令来宣告要路由的子网。例如,如果你的家庭网络是 192.168.1.0/24:
bash
tailscale up --advertise-routes=192.168.1.0/24
如果你有多个子网需要路由,可以用逗号分隔:--advertise-routes=192.168.1.0/24,10.0.0.0/24
- 回到 Admin Console 的 “Machines” 页面。找到刚才运行命令的设备。你会看到它有一个提示,表示它正在宣告路由。点击旁边的三个点菜单,选择 “Edit route settings”。
- 在这里,你会看到它宣告的子网列表。勾选你想要在 Tailnet 中可访问的子网,然后保存。
- 现在,你的 Tailnet 中的其他设备就可以通过这台子网路由器访问 192.168.1.0/24 网络中的设备了(例如,你可以 ping 192.168.1.1)。
注意: 运行 tailscale up --advertise-routes
命令通常需要管理员或 root 权限。子网路由器的设备需要在其本地网络中允许来自 Tailscale IP 段的流量(通常不需要特殊配置,因为流量看起来像是从路由器本身发出的)。
4. Exit Nodes(出口节点)
出口节点允许你将设备的所有互联网流量通过 Tailnet 中的另一台设备路由出去。这类似于传统的中心化 VPN 功能。
使用场景:
- 在你连接到不受信任的网络(如公共 Wi-Fi)时,将流量通过家里的设备路由,提高安全性。
- 访问受地理位置限制的内容。
- 隐藏你的真实 IP 地址。
配置步骤(在 Admin Console 中):
- 选择一台设备作为出口节点(例如,你的家庭服务器)。这台设备需要稳定的网络连接和足够的上传带宽。
- 在那台设备上,打开终端或命令提示符,运行命令将其标记为可作为出口节点:
bash
tailscale up --advertise-exit-node
同样,这通常需要管理员或 root 权限。 - 回到 Admin Console 的 “Machines” 页面。找到刚才运行命令的设备。编辑其路由设置,你会看到一个新的选项,允许你启用它作为出口节点。勾选并保存。
- 现在,在你的 Tailnet 中的任何其他设备上,打开 Tailscale 客户端。在设置或菜单中,你会看到一个选项,允许你选择刚才配置的设备作为“出口节点”。选择它并连接。
- 连接成功后,检查你的设备公网 IP 地址,你会发现它变成了你出口节点设备的公网 IP 地址。所有互联网流量都将通过该节点传输。
注意: 同一时间只能使用一个出口节点。
5. ACLs(访问控制列表)
ACLs 是 Tailscale 强大的安全功能,允许你精确控制 Tailnet 中哪些用户(基于身份提供商)可以访问哪些设备、哪些端口或哪些子网。默认情况下,Tailscale ACLs 允许同一身份提供商下的所有用户访问所有设备的所有端口。对于大多数个人或小团队来说,这可能已经足够。但随着设备和用户的增多,或者出于安全考虑,你可能需要更细粒度的控制。
ACLs 使用 JSON 格式进行配置,在 Admin Console 的 “Access Controls” 页面进行编辑。
基本的 ACL 结构:
json
{
"ACLs": [
// 允许所有用户访问所有设备和所有端口(默认规则)
{
"Action": "accept",
"Users": ["group:tailnet-admins", "[email protected]", "autogroup:members"], // autogroup:members 表示所有 Tailnet 成员
"Ports": ["*:*"] // *: 表示所有设备,* 表示所有端口
},
// 更精细的规则示例:
{
"Action": "accept",
"Users": ["[email protected]"], // 允许 [email protected]
"Ports": ["tag:servers:22"] // 访问标记为 "servers" 的设备的 22 端口 (SSH)
},
{
"Action": "accept",
"Users": ["autogroup:members"], // 允许所有成员
"Ports": ["100.x.y.z:*"] // 访问某个特定 IP 的所有端口
}
],
"Groups": {
// 可以定义用户组
"group:tailnet-admins": ["[email protected]"]
},
"TagOwners": {
// 定义哪些用户可以给设备打标签 (tag)
"tag:servers": ["group:tailnet-admins"]
},
"Hosts": {
// 可以给 IP 或 IP 范围起别名
"my-server-alias": "100.10.20.30",
"internal-network": "192.168.1.0/24"
}
}
核心元素解释:
ACLs
: 一个规则列表。Tailscale 会从上到下匹配规则,第一个匹配的规则生效。Action
:accept
(允许) 或deny
(拒绝)。Users
: 指定哪些用户应用此规则。可以是具体用户邮箱、用户组 (group:groupname
),或自动分组 (autogroup:members
所有成员,autogroup:non-members
外部共享用户,autogroup:everyone
所有用户+外部用户)。Ports
: 指定允许/拒绝访问的目标。格式是<目标>:<端口范围>
.<目标>
可以是:*
(所有设备), Tailscale IP, Magic DNS 名称, IP 范围 (CIDR), 或设备标签 (tag:tagname
)。<端口范围>
可以是:*
(所有端口), 单个端口号 (e.g.,22
), 端口范围 (e.g.,80-90
), 或协议+端口 (e.g.,tcp:443
,udp:53
).
Groups
: 允许你定义自己的用户组,方便在Users
中引用。TagOwners
: 允许你为设备分配标签,然后可以在 ACL 中使用标签来引用一组设备。使用标签是一种管理大量设备的便捷方式。设备可以通过tailscale up --advertise-tags=tagname
命令来打标签。Hosts
: 允许你为 IP 地址或范围定义易读的别名。
编写 ACLs 的一般原则:
- 默认拒绝一切不明确允许的流量: 虽然 Tailscale 默认 ACL 比较宽松,但最佳安全实践是只允许必要的连接。你可以通过在 ACL 列表末尾添加一个
deny *:*
规则来实现这个原则,但这通常不是必需的,因为 Tailscale 会拒绝任何不被accept
规则匹配的流量。重点是写好accept
规则。 - 使用标签和用户组: 对于复杂的网络,使用标签来分组设备(如
tag:servers
,tag:workstations
)并使用用户组来分组用户(如group:developers
,group:marketing
)可以极大地简化 ACL 的管理。 - 先写更具体的规则: 由于规则是按顺序匹配的,将更具体的规则放在前面可以确保它们被优先应用。
- 仔细测试: 每次修改 ACL 后,务必在不同的用户和设备上测试连接,确保预期的访问是允许的,非预期的访问是被拒绝的。Admin Console 提供了一个 “Test ACL” 功能,可以模拟用户和目标设备/端口的访问结果。
ACLs 是一个强大的工具,但需要仔细规划和测试。从简单的规则开始,逐步增加复杂性。
第三部分:探索 Tailscale 高级功能与使用场景
除了基本的连接和核心概念,Tailscale 还提供了一系列高级功能,可以满足更广泛和更复杂的网络需求。
1. Sharing(共享)
Sharing 功能允许你将 Tailnet 中的特定设备临时或永久地共享给非你 Tailnet 成员的其他 Tailscale 用户或团队。接收共享的用户会在他们自己的 Tailnet 中看到你共享的设备,并可以通过其 Tailscale IP 或共享名称访问它。
使用场景:与外部合作方共享开发服务器、让朋友临时访问家中的某个服务。
如何共享:
- 在 Admin Console 的 “Machines” 页面,找到你想共享的设备。
- 点击设备旁边的三个点菜单,选择 “Share”。
- 输入你想共享给的用户的 Tailscale 账号邮箱(他们必须已经注册并使用 Tailscale)。
- 你可以选择允许他们访问设备上的所有端口 (
*:*
),或者限制特定的端口或协议 (e.g.,tcp:22
,tcp:80,443
)。这实际上是在你的 Tailnet 中为这个共享连接生成一个临时的 ACL 规则。 - 点击 “Share”。对方会收到一封邮件通知,接受邀请后,设备就会出现在他们的 Tailscale 客户端中。
2. Tailscale SSH
Tailscale SSH 提供了一种更安全、更便捷的方式来在 Tailnet 中的设备之间进行 SSH 连接,无需手动管理 SSH 密钥。
传统 SSH 的问题:
- 需要为每对需要 SSH 的设备生成和分发 SSH 密钥。
- 管理
authorized_keys
文件。 - 密钥泄露风险。
Tailscale SSH 的优势:
- 基于身份: 认证基于你的 Tailscale 身份,而不是传统的 SSH 密钥对。
- 密钥自动化管理: Tailscale 自动处理密钥的分发和轮换。
- 用户映射: 你可以将 Tailscale 用户映射到 Linux 系统用户(例如,Tailscale 用户
[email protected]
可以映射到 Linux 用户ubuntu
或admin
)。 - 日志记录: 可选地记录 SSH 会话。
如何启用和使用 Tailscale SSH:
- 在目标设备上启用 SSH 功能: 在 Admin Console 的 “Machines” 页面,找到作为 SSH 服务器的设备。点击三个点菜单,选择 “Edit route settings”。勾选 “Enable SSH” 并保存。
- 配置用户映射(可选但推荐): 在 Admin Console 的 “Access Controls” (ACLs) 页面,在
SSH
部分配置用户映射。例如:
json
"SSH": [
{
"Action": "check", // 或 "accept",check 表示仅检查 Tailscale 身份,accept 表示如果检查通过且系统用户存在,则直接免密登录
"Users": ["autogroup:members"], // 允许所有成员
"AllowUsers": ["ubuntu", "admin"] // 这些 Tailscale 用户可以映射到目标设备上的 ubuntu 或 admin 用户
}
],
上述配置表示,任何 Tailnet 成员都可以尝试以ubuntu
或admin
用户身份 SSH 连接到启用了 SSH 的设备。当用户[email protected]
连接时,Tailscale 会尝试将其身份映射到ubuntu
或admin
。如果用户在目标设备上使用ssh ubuntu@<tailscale-ip>
或ssh ubuntu@<magic-dns-name>
,并且 ACL 允许,Tailscale 会代表用户处理身份验证。 - 从客户端设备连接: 在另一台 Tailscale 设备上,确保你使用的是支持 Tailscale SSH 的客户端版本(通常是最新版本)。打开终端,直接使用目标设备的 Tailscale IP 或 Magic DNS 名称以及目标系统用户名进行 SSH 连接:
bash
ssh ubuntu@my-server
或者不指定用户,Tailscale 会根据 ACL 尝试映射:
bash
ssh my-server
你可能需要输入目标设备上ubuntu
用户的系统密码(取决于你的 ACL 配置和Action
类型)。如果 ACL 中Action
设置为accept
且用户映射成功,可能会实现无密码登录。
Tailscale SSH 极大地简化了内部网络 SSH 的管理,提高了安全性。
3. Tailscale Certs(HTTPS 证书)
Tailscale 可以为你的 Tailnet 中的设备自动签发和管理 HTTPS 证书。这使得你可以在 Tailscale 网络内部通过 HTTPS 安全地访问你的 Web 服务,无需手动申请和续订 Let’s Encrypt 等公共证书。
Tailscale 签发的证书是针对 *.ts.net
域名下你的设备名称生成的(例如 my-server.your-tailnet-id.ts.net
)。这些证书由 Tailscale 自己的 CA 签发,并自动分发到你的设备上。
如何使用 Tailscale Certs:
- 在 Admin Console 中启用证书: 在 Admin Console 的 “Machines” 页面,找到你的 Web 服务器设备。点击三个点菜单,选择 “Edit route settings”。勾选 “HTTPS certificates” 并保存。
- 在设备上获取证书文件: Tailscale 客户端会在设备上的特定位置提供证书文件(通常在 Linux 上是
/var/lib/tailscale/certs/
目录下)。具体路径可以在 Tailscale 客户端或文档中找到。你需要获取fullchain.cer
(包含设备证书和中间 CA 证书) 和my-server.your-tailnet-id.ts.net.key
(设备的私钥)。 - 配置你的 Web 服务器(如 Nginx, Apache)使用这些证书: 将 Web 服务器的 SSL/TLS 配置指向这些证书文件。使用设备完整的 Magic DNS 名称作为服务器名(例如
my-server.your-tailnet-id.ts.net
)。 - 从 Tailnet 中的其他设备访问: 现在,你可以通过
https://my-server.your-tailnet-id.ts.net
安全地访问你的 Web 服务了。由于 Tailscale 客户端自动信任其 CA,浏览器通常不会报证书错误。
Tailscale Certs 消除了内部服务使用 HTTPS 的最大障碍——证书管理,使得在 Tailnet 中构建安全的内部 Web 应用变得异常简单。
4. Funnel(内网穿透/服务暴露)
Funnel 是 Tailscale 的一项实验性功能(截至本文撰写时,可能需要从 Admin Console 启用或处于测试阶段),它允许你安全地将 Tailnet 中的某个服务的特定端口暴露到公共互联网上,但流量会通过 Tailscale 的全球网络进行中转,并使用一个 *.tailscale.net
的公共域名。
与传统的端口转发不同,Funnel 的优势在于:
- 无需配置路由器和防火墙: 无需 DMZ、端口转发等复杂设置。
- 使用 Tailscale 的全球网络: 提供可靠的连接和 DDoS 防护。
- 自动 HTTPS: 流量通过 HTTPS 传输,并由 Tailscale 提供有效的公共证书。
- 源 IP 验证: Funnel 可以验证请求的源 IP,增强安全性。
如何使用 Funnel:
- 在 Admin Console 中启用 Funnel (如果需要): 检查 Admin Console 的 “Funnel” 或 “Feature Previews” 设置。
- 在提供服务的设备上启用 Funnel: 在设备上运行 Tailscale 命令:
bash
tailscale funnel 443 on # 暴露 443 端口
你可以指定多个端口。 - 获取 Funnel 地址: 命令成功后,会输出一个公共的
*.tailscale.net
地址,例如my-server.tailscale.net
。 - 通过公共地址访问服务: 现在,互联网上的任何人都可以通过
https://my-server.tailscale.net
访问你设备上 443 端口提供的服务了。
注意: Funnel 处于实验阶段,使用前请仔细阅读官方文档并评估安全风险。通常用于测试、演示或需要有限公共访问的特定服务。对于需要高度安全或稳定性的生产服务,应考虑更成熟的解决方案。
5. 其他高级功能
- Custom Domain (自定义域名): 除了默认的
*.ts.net
Magic DNS 名称,你可以配置 Tailscale 使用你自己的域名。这需要你在你的 DNS 提供商处添加一些记录来验证域名所有权。 - Identity Provider Integration (身份提供商集成): 对于组织用户,Tailscale 支持与 Azure AD, Okta, OneLogin 等身份提供商进行 SAML 或 OIDC 集成,实现统一身份管理和单点登录 (SSO)。
- Key Expiry & Device Approval (密钥过期与设备审批): Tailscale 设备密钥有默认的过期时间(通常是 90 天)。过期后需要重新认证。你可以在 Admin Console 中禁用密钥过期或延长有效期。对于新加入 Tailnet 的设备,你也可以开启手动审批机制,增加一层安全检查。
- Service & Port Forwarding (服务和端口转发): 除了完整的子网路由,Tailscale 也支持更细粒度的端口转发,将 Tailnet 中的流量定向到本地网络的特定 IP 和端口。
第四部分:安全与最佳实践
尽管 Tailscale 本身是基于安全协议构建的,但遵循一些最佳实践可以进一步提升你的 Tailnet 的安全性。
- 最小权限原则: 仔细配置 ACLs,只允许用户访问他们工作所需的设备和服务。避免使用过于宽泛的规则(如允许所有人访问所有端口),除非你非常清楚你在做什么。
- 使用设备标签和用户组: 合理利用标签和用户组来管理 ACLs,这不仅能简化配置,还能在设备或用户变动时更容易地更新规则。
- 定期审查设备列表: 在 Admin Console 的 “Machines” 页面,定期检查所有已连接的设备。移除不再使用的设备,禁用或审批未知设备。关注密钥过期时间。
- 使用强身份认证: 注册 Tailscale 时,使用开启了双因素认证 (2FA) 的身份提供商账号。如果 Tailscale 账号的安全性被攻破,整个 Tailnet 的安全将受到威胁。
- 保持 Tailscale 客户端更新: 及时更新设备上的 Tailscale 客户端,以获取最新的功能、性能优化和安全补丁。
- 小心使用 Exit Nodes 和 Funnel: 出口节点会让你设备的流量通过另一个网络出去,确保你信任这个出口节点的网络环境。Funnel 将内网服务暴露到公网,更需谨慎对待,确保暴露的服务本身是安全的,并做好相应的防护。
- 理解子网路由的范围: 子网路由器会将整个子网暴露给 Tailnet。确保被暴露的子网中的设备不会带来额外的安全风险,并且已经在防火墙层面做好了隔离(如果需要的话)。
第五部分:Tailscale vs 传统 VPN
简单总结一下 Tailscale 相较于传统 VPN 的主要区别:
特性 | Tailscale (Mesh VPN) | 传统 VPN (Hub-and-Spoke) |
---|---|---|
架构 | 网状网络 (Mesh) | 中心辐射型 (Hub-and-Spoke) |
连接方式 | 点对点直连为主,中继为辅 | 所有流量通过中心 VPN 服务器中转 |
协议 | 基于 WireGuard® | OpenVPN, IPsec 等 |
配置复杂度 | 零配置,基于身份登录即可 | 需要服务器端配置,防火墙,证书等复杂设置 |
性能 | 通常更优,特别是设备间直连时,延迟低 | 取决于中心服务器位置和负载,可能引入延迟 |
管理 | 基于 Web Admin Console,易于管理 | 需要手动配置服务器和客户端 |
身份管理 | 集成现有身份提供商 | 通常需要单独管理用户名/密码或证书 |
高级功能 | 子网路由、出口节点、ACL、SSH、Certs等丰富 | 通常主要提供基本的隧道连接功能 |
NAT Traversal | 内置并自动化处理 NAT 穿透,无需手动配置 | 可能需要复杂的端口转发或打洞配置 |
总的来说,Tailscale 在易用性、灵活性和功能性方面具有显著优势,特别适合个人、小型团队以及需要连接分散设备的场景。
结论:构建你的未来网络
Tailscale 以其基于 WireGuard 的安全基础、零配置的易用性以及强大的网状网络架构,彻底改变了我们构建和使用私有网络的方式。从简单的设备互联,到通过子网路由器访问整个局域网,再到利用出口节点保护公共网络流量,甚至是使用 Tailscale SSH 和 Certs 简化内部服务管理,Tailscale 提供了全面的解决方案。
无论是远程办公、安全访问家庭网络、连接云服务器上的虚拟机,还是与合作者安全地共享资源,Tailscale 都能提供一个简单、可靠且安全的连接方式。
通过本文的详细介绍,相信您已经对 Tailscale 的安装、核心概念及各种高级功能有了全面的了解。现在,就开始探索 Tailscale 的强大能力,构建属于你自己的安全、智能的私有网络吧!随着您使用经验的增长,您会发现更多Tailscale可以为您解决的场景和带来的便利。
免责声明: WireGuard 是 Jason A. Donenfeld 的注册商标。本文中提及的 Tailscale 功能和特性可能随版本更新而变化,请以 Tailscale 官方文档为准。