Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

最大 DNS TTL

最終更新 Markdown で表示Agent セットアップ

Gateway が返す DNS 応答に、最大 TTL(Time-to-Live)を設定します。上流 DNS レコードの TTL が設定した上限を超える場合、Gateway はその TTL を指定した値に切り詰めます。値を小さくすると、新たに特定した悪意のあるドメインのブロックなど、DNS ポリシーの変更がすべてのクライアントへ早く反映されます。一方で、キャッシュが短くなるためクエリ量は増えます。

最大 TTL の上限は、許可したクエリに対する上流由来の DNS 回答にだけ適用されます。Gateway が生成する応答(ブロック、上書き、セーフサーチの回答)は、もともと短いデフォルト TTL を使うため影響を受けません。

仕組み

Gateway は段階的な TTL の優先順位を適用します。いちばん具体的な設定が優先されます。

  1. DNS ロケーションにロケーション単位の上書きがある場合は、その値を使います。
  2. ロケーションが設定を継承している場合は、アカウントレベルの最大 TTL を使います。
  3. どのレベルにも最大 TTL が設定されていない場合は、上流の TTL をそのまま使います。

最大 TTL の有効範囲は 60〜36,000 秒(1 分〜10 時間)です。

アカウントレベルの最大 TTL を設定する

アカウントレベルの設定は、ロケーション単位の上書きがないすべての DNS ロケーションに適用されます。

  1. Zero TrustTraffic Policies > Traffic Settings を開きます。
  2. Proxy and inspection の下で、Configure time-to-live for DNS resolution を探します。
  3. 秒単位の値を入力します(60〜36,000)。
  4. Save を選択します。
curl --request PUT \
  https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/configuration \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "settings": {
      "max_ttl_secs": 3600
    }
  }'

アカウントレベルの上限を外す(上流 TTL をそのまま通す)には、max_ttl_secs フィールドを省略するか、null に設定します。

ロケーション単位の最大 TTL を設定する

DNS ロケーション は、アカウントレベルの設定を上書きできます。ロケーション単位の設定には、次の 3 つのモードがあります。

モード 動作
Respect account-level setting (inherit) アカウントレベルで設定した値を使います。新しいロケーションのデフォルトです。
Do not set max value (disabled) このロケーションの最大 TTL 上限を無効にします。アカウントレベルに上限があっても適用しません。上流の TTL をそのまま使います。
Custom (override) アカウントレベルの値を上書きする、ロケーション固有の最大 TTL を設定します。60〜36,000 の ttl_secs が必要です。
  1. Zero TrustNetworks > Resolvers & Proxies > DNS locations を開きます。
  2. ロケーションを選ぶか、新規作成します。
  3. DNS Endpoints タブで、Configure time-to-live for this location を探します。
  4. 次のいずれかを選びます。
    • Respect account-level setting — アカウントレベルの TTL 上限を継承します。
    • Do not set max value — このロケーションの TTL 上限を無効にします。
    • Custom — 秒単位の TTL を入力します。
  5. Save を選択します。
# Inherit account-level setting (default)
curl --request PUT \
  https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/locations/{location_id} \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "max_ttl": {
      "mode": "inherit"
    }
  }'
# Disable max TTL for this location
curl --request PUT \
  https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/locations/{location_id} \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "max_ttl": {
      "mode": "disabled"
    }
  }'
# Override with a custom value
curl --request PUT \
  https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/locations/{location_id} \
  --header "Authorization: Bearer {api_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "max_ttl": {
      "mode": "override",
      "ttl_secs": 3600
    }
  }'

DNS ログのフィールド

最大 TTL が有効なとき、Gateway の DNS ログに次の 2 つのフィールドが追加されます。

フィールド 説明
upstream_record_ttls 上限適用前の、上流 DNS 応答の元の TTL です。
applied_max_ttl Gateway が応答に適用した最大 TTL です。上限を適用していない場合、このフィールドはありません。

これらのフィールドは、ダッシュボードの DNS ログの列ピッカーでは DNS Response Details グループにあり、Logpush データセットでも確認できます。

役に立ちましたか?