Tailscale
Unraid 现在通过与 Tailscale 的技术合作,提供了深度集成,使您的服务器能够实现无缝、安全的网络连接。Tailscale 不是传统的 VPN,而是一种基于 WireGuard 的现代点对点覆盖网络。它可以将设备、服务器和单个 Docker 容器连接到您的安全私人网络 (Tailnet),无论其物理位置或网络环境如何。Unraid 的合作确保了 Tailscale 插件的完整维护和紧密集成,为 Unraid 7 及更新版本提供原生证书支持和高级功能。
- 简单设置: 无需端口转发或防火墙困扰。
- 强大的安全性: 使用 WireGuard 加密核心技术。
- 灵活共享: 仅授予对特定设备或容器的访问权限,而不是整个网络。
- 一流支持: 官方维护的插件,持续增强。
开始使用 Tailscale
首先,注册一个免费的 Tailscale 帐户 并在至少一个设备(Windows, macOS, Linux, iOS, Android 等)上安装客户端。免费帐户最多支持三位用户和 100 台设备。
在添加 Unraid 之前,请考虑:
- 为更易识别重命名您的 Tailnet。
- 启用 MagicDNS 以简化设备命名。
- 启用 HTTPS 证书 以实现安全、可信的访问。
HTTPS证书中的机器名称是公开的。使用您愿意分享的名称。
将 Tailscale 添加到 Unraid
以下步骤适用于 Unraid 7 及更高版本:
- 按上述描述检查您的 Tailscale 帐户设置。
- 在 Unraid 中,搜索 Community Apps 标签中的官方 Tailscale 插件并安装。
- 打开设置→Tailscale并单击重新验证。使用您的Tailscale账户登录。
- 点击 连接 以将您的 Unraid 服务器添加到您的 Tailnet。
- 访问 Settings → Management Access 查看您的 Tailscale 用于 WebGUI 的 URL。
- 在 设置 → Tailscale 中,找到您的服务器的Tailnet 名称和 IP。使用这些信息可以从任何设备访问 SMB/NFS 共享、Docker 容器等。 +7. (可选)启用 在 /etc/hosts 中包括 Tailscale 设备(请参阅 增强的主机名解析)以自动将 Tailscale 设备添加到您的服务器主机名解析中,方便访问您 Tailnet 上的其他设备。
子网路由(可选)
要通过其主 LAN IP 访问您的 Unraid 服务器(或访问具有自有 IP 的 Docker 容器):
- 前往 设置 → Tailscale,点击 重新验证,并使用您的 Tailscale 账户登录。
- 在 Tailscale 设置中,找到 播报路由 部分并添加:
- 您的 Unraid 服务器的 IP(例如,
192.168.0.12/32),或 - 您的整个网络的子网(例如,
192.168.0.0/24)。
- 您的 Unraid 服务器的 IP(例如,
- 点击 应用 以保存更改。
- 登录到您的 Tailscale 管理控制台 并导航到 机器 页面。
- 找到您的 Unraid 服务器,并批准广告子网的待处理路由。
- 一旦获得批准,您的 Tailnet 设备就可以通过其常规 IP 地址访问您的 Unraid 服务器和/或 LAN 设备。
有关高级详细信息,请参见 Tailscale 子网路由文档。
增强的主机名解析
Tailscale 插件包括一个选项,可自动将 Tailscale 对等体添加到服务器的 /etc/hosts 文件。此功能通过启用基于主机名的连接来简化设备访问,以访问 Tailnet 上的其他设备。
包括的好处:
- 使用友好的主机名而不是 IP 地址访问其他 Tailscale 设备。
- 当设备加入或离开您的 Tailnet 时自动更新。
- 提高依赖主机名解析的应用程序的兼容性 。
启用此功能的方法:
- 转到 WebGUI 中的 设置 → Tailscale。
- 启用 在 /etc/hosts 中包括 Tailscale 对等体 选项。
- 点击 应用 以保存更改。
启用后,您可以使用 Tailscale 主机名从 Unraid 服务器访问 Tailnet 上的其他设备,使服务配置、访问共享资源和管理您的网络更加容易。
将 Tailscale 添加到 Docker 容器
Unraid使连接Docker容器到您的Tailnet变得简单,给每个容器分配一个唯一的设备身份以实现安全、灵活的远程访问。通过这种集成,您可以分享对单个容器的访问权限,而无需暴露整个服务器,并可利用高级功能,如出口节点、Serve、Funnel等,按容器独立配置。设置完全自动化,因此所有技术水平的用户都可以受益于增强的安全性和简化的网络连接。
如何运作 Tailscale-Docker 集成 - 点击展开/折叠
当您启用 Docker 容器的 使用 Tailscale 并应用更改时,Unraid 会自动执行以下步骤以实现无缝集成:
- 入口点提取: Unraid 识别容器的原始入口点和命令,保留其预期的启动行为。
- 集成脚本注入:
tailscale_container_hook脚本会被挂载到容器内,并更新入口点以首先运行此脚本。 - 环境设置: 将原始入口点、命令和所有必需的 Tailscale 变量传递给 Docker 运行命令。
- Tailscale 初始化: 启动时,挂载脚本会安装任何依赖项,下载并在容器内启动 Tailscale 客户端。
- 正常启动: 然后脚本会启动容器的原始入口点和命令,因此您的应用程序可以照常运行 - 并自动层叠上 Tailscale 网络。
一旦启用,容器就会显示为您 Tailnet 上的一个独立设备,准备好用于安全访问和高级 Tailscale 功能,无需手动网络配置或端口转发。
Tailscale集成不适用于所有容器。如果启用了Tailscale,某些容器可能根本无法运行,特别是以下情况的容器:
- 首先,在任何将访问您 Docker 容器的计算机上安装 Tailscale。
- 尽管 Unraid Tailscale 插件不是 Docker 集成的必要条件,但强烈建议在您的 Unraid 服务器上安装并登录以获得最佳体验。
- 与 Tailscale 网络修改相冲突的应用程序
请首先在非关键容器上测试 Tailscale 集成,并准备在容器无法正常工作时禁用它。
:::note[Prerequisites]
- 首先,在任何将访问您 Docker 容器的计算机上安装 Tailscale。
- 尽管 Unraid Tailscale 插件不是 Docker 集成的必要条件,但强烈建议在您的 Unraid 服务器上安装并登录以获得最佳体验。
:::
将 Tailscale 添加到 Docker 容器:
- Serve:允许您使用友好的 HTTPS URL 从您的 Tailnet 安全访问容器的网页或 Web 服务。不需要端口转发,且只能通过 Tailnet 设备进行连接。
- 在 Unraid 中,转到 Docker 选项卡并 编辑所需的容器。
- 启用 使用 Tailscale 开关。
- 为容器输入一个 Tailscale 主机名(必须在您的 Tailnet 上唯一)。
HTTPS 证书将为此主机名生成,并发布在公共证书册中。选择您愿意公开分享的名称。有关详细信息,请参阅 Tailscale HTTPS 文档。
- 决定此容器是否应成为出口节点(对于 VPN 容器非常有用)。
- 选择容器是否应使用出口节点来处理其出站流量。如果安装了 Tailscale 插件,您将看到可用出口节点的列表;否则,请手动输入 IP。
- 如果使用出口节点,指定容器是否还应访问您的 LAN。
- Tailscale 用户空间网络 字段通常自动设置。除非有特定需求,否则请保持禁用状态。
- 决定是 否启用 Tailscale SSH(通过 Tailscale 认证的安全外壳访问)。
- 编辑容器并标识映射路径以存储 Tailscale 状态数据(例如,
/container-path/)。 - 启用 Tailscale 显示高级设置 并设置 Tailscale 状 态目录 为
/container-path/.tailscale_state。
- 启用 Serve 可将容器的 Web 界面反向代理到您的 Tailnet,或启用 Funnel 以使其在公共互联网中可访问。Unraid 将根据容器的 WebUI 设置自动检测要使用的端口。如有需要,还提供高级选项。
- 应用 您的更改并检查 增强日志 或 日志查看器 以查看 Tailscale 消息。点击 要进行身份验证,请访问…… 链接以在您的 Tailnet 上批准容器。
:::caution[Troubleshooting]
持久状态错误 - 如果您看到 "错误:未检测到 .tailscale_state 的持久 Docker 目录":
- 编辑容器并标识映射路径以存储 Tailscale 状态数据(例如,
/container-path/)。 - 启用 Tailscale 显示高级设置 并设置 Tailscale 状态目录 为
/container-path/.tailscale_state。 - 重启容器。
- Docker XML 作者可以通过在容器的 XML 文件中添加
<TailscaleStateDir>/container-path/.tailscale_state</TailscaleStateDir>来简化这一过程。
:::
更新 Tailscale
Tailscale 经常更新以提供新功能和安全改进 。为使您的 Unraid 系统保持安全和兼容,请确保 Unraid Tailscale 插件和使用 Tailscale 的任何 Docker 容器都是最新的。
更新 Tailscale 插件
当有新版本可用时,请通过 Unraid 应用程序选项卡更新插件,就像其他插件一样。该插件经过积极维护并定期更新,具有最新的 Tailscale 特性。您始终可以在 Tailscale 更改日志 和 插件发布说明 中查看最新更改。
更新 Docker 容器中的 Tailscale
要更新 Docker 容器中的 Tailscale:
- 在 Docker 页面,悬停在某个容器的 Tailscale 图标上。如果有可用更新,您将看到通知。
- 通过以下方式更新容器:
- 切换到 高级视图 (右上角),然后点击 强制更新。
- 编辑容器,进行微小更改(如切换一个设置),并点击 应用。
用户空间网络
* “WireGuard”和“WireGuard”徽标是Jason A. Donenfeld的注册商标。
-
启用: 容器在受限环境中操作。它无法启动与其他 Tailnet 设备的连接或使用 Tailscale DNS,但仍可通过 Tailscale WebUI 和原始 WebUI URL 访问。
-
禁用: 容器具有完整的 Tailnet 访问权限,并可以使用 Tailscale DNS。它可以与其他 Tailnet 设备通信,但原始 WebUI URL 可能无法使用。
- 设置为 出口节点 的容器始终开启用户空间网络。
- 使用出口节点的容器始终关闭用户空间网络。
网络类型兼容性
Tailscale 集成和用户空间网络的行为取决于容器的网络类型。使用下表了解兼容性和访问选项:
| 网络类型 | 用户空间网络默认 | 可以改变吗? | WebUI 访问(Tailscale) | WebUI 访问(原始) | 笔记 |
|---|---|---|---|---|---|
host | 禁用 | 不可以 | 不可以 | 可以 | 宿主模式下未提供 Tailscale 集成 |
bridge | 禁用 | 可以 | 可以 | 启用: 可以 禁用: 不可以 | 如果启用,则启用两个 URL;如果禁用,只启用 Tailscale WebUI |
eth0/br0/bond0 | 禁用 | 可以 | 可以 | 可以 | 无论设置如何,都可以访问两个 URL |
container/wg0 | 已禁用(未经测试) | 可以 | 未知 | 未知 | 使用时请谨慎;尚未完全测试 |