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。使用这些信息从您的Tailnet上的任何设备访问SMB/NFS共享、Docker容器等。
子网路由(可选)
要通过其主 LAN IP 访问您的 Unraid 服务器(或访问具有自有 IP 的 Docker 容器):
- 转到 Settings → Tailscale,点击查看,并登录。
- 点击 子网路由器 并添加:
- 您的 Unraid 服务器的 IP(例如,
192.168.0.12/32
),或 - 您的整个网络的子网(例如,
192.168.0.0/24
)。
- 您的 Unraid 服务器的 IP(例如,
- 点击 发布路由。
- 在您的 Tailscale 管理控制台中批准待处理路由。
- 一旦获得批准,您的 Tailnet 设备就可以通过其常规 IP 地址访问您的 Unraid 服务器和/或 LAN 设备。
- For advanced details, see the Tailscale subnet routing documentation.
将 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,某些容器可能根本无法运行,特别是以下情况的容器:
- 自定义网络要求
- 特定的网络隔离需求
- 与 Tailscale 网络修改相冲突的应用程序
请首先在非关键容器上测试 Tailscale 集成,并准备在容器无法正常工作时禁用它。
:::note[Prerequisites]
- 首先,在任何将访问您 Docker 容器的计算机上安装 Tailscale。
- 尽管 Unraid Tailscale 插件不是 Docker 集成的必要条件,但强烈建议在您的 Unraid 服务器上安装并登录以获得最佳体验。
:::
将 Tailscale 添加到 Docker 容器:
- 请查看您的 Tailscale 帐户设置,如 开始使用部分 所述。
- 在 Unraid 中,转到 Docker 选项卡并 编辑所需的容器。
- 启用 使用 Tailscale 开关。
- 为容器输入一个 Tailscale 主机名(必须在您的 Tailnet 上唯一)。
HTTPS 证书将为此主机名生 成,并发布在公共证书册中。选择您愿意公开分享的名称。有关详细信息,请参阅 Tailscale HTTPS 文档。
- 决定此容器是否应成为出口节点(对于 VPN 容器非常有用)。
- 选择容器是否应使用出口节点处理其外发流量。如果安装了 Tailnet 插件,您将看到可用的出口节点列表;否则,请手动输入 IP。
- 如果使用出口节点,指定容器是否还应访问您的 LAN。
- Tailscale 用户空间网络 字段通常自动设置。除非有特定需求,否则请保持禁用状态。
- 决定是否启用 Tailscale SSH(通过 Tailscale 认证的安全外壳访问)。
- Serve:允许您使用友好的 HTTPS URL 从您的 Tailnet 安全访问容器的网页或 Web 服务。不需要端口转发,且只能通过 Tailnet 设备进行连接。
- Funnel: 通过独特的HTTPS URL将容器的网站发布到公共互联网。任何拥有链接的人,即使不在您的Tailnet上,也可以访问该网站。谨慎使用,因为这会将您的服务暴露给更广泛的互联网用户。
- 启用 Serve 可将容器的 Web 界面反向代理到您的 Tailnet,或启用 Funnel 以使其在公共互联网中可访问。Unraid 将根据容器的 WebUI 设置自动检测要使用的端口。如有需要,还提供高级选项。
使用 Serve 或 Funnel 时,没有额外的身份验证层 - 容器负责管理用户访问。请相应地保护您的 Web 应用程序。
- 应用 您的更改并检查 容器日志 中的 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 插件: 当有新版本时,请通过 Unraid 应用程序标签更新插件,就像其他插件一样。您始终可以在 Tailscale 更改日志 中查看最新更改。
-
在 Docker 容器中更新 Tailscale:
- 在 Docker 页面,悬停在某个容器的 Tailscale 图标上。如果有可用更新,您将看到通知。
- 通过以下方式更新容器:
- 切换到 高级视图(右上角),然后点击 强制更新。
- 编辑容器,进行微小更改(如切换一个设置),并点击 应用。
用户空间网络
用户空间网络 控制容器如何连接到您的 Tailnet 及其他网络。在大多数情况下,如果您使用他们的 Tailscale WebUI URLs 访问容器并在所有客户端系统上安装了 Tailscale,则可以忽略详细信息。
-
启用: 容器在受限环境中操作。它无法启动与其他 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 | 已禁用(未经测试) | 可以 | 未知 | 未知 | 使用时请谨慎;尚未完全测试 |