跳转到内容
搜索文档

定时 DNS 策略

最后更新 查看 MarkdownAgent 设置

默认情况下,开启后的 Cloudflare Gateway 策略会始终应用。使用定时 DNS 策略,您可以控制 DNS 策略何时生效 —— 例如,仅在工作时间阻止社交媒体,或者在维护窗口期间临时允许访问受限网站。您可以将策略配置为在特定时间段内生效,或者设置该策略在一定时间后失效。

有两种定时 DNS 策略选项:

  • 策略持续时间:策略在开启后的特定时间段内生效(例如 30 分钟)。
  • 策略日程表:策略在每周循环的日程内生效(例如工作日早 9 点到晚 5 点)。

策略持续时间

您可以使用基于时间的策略持续时间来为策略开启设置特定时间框架,或者配置策略关闭的精确时间。

要为 DNS 策略设置持续时间:

  1. Cloudflare 仪表板中,转到 Zero Trust(Zero Trust)> Traffic policies(流量策略)> Firewall policies(防火墙策略)> DNS
  2. 创建新的 DNS 策略或选择现有策略并选择 Edit(编辑)
  3. 在 **Apply durations and schedules(应用持续时间和日程表)**中,打开 Policy duration(策略持续时间)
  4. 在 **Input method(输入方式)**中,选择持续时间类型:
    • 选择 Duration 并输入策略关闭前的具体时间量。
    • 选择 Exact end date 并以您账户的时区输入策略关闭的具体日期和时间。
  5. 选择 Save policy(保存策略)

当策略关闭时,它将保持关闭状态,直到您再次将其开启。

例如,您可以在下午 12:00 创建策略并将其设置为在六小时后关闭。如果您在下午 3:00 关闭该策略,并在下午 4:00 重新将其开启,该策略仍将在下午 6:00 关闭 —— 这是首次激活时间后的六小时,而不是累计生效的六小时。

重置策略持续时间

当策略的时间持续时间到期时,您可以为您最初配置的持续时间重新开启该策略。要重置策略的持续时间,请选择该策略并选择 Reset policy duration(重置策略持续时间)

对于具有精确结束时间的策略,您可以在策略关闭之前更改该时间。一旦策略达到其精确结束时间,您将需要编辑该策略并设置新的结束时间。要设置新的精确结束时间:

  1. 选择策略。
  2. 选择 Edit(编辑)
  3. 打开 Set a policy duration(设置策略持续时间)
  4. 在 **Input method(输入方式)**中,选择 Exact end date。在 **Date and time(日期和时间)**中,输入策略关闭的新日期和时间。
  5. 选择 Save policy(保存策略)

策略日程表

您可以使用 Gateway 创建带有日程的新 DNS 策略,或者向现有策略添加日程。

  1. Cloudflare 仪表板中,转到 Zero Trust(Zero Trust)> Traffic policies(流量策略)> Firewall policies(防火墙策略)> DNS
  2. 创建新的 DNS 策略或选择现有策略并选择 Edit(编辑)
  3. 在 **Apply durations and schedules(应用持续时间和日程表)**中,打开 Policy schedule(策略日程表)
  4. (可选)在 **Time Zone(时区)**中选择时区,以根据您选择的时区应用策略,而不管用户身在何处。默认情况下,Gateway 将使用最终用户的时区,根据发起 DNS 查询的用户的本地时间来应用策略。
  5. 在 **Schedule template(日程表模板)**中选择预设日程,或者选择 Custom schedule 来自定义日程。您最多可以选择三个不重叠的、间隔为 15 分钟的时间范围。
  6. 选择 Save policy(保存策略)

要使用 API 为策略设置日程,请使用 Create a Zero Trust Gateway rule 终点,并将 schedule 参数设置为您期望的星期几、一天中的时间以及可选的时区。例如:

Create a Zero Trust Gateway rulebash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"action": "block",
		"name": "Block gambling sites on weekends",
		"traffic": "any(dns.content_category[*] in {\"Gambling\"})",
		"schedule": {
				"sat": "08:00-17:00",
				"sun": "08:00-17:00",
				"timezone": "Europe/Paris"
		}
	}'

当您选择该策略时,该策略的日程将显示在 Cloudflare 仪表板的 Zero Trust > Traffic policies(流量策略) > Firewall policies(防火墙策略) > DNS 下。

Gateway 如何确定时区

如果您为日程指定了时区,Gateway 将始终使用该时区的当前时间,而无论用户身在何处。这使您能够在某个固定的时间段内启用策略。

如果您未指定时区,Gateway 将基于用户的本地时区启用 DNS 策略。用户的时区是根据其源 IP 地址的 IP 地理位置推断出来的。如果 Gateway 无法根据源 IP 确定时区,它将回退到接收到查询的数据中心的时区。

示例:固定时区

以下命令创建了一条 DNS 策略,以仅在美国芝加哥时区的工作日 8:00 AM - 12:30 PM 和 1:30 PM - 5:00 PM 阻止 facebook.com

Create a Zero Trust Gateway rulebash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "office-no-facebook-policy",
		"action": "block",
		"traffic": "dns.fqdn == \"facebook.com\"",
		"enabled": true,
		"schedule": {
				"time_zone": "America/Chicago",
				"mon": "08:00-12:30,13:30-17:00",
				"tue": "08:00-12:30,13:30-17:00",
				"wed": "08:00-12:30,13:30-17:00",
				"thu": "08:00-12:30,13:30-17:00",
				"fri": "08:00-12:30,13:30-17:00"
		}
	}'

有关所有时区标识符的列表,请参阅此表格

示例:用户时区

以下命令创建了一条 DNS 策略,以仅在用户当前所在时区的周末阻止 clockin.com

Create a Zero Trust Gateway rulebash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "clock-in-policy",
		"action": "block",
		"traffic": "dns.fqdn == \"clockin.com\"",
		"enabled": true,
		"schedule": {
				"sat": "00:00-24:00",
				"sun": "00:00-24:00"
		}
	}'

这篇文档对您有帮助吗?