跳转到内容
搜索文档

紧急断开连接

最后更新 查看 MarkdownAgent 设置

紧急断开连接允许组织和管理员独立于 Cloudflare 基础设施断开和重新连接其 Cloudflare One Client(前称 WARP)设备。例如,在发生 Cloudflare 网络中断 的情况下,即使 Cloudflare 的系统已关闭或无法访问,您仍能确保可以管理您的设备。

有两种机制可用:

  • 外部紧急断开连接:Cloudflare One Client 定期轮询客户托管的 HTTPS 端点以获取断开连接信号。这需要与您的端点建立网络连接,但即使在 Cloudflare 基础设施无法访问时也可以正常工作。
  • 本地紧急断开连接:Cloudflare One Client 监控设备上的本地 JSON 文件以获取断开连接信号。这不需要任何网络连接,在 Cloudflare 和您自己的基础设施都可能无法访问的灾难恢复场景中非常有用。

紧急断开连接也可以与仪表板启动的 在所有设备上断开 Cloudflare One Client 连接 设置结合使用。您可以单独或结合使用任何机制,以实现多层弹性。来自任何源的断开连接信号都会触发断开连接;所有源都必须指示正常运行,客户端才能重新连接。有关这些设置如何相互影响的详细信息,请参阅 设备客户端设置优先级。

使用场景

  • 安全事件响应:在整个设备群中快速终止所有 WARP 隧道。
  • 合规与审计:满足敏感或受监管环境中的要求,这些环境强制要求具备完全隔离、可审计且由组织自身基础设施控制的“紧急停止”功能。
  • 灾难恢复:如果设备由于网络中断、路由问题或客户端配置错误而无法访问 Cloudflare 的 API,管理员仍保留通过客户托管的端点或本地信号文件强制断开设备群连接的能力。
  • 业务连续性计划 (BCP):即使 Cloudflare 和您自己的基础设施都无法访问,也可以从本地 BCP 脚本触发紧急断开连接。
  • 本地自动化:与配置管理工具(Ansible、Puppet、Chef)或监控代理集成,以管理断开连接状态,而无需维护 HTTPS 端点。

信号格式

外部端点响应负载和本地信号文件内容都必须是具有以下格式的有效 JSON:

{
  "emergency_disconnect": false | true
}
  • 如果 emergency_disconnect 设置为 true,设备将启动紧急断开连接。
  • If emergency_disconnect 设置为 false,设备将继续正常运行。

设置外部紧急断开连接

功能可用性

客户端模式 Zero Trust 方案 ↗
所有模式 所有方案
系统 可用性 最低客户端版本
Windows ✅ 2025.10.186.0
macOS ✅ 2025.10.186.0
Linux ✅ 2025.10.186.0
iOS ❌
Android ❌
ChromeOS ❌

启用外部紧急断开连接后,Cloudflare One Client 将定期轮询客户托管的 HTTPS 端点。客户端只有在收到具有新状态的有效 JSON 负载时才会更改其连接状态。任何未能成功检索状态的情况(如端点无法访问、证书指纹无效或负载结构不正确)都不会导致客户端上的状态更改。

外部端点要求

外部断开连接端点是托管在 Cloudflare 之外的 HTTPS 服务器,Cloudflare One Client 将从中获取紧急断开连接信号。客户完全负责管理此端点。

端点 URL

外部端点 URL 应:

  • 使用 HTTPS 协议。
  • 使用 IPv4 或 IPv6 地址作为主机,而不是域名。
  • (推荐)使用公共 IP,以确保设备无论其网络位置如何都能获取最新状态。

密码套件

Cloudflare One Client 使用 Rustls ↗ 建立 TLS 连接。确保您的 HTTPS 端点接受 Rustls 支持的密码套件 ↗ 之一。

1. 创建外部断开连接端点

要配置外部紧急断开连接,您需要在您自己的基础设施中准备一个 HTTPS 端点,用以提供全局断开连接信号。Cloudflare One Client 将轮询该外部端点,并根据您上传到 Zero Trust 的 SHA-256 指纹验证其 TLS/SSL 证书。有关更多详细信息,请参阅 外部端点要求。

以下示例演示如何使用 Docker 中的 nginx 容器部署外部断开连接端点。

  1. 生成 TLS/SSL 证书:

    openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout key.pem -out cert.pem

    您将收到填写专有名称 (DN) 字段的提示。填写您组织的信息,或按 Enter 键使用默认值。

    该命令将输出 PEM 格式的证书及其私钥。将这些文件存放在安全的地方。

  2. 配置您网络上的 HTTPS 服务器以使用此证书和密钥:

    a. 创建一个名为 nginx.conf 的 nginx 配置文件:

    nginx.conftxt
    events {
    	worker_connections  1024;
    }
    
    http {
    		server {
    				listen              443 ssl;
    				ssl_certificate     /certs/cert.pem;
    				ssl_certificate_key /certs/key.pem;
    				location /status/disconnect {
    						default_type application/json;
    						return 200 '{"emergency_disconnect": false}';
    				}
    		}
    	}

    如果需要,将 /certs/cert.pem 和 /certs/key.pem 替换为您的证书和密钥的位置。

    b. 将 nginx 镜像添加到您的 Docker compose 文件中:

    docker-compose.ymlyml
    services:
    	nginx:
    		image: nginx:latest
    		ports:
    			- 3333:443
    		volumes:
    			- ./nginx.conf:/etc/nginx/nginx.conf:ro
    			- ./certs:/certs:ro

    如果需要,将 ./nginx.conf 和 ./certs 替换为您的 nginx 配置文件和证书的位置。

    c. 启动服务器:

    docker compose up -d
  3. 要测试 HTTPS 端点是否正常工作,请从终端用户的设备上运行 curl 命令。由于我们使用的是自签名证书,您需要传递 --insecure 选项。

    curl --insecure https://<server-ip>:3333/status/disconnect
    {"emergency_disconnect": false}

2. 提取 SHA-256 指纹

要获取本地证书的 SHA-256 指纹:

openssl x509 -noout -fingerprint -sha256 -inform pem -in cert.pem | tr -d :

输出将类似于:

SHA256 Fingerprint=DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662

要测试连接性并获取远程服务器的 SHA-256 指纹:

openssl s_client -connect <private-server-IP>:443 < /dev/null 2> /dev/null | openssl x509 -noout -fingerprint -sha256 | tr -d :

输出将类似于:

SHA256 Fingerprint=DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662

3. 开启外部紧急断开连接

要使用仪表板配置外部紧急断开连接:

  1. 在 Cloudflare 仪表板 ↗ 中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Management(管理)。
  2. 选择 Global disconnection settings(全局断开连接设置)。
  3. 找到 Manage device connection using an external signal(使用外部信号管理设备连接) 并选择 Edit(编辑)。
  4. 配置以下字段:
    • Endpoint IP address and port(端点 IP 地址和端口):输入要获取外部断开连接信号的 HTTPS URL(例如,https://192.0.2.1:3333/status/disconnect)。该端点必须使用 HTTPS,且主机必须是 IPv4 或 IPv6 地址。
    • Polling frequency(轮询频率):选择 Cloudflare One Client 获取外部断开连接信号的频率。
    • Certificate fingerprint(证书指纹):输入 HTTPS 服务器证书的 SHA-256 指纹(例如,DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662)。
  5. 选择 Save(保存)。
  6. 开启 Manage device connection using an external signal(使用外部信号管理设备连接)。

您组织中的所有 Cloudflare One Client 现在将开始轮询外部端点,并根据响应负载连接或断开连接。

要使用 API 配置外部紧急断开连接,请向 /devices/settings 端点发送 PATCH 请求:

Required API token permissions

At least one of the following token permissions is required:
  • Zero Trust Write
Patch device settings for a Zero Trust accountbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/settings" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"external_emergency_signal_enabled": true,
		"external_emergency_signal_url": "https://192.0.2.1:3333/status/disconnect",
		"external_emergency_signal_fingerprint": "DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662",
		"external_emergency_signal_interval": "1m"
	}'

要使用 MDM 配置外部紧急断开连接,请将以下参数添加到您的 MDM 文件 中:

<key>external_emergency_signal_url</key>
<string>https://192.0.2.1:3333/status/disconnect</string>
<key>external_emergency_signal_fingerprint</key>
<string>DD4F4806C57A5BBAF1AA5B080F0541DA75DB468D0A1FE731310149500CCD8662</string>
<key>external_emergency_signal_interval</key>
<integer>60</integer>

4. 测试外部紧急断开连接

  1. 确保已连接 Cloudflare One Client。

  2. 确保已开启外部紧急断开连接功能。

  3. 在您的外部端点配置中,将 emergency_disconnect 更改为 true:

    { "emergency_disconnect": true }
  4. 您可能需要重新加载服务器以应用更改。要重新加载示例 nginx 服务器:

    docker exec <container-name-or-id> nginx -s reload

Cloudflare One Client 将在配置的轮询间隔内自动断开连接,且 Cloudflare One Client GUI 将显示 管理员定向断开连接(Admin directed disconnect)。要重新连接所有设备,请将 emergency_disconnect 重新更改为 false。

设置本地紧急断开连接

功能可用性

客户端模式 Zero Trust 计划 ↗
所有模式 所有计划
系统 可用性 最低客户端版本
Windows ✅ 2026.5.0
macOS ✅ 2026.5.0
Linux ✅ 2026.5.0
iOS ❌
Android ❌
ChromeOS ❌

本地紧急断开连接允许组织在设备本身触发紧急断开连接,而无需网络访问任何远程基础设施。Cloudflare One Client 监控固定且管理员可写的路径下的本地 JSON 文件。当该文件包含断开连接信号时,客户端会进入紧急断开连接状态。本地脚本、配置管理工具(如 Ansible、Puppet 或 Chef)或监控代理可以直接在设备上创建或修改信号文件。

信号文件路径

Cloudflare One Client 监控需要管理员权限才能修改的固定文件路径。该路径不可配置。

操作系统 文件路径
Windows %PROGRAMDATA%\Cloudflare\emergency_disconnect.json
macOS /Library/Application Support/Cloudflare/emergency_disconnect.json
Linux /var/lib/cloudflare-warp/emergency_disconnect.json

信号文件使用与外部 HTTPS 端点相同的 JSON 格式。如果该文件不存在,客户端会将其视为正常运行(false)。如果该文件包含无效的 JSON,客户端将记录错误且不更改状态。客户端会在 30 秒内对文件更改做出反应。

1. 开启本地紧急断开连接

要启用该功能,请通过您的 MDM 部署 local_emergency_signal_enabled 参数。将以下内容添加到您的 MDM 文件 中:

<key>local_emergency_signal_enabled</key>
<true />

应用 MDM 设置后,Cloudflare One Client 将开始监控 信号文件路径。配置更改将生效,无需重启客户端。

2. 测试本地紧急断开连接

  1. 确保已连接 Cloudflare One Client。
  2. 确保已开启本地紧急断开连接。
  3. 在针对您操作系统的相应路径下创建信号文件,其内容如下:
sudo tee "/Library/Application Support/Cloudflare/emergency_disconnect.json" <<< '{"emergency_disconnect": true}'

打开提升了权限的 PowerShell 提示符并运行:

Set-Content -Path "$env:PROGRAMDATA\Cloudflare\emergency_disconnect.json" -Value '{"emergency_disconnect": true}'
sudo tee /var/lib/cloudflare-warp/emergency_disconnect.json <<< '{"emergency_disconnect": true}'

Cloudflare One Client 将在 30 秒内自动断开连接,且 Cloudflare One Client GUI 将显示 管理员定向断开连接(Admin directed disconnect)。

要重新连接,请将 emergency_disconnect 更改为 false 或删除该文件:

sudo rm "/Library/Application Support/Cloudflare/emergency_disconnect.json"
Remove-Item "$env:PROGRAMDATA\Cloudflare\emergency_disconnect.json"
sudo rm /var/lib/cloudflare-warp/emergency_disconnect.json

日志

由于来自外部端点和本地文件的紧急断开连接信号独立于 Cloudflare 的基础设施,因此这些断开连接事件不会被 Cloudflare 记录。仪表板日志仅报告功能设置的更改(例如开启/关闭功能或更改端点 URL),而不会报告断开连接事件。

要获取设备上当前的紧急断开连接状态,请运行:

warp-cli settings
Merged configuration:
(override)	Emergency disconnect: true (issued @ 2025-12-09T13:57:42.597864Z)

当前状态在 warp-settings.txt 的 客户端诊断日志 中也可用。

清除紧急断开连接状态

清除外部紧急断开连接

如果外部端点变得不可用或提供无效配置,Cloudflare One Client 可能会卡在紧急断开连接状态。您可以通过删除其外部紧急断开连接配置来恢复客户端:

  1. 在 Cloudflare 仪表板 ↗ 中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Management(管理)。
  2. 选择 Global disconnection settings(全局断开连接设置)。
  3. 关闭 Manage device connection using an external signal(使用外部信号管理设备连接)。

Cloudflare 会将新设置传播给客户端,指示它们停止轮询并丢弃缓存的紧急状态。

发送 PATCH 请求,将端点 URL 和指纹设置为空字符串:

Required API token permissions

At least one of the following token permissions is required:
  • Zero Trust Write
Patch device settings for a Zero Trust accountbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/settings" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"external_emergency_signal_enabled": false,
		"external_emergency_signal_url": "",
		"external_emergency_signal_fingerprint": "",
		"external_emergency_signal_interval": "1m"
	}'

Cloudflare 会将新设置传播给客户端,指示它们停止轮询并丢弃缓存的紧急状态。

如果您使用 MDM 部署了外部紧急断开连接,请从 MDM 配置文件中删除 external_emergency_signal_url 键(以及其他相关键)。然后,使用您的 MDM 将更改推送到设备。Cloudflare One Client 将停止轮询外部端点并丢弃其缓存的紧急状态。

或者,用户可以将 Cloudflare One Client 切换到没有配置此功能的不同的 MDM 配置。

清除本地紧急断开连接

要清除本地紧急断开连接状态:

  1. 删除或更新信号文件,使 emergency_disconnect 为 false。
  2. 或者,从您的 MDM 配置文件中删除 local_emergency_signal_enabled 键,并将更改推送到设备以关闭该功能。客户端将停止监控本地文件并丢弃其缓存的本地信号状态。

本地客户端重置

作为最后的手段,您可以使用 CLI 在单个设备上重置紧急断开连接:

warp-cli registration delete

此命令将清除客户端注册、清除本地策略并丢弃缓存的紧急状态。要重新连接,您需要关闭外部紧急断开连接,然后向您的 Zero Trust 组织重新注册 Cloudflare One Client。

设备客户端设置优先级

了解全局断开连接设置如何进行交互,以及它们如何影响其他设备客户端配置文件设置。

全局断开连接设置

客户端将遵从来自 Cloudflare 仪表板(通过 在所有设备上断开 Cloudflare One Client 连接)、外部端点以及本地信号文件的断开连接信号。如果任意源触发了全局断开连接,该断开连接将被强制执行。所有源都必须指示正常运行,客户端才能重新连接。

下表显示了这三个信号源是如何结合的。如果任意源指示断开连接,客户端就会断开连接。

仪表板(断开所有设备) 外部端点 本地文件 结果
开启 true true 强制断开连接
开启 true false/不存在 强制断开连接
开启 false true 强制断开连接
开启 false false/不存在 强制断开连接
关闭 true true 强制断开连接
关闭 true false/不存在 强制断开连接
关闭 false true 强制断开连接
关闭 false false/不存在 正常运行

自动连接

在全局断开连接生效期间,自动连接(Auto connect)不适用。

锁定设备客户端开关

在全局断开连接生效期间,锁定设备客户端开关(Lock device client switch)不适用。除非用户有管理员覆盖码(admin override code),否则他们将无法连接 Cloudflare One Client。

管理员覆盖

全局断开连接将清除任何现有的管理员覆盖码(admin override codes)。在全局断开连接期间,用户重新连接的唯一方法是使用新的管理员覆盖码(admin override codes)。例如,您可能希望向 IT 人员提供一个覆盖码,以便他们测试导致全局断开连接的事件的解决方法。覆盖码将豁免特定用户和设备免受全局断开连接的影响,直到覆盖超时到期。

这篇文档对您有帮助吗?