DNS over HTTPS (DoH)
Cloudflare Gatewayを使用すると、WARPクライアントをデバイスにインストールすることなく、DNSの場所やユーザーによってDNS over HTTPS (DoH)リクエストをフィルタリングできます。
場所ベースのポリシーでは、DNSリクエストを場所特定のDoHエンドポイントに送信する必要があります。一方、アイデンティティベースのポリシーでは、リクエストにユーザー特定のDoHトークンを含める必要があります。
場所ベースのポリシーでは、DNSリクエストを場所に割り当てられたユニークなDoHエンドポイントに送信する必要があります:
https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query場所のDoHサブドメインを取得します。
ブラウザは任意のDNS over HTTPS (DoH)エンドポイントを使用するように設定できます。ブラウザでDoHを直接設定することを選択した場合、DoHエンドポイントとしてGateway DNSの場所を選択する必要があります。そうしないと、そのブラウザでDNSフィルタリングは行われません。
Mozilla Firefox
- In Firefox, go to Settings.
- In Privacy & Security, go to DNS over HTTPS.
- Under Enable secure DNS using, select Max Protection.
- In Choose provider, choose Custom.
- In the field, enter
https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.
Firefox is now configured to use your DoH endpoint. For more information on configuring DoH settings in Firefox, refer to Mozilla’s documentation ↗.
Google Chrome
- In Chrome, go to Settings > Privacy and security > Security.
- Scroll down and turn on Use secure DNS.
- Select With Custom.
- In the Enter custom provider field, enter
https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.
Read more about enabling DNS over HTTPS ↗ on Chrome.
Microsoft Edge
- In Microsoft Edge, go to Settings.
- Select Privacy, Search, and Services, and scroll down to Security.
- Turn on Use secure DNS.
- Select Choose a service provider.
- In the Enter custom provider field, enter
https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.
Brave
- In Brave, go to Settings > Security and Privacy > Security.
- Turn on Use secure DNS.
- Select With Custom.
- In the Enter custom provider field, enter
https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.
Safari
Currently, Safari does not support DNS over HTTPS.
DNSクエリは現在、Gatewayに送信されてフィルタリングされます。これらのリクエストをフィルタリングするには、DNSの場所セレクターを使用してDNSポリシーを構築します。
Windows 11
-
場所のDoHエンドポイントに関連付けられた
AおよびAAAAレコードの値を取得します。- 次のコマンドを実行して
Aレコードの値を取得します:
Terminal window nslookup -type=A <your-subdomain>.cloudflare-gateway.comAAAAレコードの値を取得します。
Terminal window nslookup -type=AAAA <your-subdomain>.cloudflare-gateway.com- 結果として得られたIPアドレスをコピーします。
- 次のコマンドを実行して
-
アドレスを既知のDoHサーバーのリストに追加します。
- 各アドレスについて次のコマンドを実行します:
Terminal window Add-DnsClientDohServerAddress -ServerAddress <IP-address> -DohTemplate https://<your-subdomain>.cloudflare-gateway.com/dns-query -AllowFallbackToUdp $False -AutoUpgrade $False- アドレスが追加されたことを確認します。
Terminal window Get-DnsClientDohServerAddress -
Windowsで、設定 > ネットワークとインターネット > アクティブなインターネット接続に移動します。このオプションはイーサネットまたはWi-Fiのいずれかです。
-
DNSサーバーの割り当ての下で、編集を選択します。
-
ドロップダウンメニューで手動を選択します。
-
IPv4を有効にします。
-
優先DNSおよび代替DNSに、
AレコードコマンドからのIPv4アドレスを入力します。DNS over HTTPSを*オン(自動テンプレート)*に設定します。 -
IPv6を有効にします。
-
優先DNSおよび代替DNSに、
AAAAレコードコマンドからのIPv6アドレスを入力します。DNS over HTTPSを*オン(自動テンプレート)*に設定します。
Windows Server 2022
場所のDoHエンドポイントに関連付けられたAおよびAAAAレコードの値を取得します。
- 次のコマンドを実行して
Aレコードの値を取得します:
nslookup -type=A <your-subdomain>.cloudflare-gateway.comAAAAレコードの値を取得します。
nslookup -type=AAAA <your-subdomain>.cloudflare-gateway.com- 結果として得られたIPアドレスをコピーします。
- アドレスを追加 ↗して、既知のDoHサーバーのリストに追加します。
- Windows Serverクライアントを設定 ↗するか、グループポリシーを設定 ↗してDoHを使用します。
詳細については、MicrosoftのDoHガイド ↗を参照してください。Windows Server 2022以降のバージョンに対応しています。
ユーザーのアイデンティティに基づいてDoHクエリをフィルタリングするには、各クエリにユーザー特定の認証トークンを含める必要があります。ユーザーごとに複数のデバイスがあり、デバイス特定のポリシーを適用したい場合は、各デバイスを異なるメールアドレスにマッピングする必要があります。
現在、認証トークンはAPIを通じてのみ生成できます。このインタラクティブなPythonスクリプトを実行すると、セットアップ手順が自動化されます。または、以下の手順に従ってください。
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/access/service_tokens" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"name":"ACME Corporation service token"}'サービストークンのclient_id、client_secret、およびidを保存します。
例の応答
{ "result": { "client_id": "88bf3b6d86161464f6509f7219099e57.access", "client_secret": "bdd31cbc4dec990953e39163fbbb194c93313ca9f0a6e420346af9d326b1d2a5", "created_at": "2022-06-09T01:59:17Z", "expires_at": "2023-06-09T01:59:17Z", "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "name": "ACME Corporation service token", "updated_at": "2022-06-09T01:59:17Z" }, "success": true, "errors": [], "messages": []}curl --request PUT \"https://api.cloudflare.com/client/v4/accounts/{account_id}/access/organizations/doh/{service_token_id}" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>"access.api.error.service_token_not_foundエラーが表示された場合は、{service_token_id}がidの値であり、client_idではないことを確認してください。
例の応答
{ "result": { "client_id": "88bf3b6d86161464f6509f7219099e57.access", "created_at": "2022-06-09T01:59:17Z", "expires_at": "2023-06-09T01:59:17Z", "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "name": "ACME Corporation service token", "updated_at": "2022-06-09T01:59:17Z", "duration": "8760h" }, "success": true, "errors": [], "messages": []}新しいユーザーを作成し、オプションでグループに追加します。
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/access/users" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{ "name": "John Doe", "email": "jdoe@acme.com", "custom": {"groups":[{"id": "02fk6b3p3majl10", "email": "finance@acme.com", "name": "Finance"}]}}'応答で返されたユーザーのidを保存します。
例の応答
{ "result": { "id": "54d425de-7a78-4186-9975-d43c88ee7899", "created_at": "2022-03-16T21:18:39.93598Z", "updated_at": "2022-05-17T23:50:39.598345Z", "uid": "54d425de-7a78-4186-9975-d43c88ee7899", "name": "John Doe", "email": "jdoe@acme.com", "custom": { "groups": [ { "email": "finance@acme.com", "id": "02fk6b3p3majl10", "name": "Finance" } ] } }, "success": true, "errors": [], "messages": []}ユーザーのためにDoHトークンをリクエストし、サービストークンを使用してチームドメインに認証します。
curl "https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/doh-token?account-id=<ACCOUNT_ID>&user-id=<USER_ID>&auth-domain=<TEAM_NAME>.cloudflareaccess.com" \--header "Cf-Access-Client-Id: <CLIENT_ID>" \--header "Cf-Access-Client-Secret: <CLIENT_SECRET>"応答には、ユーザーに関連付けられたユニークなDoHトークンが含まれています。このトークンは24時間で期限切れになります。DoHトークンを生成する代わりに、トークンのリフレッシュフローを設定することをお勧めします。
例の応答
{"token":"y2khbGciOiJSUzI1NiIsImtpZCI6ImJlZjVkYjg4ZTEwMjk3ZDEwNzhkMmEyYjE0MjMxZTljYTQwMjQ2NjAwOTQzNmJhOTQwOGJkODY3ZmI4OWFiOGQifQ.eyJ0eXBlIjoiZG9oIiwiYXVkIjoiY2xvdWRmbGFyZS1nYXRld2F5LmNvbSIsImlhdCI6MTY1NDc1MTg3NSwiZXhwIjoxNjU0ODM4Mjc1LCJhY2NvdW50LWlkIjoiMTA4MDM0OGIyZGYzYmQwN2QxZmI1MjM3Y2Q1ZDU5M2EiLCJ1c2VyLWlkIjoiNTRkNDI1ZGUtN2E3OC00MTg2LTk5NzUtZDQzYzg4ZWU3ODk5In0.I5p4WsH2dPhQ8vwy84zF05PsoBHCsUSXAaMpNhEH36oFZ3tXcs9ksLz7OzpZ_x3HxUfO3n57LlpAF1VehaBt2i94XCkvSgtHpYcwd_qZydLp-BGtcyfU1LbdXQC3m6zxKcIWu5VySi8I-J25UYlpyJhYgZ4DQUZIpqbSSt6WcVRKvA7OBa7xjkTux4OcqWAViO_ZS-GLwl-fqhvolmiwk37seBD3YuV1zG06VeWXfrMkZ5MbhooHD1DZDBHOZpTtmN8MbeKeI4tlY1mb_O3-jE-um6F9Hrl4NQm89MKFzsum-_Rywi5m4PTSlDza7fjdJs7RzFgJd3VWgzG-jgyQKw"}https://<ACCOUNT_ID>.cloudflare-gateway.com/dns-queryのリゾルバーにDoHクエリを送信し、ユーザーのDoHトークンをCF-Authorizationヘッダーに含めることを確認します。
curl --silent "https://<ACCOUNT_ID>.cloudflare-gateway.com/dns-query?name=example.com" \--header "accept: application/dns-json" \--header "CF-Authorization: <USER_DOH_TOKEN>" | jqサイトがブロックされていて、ポリシーのためにブロックページを表示を有効にしている場合、クエリは162.159.36.12(GatewayブロックページのIPアドレス)を返します。ブロックページが無効になっている場合、応答は0.0.0.0になります。
例の応答
{ "Status": 0, "TC": false, "RD": true, "RA": true, "AD": false, "CD": false, "Question": [ { "name": "example.com", "type": 1 } ], "Answer": [ { "name": "example.com", "type": 1, "TTL": 60, "data": "162.159.36.12" } ]}リクエストが正しいユーザーのメールに関連付けられていることを確認するには、Gateway DNSログを確認してください。これらのリクエストをフィルタリングするには、Gatewayのアイデンティティベースのセレクターを使用してDNSポリシーを構築します。