Skip to content
intermediate

如何在 iPhone 和 Android 上配置 NordLayer WireGuard

一份实用指南,介绍如何将 NordLayer WireGuard 隧道导入 iOS 和 Android 设备、验证握手和出口地址,并修复会中断 WireGuard 连接的移动端特有问题。

iOS Android WireGuard 隐私/匿名性

概述

NordLayer WireGuard 通过专用网关提供企业级 WireGuard 隧道,并采用固定月费计费,适合需要少量员工从手机和平板电脑(而非受管笔记本电脑)连接的团队。由于 WireGuard 是标准协议,无论你的隧道来自 NordLayer 还是其他支持 WireGuard 的服务商,移动端工作流程都相同:导入对等端配置、启动隧道,并确认流量确实通过网关离开。

本教程涵盖 iOS 和 Android 上的官方 WireGuard 客户端、各平台支持的导入方法,以及可排查最常见移动端故障的验证和故障排除步骤。

前提条件

  • 有效的 NordLayer 席位或由你组织管理员签发的账户,并且已为此特定设备创建 WireGuard 对等端。
  • 隧道详细信息:接口私钥、隧道地址、DNS 解析器、网关公钥以及网关端点(主机和 UDP 端口)。
  • 由管理网关的人员提供的二维码或 .conf 文件。
  • 从 App Store 或 Google Play 安装的官方 WireGuard 客户端。
  • 向设备添加 VPN 配置的权限。在 MDM 管理的手机上,此项可能会被阻止,直到管理员批准。

各字段的作用

字段 示例 用途
PrivateKey base64 字符串 向网关标识此设备。切勿分享。
Address 10.8.0.14/32 分配给此设备的隧道 IP。
DNS 10.8.0.1 可通过隧道访问的解析器。
PublicKey base64 字符串 网关的密钥,用于加密发往网关的流量。
Endpoint gateway.example.com:51820 设备发送握手数据包的目标。
AllowedIPs 0.0.0.0/0, ::/0 或 10.8.0.0/24 哪些流量被路由到隧道中。

.conf 形式的隧道模板如下所示:

[Interface]
PrivateKey = <this-device-private-key>
Address = 10.8.0.14/32
DNS = 10.8.0.1

[Peer]
PublicKey = <gateway-public-key>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <gateway-host>:51820
PersistentKeepalive = 25

将 AllowedIPs 设置为 0.0.0.0/0, ::/0 可通过网关路由所有流量;只有当管理员希望使用分离隧道时,才设置为仅内部子网。PersistentKeepalive 为 25 在移动网络上是常见选择,因为否则运营商 NAT 会丢弃空闲会话。

步骤

  1. 确认该隧道是为此设备准备的。 每部手机都应拥有自己的对等端密钥对。在两台设备上导入相同配置会导致握手不断波动,并且两台设备都会断开连接。
  2. 安装官方 WireGuard 客户端。 在 iOS 上,在 App Store 中搜索 WireGuard,并安装由 WireGuard Development Team 发布的 App。在 Android 上,从 Google Play 安装相应应用。避免使用仅仅捆绑了 WireGuard 的第三方 VPN 客户端。
  3. 在 iOS 上导入。 打开 App,点击加号按钮,然后选择 从二维码创建 并扫描管理员提供的二维码,或者选择 从文件或归档创建 并从“文件”中选择 .conf 文件。为隧道起一个可识别的名称,例如 NordLayer-Gateway-EU,点击 保存,并接受系统提示以添加 VPN 配置。
  4. 在 Android 上导入。 打开 App,点击加号按钮,然后选择 从二维码扫描 或 从文件或归档导入。在文件选择器中选择 .conf 文件,允许 App 添加 VPN 配置文件,并确认隧道名称。
  5. 连接前检查导入的设置。 打开隧道条目,检查 Endpoint、AllowedIPs 和 DNS 是否与管理员提供的一致。二维码被截断或文件过期,是隧道始终无法完成握手的最常见原因。
  6. 连接隧道。 切换隧道旁边的开关。状态应在几秒内变为 Active,操作系统会在状态栏中显示 VPN 指示器。
  7. 验证握手和出口地址。 使用下一节中的检查方法。不要仅仅因为开关已打开就认为隧道正在工作。
  8. 在合适的情况下设置按需行为。 在 iOS 上,打开隧道,点击 编辑,并启用 按需,使用适合该设备的规则。在 Android 上,使用 设置 → 网络和互联网 → VPN → WireGuard 下的系统设置,启用 始终开启的 VPN,并可选启用 无 VPN 时阻止连接。这些选项的可用性因操作系统版本和 MDM 策略而异。
  9. 在 Wi-Fi 和蜂窝网络上都测试隧道。 移动网络经常阻止或限制 UDP,因此能在办公室 Wi-Fi 上工作的隧道可能在运营商网络上失败。
  10. 存储并轮换配置。 将 .conf 的离线副本保存在密码管理器或加密保险库中,并在设备停用后从网关删除旧对等端。如果手机丢失,请轮换密钥。

验证隧道

WireGuard App 是移动端最可靠的诊断工具。打开活动隧道,检查 最新握手 和传输计数器:

  • 在启用 keepalive 且隧道空闲时,最新握手 应显示在过去两分钟内的值。
  • 传输 应显示接收和发送字节数在你浏览时不断增加。
  • 握手始终停留在 Never 表示设备无法访问端点,而不是隧道已连接但处于空闲状态。

要确认互联网看到的地址,请在手机浏览器中访问 IP 回显页面,并将结果与管理员为该专用网关预期的地址进行比较。如果你有一台使用同一网关的笔记本电脑,可以先确认预期值:

# Run from a device already using the same gateway.
# Whatever this prints is the address a phone on the same gateway should also report.
curl -s https://ifconfig.me

预期输出是单个 IP 地址,没有尾随文本:

203.0.113.42

由于 NordLayer 使用专用网关而非共享池,该地址在会话之间应保持稳定,这在内部服务或合作伙伴将特定 IP 加入允许列表时很有帮助。

故障排除

症状 可能原因 修复方法
状态显示已连接,握手始终停留在 Never UDP 被移动运营商或强制门户阻止 切换到其他网络,断开强制门户,或向管理员索取使用不同端口的网关
握手完成,但网站无法加载 无法通过隧道访问 DNS,或 AllowedIPs 配置错误 确认解析器在拓扑上位于隧道内;重新导入一份新配置
内部工具可用,公共网站不可用 分离隧道的 AllowedIPs 仅限内部子网 预期行为;仅在打算使用全隧道路由时才添加 0.0.0.0/0, ::/0
在 Wi-Fi 上可用,在蜂窝网络上失败 运营商 NAT 或 UDP 过滤 启用 PersistentKeepalive = 25,重试,并在需要时从其他运营商网络测试
空闲几分钟后隧道断开 没有 keepalive,或操作系统激进的电池管理 设置 keepalive,并在 Android 上将 WireGuard App 排除在电池优化之外
两台设备互相断开连接 在两台设备上导入了相同的对等端密钥 向管理员为每台设备申请单独的对等端
导入失败或 App 报告密钥无效 二维码被截断或 .conf 文件损坏 重新申请配置,并从文件而不是二维码导入
电池明显耗电 按需规则使隧道在每个网络上都保持连接 将按需规则缩小到不受信任的网络,或在策略允许时使用分离隧道

总结

  • iOS 和 Android 上的 WireGuard 遵循标准的“先导入后验证”流程;NordLayer 提供隧道详细信息,其余由官方客户端完成。
  • 始终导入专为该单一设备准备的配置,切勿在两部手机上复用同一个对等端密钥。
  • 以握手计数器(而不是开关状态)作为隧道正在工作的证明。
  • 在移动设备上设置 PersistentKeepalive = 25,以免运营商 NAT 悄悄终止空闲会话。
  • 在蜂窝网络和 Wi-Fi 上都进行测试,并保留配置的离线副本,以便手机丢失或数据被擦除后可以快速替换。