跳到主要内容

WireGuard

虽然 Tailscale 为大多数用户提供了友好的体验,但 WireGuard 是 Unraid 中一种强大的内置 VPN 解决方案,在特定的高级网络场景中表现出色。特别是在您需要详细控制 VPN 路由或需要不依赖第三方服务的服务器对服务器或局域网对局域网连接时,它尤其有用。下面是 WireGuard 表现优异的关键场景。

何时选择WireGuard

场景为何选择 WireGuard?
高级配置允许自定义 VPN Tunnel 设置并与现有网络基础设施集成
服务器到服务器的隧道允许您创建持久加密链接以连接 Unraid 服务器。
LAN到LAN的集成在不涉及中介服务的情况下连接整个网络
带宽密集型任务为最大吞吐量提供最小的协议开销
信息

对于大多数用户, Tailscale 可以完成 WireGuard 可以完成的一切,通常更为简便。它通常不需要端口转发或手动配置。然而,如果您需要高级、定制的 VPN 设置或具有特定兼容性要求,选择 WireGuard 可能是某些用户的更好选择。

连接类型和使用场景

了解WireGuard中的连接类型可以帮助您决定它是否适合您:

连接类型实际使用案例
远程访问服务器Access Unraid WebGUI, Docker containers, VMs, and network shares remotely.
远程访问LAN远程访问LAN上的所有设备,就像您在本地网络上一样。
服务器到服务器访问安全连接两个 Unraid 服务器以进行数据共享或备份。
LAN到LAN访问无缝连接两个完整的LAN,以实现网络间的平滑通信。
服务器枢纽和辐射访问允许多个%%VPNvpn-tunnel%%客户端通过服务器互相连接。
LAN枢纽和辐射访问通过中心服务器启用多个LAN之间的通信。
%%VPN隧道vpn-tunnel%%访问Route specific Docker containers and VMs through a commercial WireGuard VPN provider.
远程隧道访问在不受信任的网络中,安全地通过 Unraid 服务器路由所有互联网流量。

在 Unraid 上设置 WireGuard

:::note[Prerequisites]

  • 动态 DNS: 如果您的公共 IP 发生变化,请设置 DDNS 以确保可靠的访问。流行选项包括 Cloudflare(需要域拥有权)、No-IPDuckDNS(免费但可能会偶尔中断)。
  • 路由器配置:
    • 设置 → 管理访问中启用UPnP以进行自动端口转发。
    • 如果 UPnP 不可用,请手动将 UDP 端口 51820 转发至您的 Unraid 服务器的 IP。
  • 客户端软件: 在您的设备上安装WireGuardWindows, macOS, iOS, Android)。

:::

步骤1:生成密钥

  1. 前往设置 → VPN管理

VPN管理

  1. 为您的隧道命名(例如,“家庭VPN”)。
  2. 点击 生成密钥对 来创建公钥/私钥。
警告

安全地存储私钥,因为它提供了完整的网络访问。

步骤2:配置您的端点

  • 对于DDNS用户:本地端点中的IP替换为您的DDNS URL(例如,myhome.duckdns.org)。
  • 除非与现有服务冲突,否则保持默认端口(51820)。

步骤3:设置端口转发

  • UPnP 用户: 如果在 设置 → 管理访问 中启用,Unraid 将自动转发端口。

UPnP启用

  • 手动设置: 如果UPnP不可用:
    1. 登录到您的路由器。
    2. 将 UDP 端口 51820 转发至您的 Unraid 服务器的 LAN IP。
    3. 对外部和内部设置使用相同的端口。

UPnP禁用

步骤4:激活您的隧道

  1. 切换活动以启用WireGuard
  2. 启用自动启动以在启动时运行WireGuard

激活切换

Security 最佳做法
  • 仅限受信任的访问: VPN访问类似于物理网络访问,所以只授权受信任的设备。
  • 密钥管理: 切勿共享私钥;像密码一样对待它们。
  • 网络分段: 对于复杂的设置(自定义 Docker/VMs),使用 VLAN 或独立子网隔离 VPN 流量。
  • 定期审核: 每季度审查连接设备和访问权限。

定义一个对等(客户端)

对等是一个连接到您的 Unraid WireGuard VPN 的客户端设备,比如手机、笔记本电脑或另一台服务器。定义对等意味着为该设备创建唯一身份并确保密钥。

  1. 选择添加对等

增加对等

  1. 为对等命名(例如,MyAndroid)。
  2. 选择初始连接类型以获得完整的网络访问,通常是远程访问LAN
  3. 点击生成密钥对来创建公钥和私钥。确保私钥安全。
  4. 可选地,生成预共享密钥以增加安全性。
  5. 点击 应用
备注

虽然 peer 可以生成它们自己的密钥,但让 Unraid 生成密钥可以通过提供完整的配置文件简化设置。

注意

添加新对等可能会暂时禁用WireGuard隧道,这可能会中断您的连接。在进行更改之前,确保您可以本地访问您的服务器。

配置对等(客户端)

  1. 选择眼睛对等配置图标查看对等配置。

对等配置

  1. WireGuard移动应用中,选择通过QR码创建并扫描QR码。
  2. 请命名连接并进行连接。VPN 隧道 应该迅速启动。
  3. 保密QR码——任何拥有它的人都可以访问您的VPN。

配置您的DNS

  1. 使用IP地址或完全限定的域名访问设备(例如,yourpersonalhash.unraid.net)。
备注

像“tower”这样的短名称或由路由器管理的DNS条目可能无法通过VPN工作。

  1. 要启用短名称解析:
    • 转到 Unraid 中的 设置 → VPN 管理器
    • 基本模式切换到高级模式。
    • 对等DNS服务器字段中输入所选DNS服务器的IP地址。
    • 保存更改并更新客户端配置文件。
  2. 推荐的DNS服务器:
    • 您的LAN路由器的IP地址。
    • 公共DNS服务器如8.8.8.8

这种设置对于远程隧道访问模式尤为重要,在这种模式下,客户端的原始DNS服务器可能不可访问。

备注

mDNS地址(例如,tower.local)只能在本地网络上工作,而在WireGuard VPN上则不能。

复杂网络

对于大多数用户,默认的 启用 NAT 设置开箱即用,并允许访问 Unraid 和大多数 LAN 设备。然而,如果您使用具有自定义 IP 的 Docker 容器或具有严格网络需求的VMs:

  1. 在您的WireGuard隧道配置中,将使用NAT设置为
  2. 在您的路由器上,为 WireGuard 隧道网络(例如,10.253.0.0/24)添加静态路由,指向您的 Unraid 服务器的 IP。
  3. 设置→Docker设置中,将主机访问自定义网络设置为启用

应避免的配置

使用NAT设置自定义网络的主机访问服务器和Dockers(桥接/主机)VMs 和其他 LAN 系统具有自定义IP的Dockers笔记
可以禁用(静态路由可选)可访问可访问不可访问简单的网络设置;推荐给大多数用户
可以启用(静态路由可选)可访问不可访问不可访问避免这种配置
不可以禁用(无静态路由)可访问不可访问不可访问避免;需要静态路由正确运行
不可以禁用(带静态路由)可访问可访问不可访问几乎正确;启用主机自定义网络的访问
不可以启用(带静态路由)可访问可访问可访问复杂网络的推荐设置

WireGuard故障排除

WireGuard 的设计是非干扰的——如果某些东西无法正常工作,它不会提供错误消息。为了有效地排查故障,您应系统地检查您设置中的每个方面。

连接检查表

  • ✅ 隧道在 Unraid 和客户端设备上均处于活动状态。("活动" 意味着隧道已启动,但不一定已连接。)
  • ✅ DDNS URL指向您当前的公网IP并设置在本地端点中。
  • ✅ 从路由器到 Unraid 转发正确的 UDP 端口,匹配 本地端点 端口。
  • ✅ 客户端在任何服务器端更改后都拥有最新的配置文件。
  • ✅ 在查看或分发对等配置(QR 代码/文件)之前保存更改。

其他故障排除方法

第一次设置技巧 - 点击以展开/折叠

如果您是首次设置WireGuard,这些提示可以帮助您避免常见问题:

  • 使用移动设备在蜂窝数据(而非 Wi-Fi)上设置您的第一个客户端,以排除本地网络问题。
  • 使用二维码方法进行最简便的配置传输。
握手和连接问题 - 点击以展开/折叠

如果未看到握手或无法连接,请尝试以下有针对性的检查:

  • 如果您看不到握手,请尝试生成流量(例如,ping 服务器)以触发连接。
  • 禁用移动客户端上的节能、数据节省或电池节能功能,因为这些功能可能会干扰 VPN 操作。
  • 确保客户端和服务器网络使用不同的子网(例如,避免同时使用 192.168.1.0/24)。
  • 如果使用 Cloudflare 进行 DDNS,请将 代理状态 设置为仅 DNS(而非 代理)。等待 DNS 更改传播。
  • 如果您可以从某些位置连接但无法从其他位置连接,则可能是远程网络阻止了 UDP 流量。WireGuard 当前不支持将 TCP 作为备用。
高级网络冲突 - 点击以展开/折叠

如果您的网络设置更复杂,或怀疑 IP 冲突,请查看这些高级故障排除步骤:

  • 高级模式下,确认您的本地隧道网络池不与任意一方的现有网络重叠。如果有冲突,请更改为不同的专用子网(例如,10.10.10.0/24)。
  • 对于具有自定义 IP 的 Docker 容器或满足严格要求的 VMs,请参阅 复杂网络 部分。
紧急恢复 - 点击以展开/折叠

如果您失去对 Unraid WebGUI 的访问权限并需要禁用 WireGuard 自动启动

  • 从您的闪存驱动器中删除 /boot/config/wireguard/autostart 并重启。

* “WireGuard”和“WireGuard”徽标是Jason A. Donenfeld的注册商标。