Skip to content

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

DNS ポリシー

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

DNS ポリシーは、DNS クエリ(ドメイン名を IP アドレスに変換する検索)を検査して、ユーザーが到達できる Web サイトとサービスを制御します。DNS ポリシーは検索の段階で働くため、Web ブラウザーだけでなく、すべてのプロトコルとアプリケーションに効きます。

ユーザーが DNS リクエストを出すと、Gateway は組織向けに設定した DNS ポリシーと照合します。ドメインがブロック対象のカテゴリに属さず、Allow または Override ポリシーに一致する場合、ユーザーのクライアントは Cloudflare のパブリック DNS リゾルバー(1.1.1.1)による名前解決に基づくアドレスを受け取ります。リゾルバーポリシー を使い、DNS リクエストをカスタムサーバーへリダイレクトすることもできます。

DNS ポリシーは Action と、アクションの範囲を決める論理式で構成されます。式を組み立てるには SelectorOperator を選び、Value フィールドに値または値の範囲を入力します。複数の条件を評価するには AndOr の論理演算子を使えます。

DNS ポリシーを作成するとき、ネットワークを十分に保護するために必要な数のセキュリティリスクカテゴリとコンテンツカテゴリを選べます。ポリシーにより具体的なセレクター(User EmailSource IP など)が設定されていない限り、ポリシーは組織から Gateway に届くすべての DNS クエリに対して評価されます。

式の条件が query 属性(Source IP など)と応答属性(Resolved IP など)を組み合わせている場合、その条件は応答を受信したときに評価されます。

アクション

アクションは、DNS クエリがポリシー条件に一致したときに Gateway が行う処理を決めます。ポリシーあたり 1 つのアクションを割り当てられます。

選べるアクションの種類は次のとおりです。

Allow

API value: allow

利用できるセレクター

Traffic

Identity

Allow アクションのポリシーは、DNS クエリの名前解決を明示的に許可します。Gateway は 先に一致したものを優先する原則 を使うため、Allow ポリシーが Block ポリシーより高い優先度でクエリに一致すると、そのクエリは名前解決を許可されます。たとえば次の設定は、Education コンテンツカテゴリに属するドメインへの DNS クエリを許可します。

セレクター 演算子 アクション
Content Categories in Education Allow

DNSSEC 検証を無効にする

DNSSEC (Domain Name System Security Extensions) は、レコードに付いた暗号署名を確認し、DNS 応答が改ざんされていないことを検証します。Disable DNSSEC validation を選ぶと、Gateway は署名を検証できなくても DNS クエリを解決します。検証失敗が悪意のある攻撃ではなく DNSSEC 設定の問題だとわかっている場合を除き、DNSSEC 検証の無効化は推奨しません。

Block

API value: block

利用できるセレクター

Traffic

Identity

Block アクションのポリシーは、Selector と Value フィールドで指定した宛先への DNS クエリの名前解決を阻止します。たとえば次の設定は、Adult Themes コンテンツカテゴリに属するドメインへの DNS クエリをブロックします。

セレクター 演算子 アクション
Content Categories in Adult Themes Block

カスタムブロックページ

Block アクションを選ぶとき、Modify Gateway block behavior をオンにすると、ブロックされた Web サイトにアクセスしたユーザーへブロックページを返します。任意で、特定の DNS ポリシーについてグローバルなブロックページ設定を URL リダイレクトで上書きできます。詳細は ブロックページ を参照してください。

ポリシーでブロックページがオフの場合、Gateway はブロックしたクエリに対して 0.0.0.0A レコード(IPv4)、または ::AAAA レコード(IPv6)を返します。これらのアドレスではサーバーが応答しないため、ブラウザーはデフォルトの接続エラーページを表示します。

A または AAAA 以外の種類の DNS レコードに対するクエリの解決をブロックする場合、Gateway は REFUSED (RCODE:5) の DNS 応答コードを返します。Gateway はリクエストをブロックしますが、ブロックページは表示しません。

Cloudflare One Client のブロック通知

機能の可用性

クライアントモード Zero Trust プラン
  • Traffic and DNS mode
  • Traffic only mode
Enterprise
システム 可用性 最小クライアントバージョン
Windows 2024.1.159.0
macOS 2024.1.160.0
Linux
iOS 1.7
Android 1.4
ChromeOS 1.4

Display block notification for Cloudflare One Client をオンにすると、Gateway のブロックイベントの通知を表示できます。ブロックされたユーザーには、Cloudflare One Client から OS の通知が届き、設定したカスタムメッセージが表示されます。カスタムメッセージを設定しない場合、Cloudflare One Client はデフォルトのメッセージを表示します。カスタムメッセージは 100 文字以内にしてください。Cloudflare One Client は 1 分あたり 1 件の通知だけを表示します。

通知を選ぶと、Cloudflare One Client は設定した Gateway ブロックページ へユーザーを案内します。任意で、社内サポートフォームなどのカスタム URL へ案内することもできます。

Send policy context をオンにすると、Gateway は一致したリクエストの詳細を、リダイレクト URL にクエリ文字列として付加します。すべてのコンテキストフィールドが含まれるわけではありません。ポリシーコンテキストのフィールドには、次のようなものがあります。

ポリシーコンテキストのフィールド

フィールド 定義
User email クエリを行ったユーザーのメールアドレスです。 &[email protected]
Site URL 元の HTTP リクエストの完全な URL、または DNS クエリのドメイン名です。 &cf_site_uri=https%3A%2F%2Fmalware.testcategory.com%2F
URL category リダイレクト対象 URL の ドメインカテゴリ です。 &cf_request_categories=New%20Domains,Newly%20Seen%20Domains
Original HTTP referer HTTP トラフィックの場合、HTTP リクエストの元の HTTP referer ヘッダーです。 &cf_referer=https%3A%2F%2Fexample.com%2F
Rule ID リクエストに一致した Gateway ポリシーの ID です。 &cf_rule_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Source IP ポリシーに一致したデバイスの送信元 IP アドレスです。 &cf_source_ip=203.0.113.5
Device ID ポリシーに一致したデバイスの UUID です。 &cf_device_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Application names リダイレクト先ドメインに対応するアプリケーション名です(ある場合)。 &cf_application_name=Salesforce
Filter ブロックを引き起こしたトラフィックタイプのフィルターです。 &cf_filter=http, &cf_filter=dns, &cf_filter=av, or &cf_filter=l4
Account ID 関連する Zero Trust アカウントの Cloudflare アカウント ID です。 &cf_account_id=d57c3de47a013c03ca7e237dd3e61d7d
Query ID リダイレクトが適用された DNS クエリの ID です。 &cf_query_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Connection ID リダイレクトが適用されたプロキシ接続の ID です。 &cf_connection_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Request ID リダイレクトが適用された HTTP リクエストの ID です。 &cf_request_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3

オペレーティングシステムが Cloudflare One Client の通知を許可していることを確認してください。集中モード、おやすみモード、画面共有の設定がオンだと、デバイスに通知が表示されないことがあります。DisplayLink ソフトウェアを実行している macOS デバイスでクライアント通知をオンにするには、ディスプレイのミラーリング中にシステム通知を許可する必要がある場合があります。詳細は macOS のドキュメント を参照してください。

Override

API value: override

利用できるセレクター

Override アクションは、DNS 解決中または解決後に評価されるセレクターと組み合わせて使えません。

Traffic

Identity

Override アクションのポリシーは、実際の DNS 応答を指定した宛先で置き換えます。ポリシーに一致するドメインをユーザーが問い合わせると、Gateway は実際の DNS レコードではなく、カスタムの IP アドレスまたはホスト名を返します。たとえば、www.example.com へのすべてのクエリに対してカスタム応答 IP 1.2.3.4 を返すには、次のポリシーを使います。

セレクター 演算子 アクション Override Hostname
Hostname is www.example.com Override 1.2.3.4

API value: safesearch

利用できるセレクター

Traffic

Identity

SafeSearch は、露骨または攻撃的なコンテンツのフィルタを助ける検索エンジンの機能です。SafeSearch を有効にすると、検索エンジンは露骨または攻撃的なコンテンツをフィルタし、子どもや職場向けに安全な検索結果を返します。

Cloudflare Gateway を使い、Google、Bing、Yandex、YouTube、DuckDuckGo などの検索エンジンで SafeSearch を有効にできます。たとえば Google で SafeSearch を有効にするには、次のポリシーを作成できます。

セレクター 演算子 アクション
Domain is google.com Safe Search

YouTube Restricted Mode

API value: ytrestricted

利用できるセレクター

Traffic

Identity

同様に、YouTube Restricted アクションを選んで YouTube Restricted Mode を強制できます。YouTube Restricted Mode は、YouTube に組み込まれたアダルトおよび攻撃的なコンテンツの自動フィルタです。YouTube Restricted Mode を有効にするには、次のようなポリシーを設定できます。

セレクター 演算子 アクション
DNS Domain is youtube.com YouTube Restricted

この設定により、ユーザーは DNS を使って攻撃的なサイトへアクセスできなくなります。

セレクター

Gateway は、次のセレクター(条件)と DNS クエリを照合します。

各セレクターは、DNS 解決プロセスの特定の段階で評価されます。

  • DNS 解決前 — Gateway は、応答を検索する前に、着信クエリのプロパティ(ドメイン名や送信元 IP など)を検査します。
  • DNS 解決中 — Gateway は、クエリを解決する過程で見つかった情報(権威ネームサーバー IP など)を検査します。
  • DNS 解決後 — Gateway は、解決完了後に DNS 応答(解決済み IP や CNAME レコードなど)を検査します。

Override アクションは、DNS 解決中または解決後に評価されるセレクターと組み合わせて使えません。上書きは応答が返る前に適用する必要があるためです。評価段階と優先度の関係の詳細は 適用順序 を参照してください。

Application

人気の Web アプリケーションのリスト(順次追加)に対して、DNS ポリシーを適用できます。詳細は アプリケーションとアプリタイプ を参照してください。

UI 名 API の例 評価フェーズ
Application any(app.ids[*] in {505}) DNS 解決前

Authoritative Nameserver IP

このセレクターは、権威ネームサーバーの IP アドレスと照合します。

UI 名 API の例 評価段階
Authoritative Nameserver IP dns.authoritative_ns_ips == 198.51.100.0 DNS 解決中

Content Categories

このセレクターは、特定の コンテンツカテゴリ に属するドメインをフィルタするために使います。

UI 名 API の例 評価フェーズ
Content Categories any(dns.content_category[*] in {1}) DNS 解決前

Allow または Block アクションを使うとき、任意で IP アドレスをブロック したり、CNAME レコードのカテゴリをフィルタ したりできます。

DNS CNAME Record

このセレクターは、DNS 応答を CNAME レコードでフィルタします。

UI 名 API の例 評価段階
DNS CNAME Response Value any(dns.response.cname[*] in {"www.apple.com.edgekey.net"}) DNS 解決後

DNS MX Record

このセレクターは、DNS 応答を MX レコードでフィルタします。

UI 名 API の例 評価段階
DNS MX Response Value any(dns.response.mx[*] in {"gmail-smtp-in.l.google.com"}) DNS 解決後

DNS PTR Record

このセレクターは、DNS 応答を PTR レコードでフィルタします。

UI 名 API の例 評価段階
DNS PTR Response Value any(dns.response.ptr[*] in {"255.2.0.192.in-addr.arpa"}) DNS 解決後

DNS Resolver IP

登録済みの DNS ロケーションに対応する Gateway Resolver IP アドレスへ届いた DNS クエリに、ポリシーを適用するときにこのセレクターを使います。ほとんどの Gateway 利用者では IPv4 エニーキャストアドレスであり、この IPv4 アドレスで作成したポリシーはすべての DNS ロケーションに適用されます。ただし、各 DNS ロケーションには専用の IPv6 アドレスがあり、一部の Gateway 利用者には専用の IPv4 アドレスが提供されています。どちらも、特定の登録済み DNS ロケーションにポリシーを適用するために使えます。

UI 名 API の例 評価フェーズ
DNS Resolver IP any(dns.resolved_ip[*] == 198.51.100.0) DNS 解決前

DNS TXT Record

このセレクターは、DNS 応答を TXT レコードでフィルタします。

UI 名 API の例 評価段階
DNS TXT Response Value any(dns.response.txt[*] in {"your_text"}) DNS 解決後

DoH Subdomain (DNS over HTTPS)

このセレクターは、各 DNS ロケーションに設定した DoH エンドポイント宛の、DNS-over-HTTPS(DoH)経由の DNS クエリに一致させるために使います。たとえば、DoH エンドポイントが abcdefg.cloudflare-gateway.com の DNS ロケーションを使う場合は、DoH Subdomain セレクターを選び、値に abcdefg を入力します。

UI 名 API の例 評価フェーズ
DOH Subdomain dns.doh_subdomain == "abcdefg" DNS 解決前

Domain

このセレクターは、ドメインとそのすべてのサブドメインに一致します。たとえば、example.comwww.example.com などのサブドメインに一致できます。

UI 名 API の例 評価フェーズ
Domain any(dns.domains[*] == "example.com") DNS 解決前

Gateway ポリシーは、非ラテン文字を含む domain を直接はサポートしません。非ラテン文字を含む domain を使うには、リスト に追加します。

Host

このセレクターは、指定したホスト名だけに一致します。たとえば、test.example.com には一致しますが、example.comwww.test.example.com には一致しません。

UI 名 API の例 評価フェーズ
Host dns.fqdn == "example.com" DNS 解決前

Gateway ポリシーは、非ラテン文字を含む hostname を直接はサポートしません。非ラテン文字を含む hostname を使うには、リスト に追加します。

Indicator Feeds

このセレクターは、カスタムのインジケーターフィードと照合します。

公開されているインジケーターフィード、または指定のサードパーティベンダーがアカウントに割り当てたカスタムインジケーターフィードを使えます。インジケーターフィードの詳細は カスタムインジケーターフィード を参照してください。

UI 名 API の例 評価段階
Indicator Feeds dns.indicator_feed DNS 解決前

Allow または Block アクションを使うとき、任意で IP アドレスをブロック したり、CNAME レコードのカテゴリをフィルタ したりできます。

Location

このセレクターは、特定の Gateway DNS ロケーション、または複数のロケーションにポリシーを適用するために使います。

UI 名 API の例 評価フェーズ
Location dns.location in {"location_uuid_1" "location_uuid_2"} DNS 解決前

Query Record Type

このセレクターは、ポリシーを適用する DNS リソースレコードタイプを選ぶときに使います。たとえば、ドメインの A レコードには一致させ、MX レコードには一致させない、といった指定ができます。

UI 名 API の例 評価フェーズ
Query Record Type dns.query_rtype == "TXT" DNS 解決前

Resolved Continent

このセレクターは、クエリが解決した大陸に基づいてフィルタします。位置情報は応答の IP アドレスから判定されます。大陸を指定するには、Value フィールドに 2 文字コードを入力します。

  • AF - アフリカ
  • AN - 南極
  • AS - アジア
  • EU - ヨーロッパ
  • NA - 北アメリカ
  • OC - オセアニア
  • SA - 南アメリカ
UI 名 API の例 評価段階
Resolved Continent IP Geolocation dns.dst.geo.continent == "EU" DNS 解決後

Resolved Country

このセレクターは、クエリが解決した国に基づいてフィルタします。位置情報は応答の IP アドレスから判定されます。国を指定するには、Value フィールドに ISO 3166-1 Alpha 2 コード を入力します。

UI 名 API の例 評価段階
Resolved Country IP Geolocation dns.dst.geo.country == "RU" DNS 解決後

Resolved IP

このセレクターは、クエリが解決した IP アドレスに基づいてフィルタします。

UI 名 API の例 評価段階
Resolved IP any(dns.resolved_ips[*] == 198.51.100.0) DNS 解決後

Request Context Categories

このセレクターは、DNS クエリの EDNS (Extension Mechanisms for DNS) 部分で送られる、動的な カテゴリ ID のリストと照合します。EDNS を使うと、標準フィールド以外の追加メタデータを DNS クエリに付けられます。Gateway は EDNS OPT コード 65050 からカテゴリ ID を読み取ります。

UI 名 API の例 評価段階
Request Context Categories dns.categories_in_request_context_matches DNS 解決前

Security Categories

このセレクターは、特定の セキュリティカテゴリ に属するドメイン(任意で IP アドレス)と照合します。

UI 名 API の例 評価フェーズ
Security Categories any(dns.security_category[*] in {1}) DNS 解決前

Allow または Block アクションを使うとき、任意で IP アドレスをブロック したり、CNAME レコードのカテゴリをフィルタ したりできます。

Source Continent

このセレクターは、クエリが Gateway に到達した大陸に基づいてフィルタします。

位置情報は、デバイスのパブリック IP アドレス(通常はユーザーの ISP が割り当てます)から判定します。大陸を指定するには、Value フィールドに 2 文字のコードを入力します。

大陸 コード
アフリカ AF
南極 AN
アジア AS
ヨーロッパ EU
北アメリカ NA
オセアニア OC
南アメリカ SA
UI 名 API の例 評価フェーズ
Source Continent IP Geolocation dns.src.geo.continent == "North America" DNS 解決前

Source Country

このセレクターは、クエリが Gateway に到達した国に基づいてフィルタします。

位置情報は、デバイスのパブリック IP アドレス(通常はユーザーの ISP が割り当てます)から判定します。国を指定するには、Value フィールドに ISO 3166-1 Alpha-2 コード を入力します。

UI 名 API の例 評価フェーズ
Source Country IP Geolocation dns.src.geo.country == "RU" DNS 解決前

Source IP

このセレクターは、DNS クエリの送信元 IP アドレスにポリシーを適用します。たとえば、組織が Gateway へクエリを送るために使うスタブリゾルバーの WAN IP アドレスです。

UI 名 API の例 評価フェーズ
Source IP dns.src_ip == 198.51.100.0 DNS 解決前

Source Internal IP

このセレクターは、DNS クエリの送信元内部 IP アドレスにポリシーを適用します。たとえば、組織が Gateway へクエリを送るために使う Cloudflare WAN(旧 Magic WAN)または Cloudflare Mesh の背後にあるホストのプライベート IP アドレスです。

UI 名 API の例 評価段階
Source Internal IP dns.src_internal_ip == 10.10.0.1 DNS 解決前

Users

これらのセレクターを使い、アイデンティティ属性と照合します。

UI 名 API の例 評価フェーズ
User Email identity.email == "[email protected]" DNS 解決前
User Name identity.name == "Test User" DNS 解決前
User Group IDs any(identity.groups[*].id in {"group_id"}) DNS 解決前
User Group Names any(identity.groups[*].name in {"group_name"}) DNS 解決前
User Group Emails any(identity.groups[*].email in {"[email protected]"}) DNS 解決前
SAML Attributes any(identity.saml_attributes["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] in {"Test User"}) DNS 解決前

比較演算子

比較演算子は、Gateway がトラフィックをセレクターと照合する方法です。ダッシュボードのポリシービルダーで Selector を選ぶと、Operator のドロップダウンに、そのセレクターで使える選択肢が表示されます。

演算子 意味
is 定義した値と等しい
is not 定義した値と等しくない
in 定義した値のいずれかと一致する
not in 定義した値のいずれとも一致しない
in list 定義済みの リスト に含まれる
not in list 定義済みの リスト に含まれない
matches regex 正規表現が true と評価される
does not match regex 正規表現が false と評価される
greater than 定義した数値を超える
greater than or equal to 定義した数値以上
less than 定義した数値未満
less than or equal to 定義した数値以下

Value には、等価比較演算子(is など)を使う場合は単一の値を、包含比較演算子(in など)を使う場合は複数の値を入力できます。対応するセレクターでは、正規表現(regex)で値の範囲を指定することもできます。

正規表現

正規表現は Rust で評価されます。Rust の実装は、ほかで使われる正規表現ライブラリと少し異なります。詳細は ワイルドカード のガイドを参照してください。正規表現が一致するか確認するには、Rustexp を使えます。

複数の値に一致させたい場合は、パイプ記号(|)を OR 演算子として使えます。パイプ記号の前にエスケープ文字(\)は不要です。たとえば、次の式は hostname が .*whispersystems.org または .*signal.org のいずれかに一致すると true になります。

セレクター 演算子
Host matches regex .*whispersystems.org|.*signal.org

正規表現に加えて、論理演算子 で複数の値に一致させることもできます。

論理演算子

式内の複数の条件を評価するには、And 論理演算子を選びます。これらの式は、Or 論理演算子でさらに比較できます。

演算子 意味
And 式内のすべての条件に一致する
Or 式内のいずれかの条件に一致する

Or 演算子は、同じ式グループ内の条件に対してのみ使えます。たとえば、Traffic の条件と Identity の条件は比較できません。

制限事項

サードパーティフィルタとの競合

サードパーティ VPN や、iCloud Private RelayGoogle Chrome IP Protection などのインターネットフィルタリングソフトウェア経由のトラフィックは、Gateway では正しくフィルタリングできません。DNS ポリシーをトラフィックに適用するには、Gateway の動作を妨げるソフトウェアをオフにすることを推奨します。

iCloud Private Relay をオフにする方法は、Apple のユーザーガイド(macOS または iOS)を参照してください。

Cloudflare WAN 転送

Cloudflare WAN 経由で転送されたクエリに DNS ポリシーを適用するには、組織の DNS リゾルバーを IPv6、DNS over HTTPS (DoH)、または DNS over TLS (DoT) エンドポイントへ向けるか、専用のリゾルバー IPv4 アドレスをリクエストします。詳細は DNS リゾルバー IP とホスト名 を参照してください。

フォールバック DNS

一部のアプリケーション(WhatsApp や Android Studio など)は、コードにバックアップ DNS サーバーを組み込んでいます。プライマリの DNS クエリが Gateway でブロックされると、これらのアプリは組み込み DNS サーバー(Google の 8.8.8.8 など)へ自動で再試行し、ポリシーを完全に迂回します。この挙動を抑えるには、フォールバック DNS サーバー向けの TCP/UDP ポート 53 の送信 DNS トラフィックをブロックする Gateway ネットワークポリシー を作成します。たとえば Google のフォールバック DNS サーバーをブロックするには:

セレクター 演算子 論理 アクション
Protocol in TCPUDP And Block
Destination Port in 53 And
Destination IP in 8.8.8.88.8.4.4

役に立ちましたか?