このセクションでは、Gateway の DNS 設定を検証する方法を説明します。セットアップ後にポリシーをテストすると、本番で使う前に、クエリが想定どおりフィルタリングされていることを確認できます。
始める前に、デバイスが Gateway に DNS クエリを送っていることを確認してください。次のいずれかで確認できます。
- Cloudflare One Client — デバイスで Cloudflare One Client を動かしている場合、DNS クエリは自動的に Gateway 経由になります。
- DNS ロケーション — Cloudflare One Client を使わない DNS のみの構成の場合は、ネットワークの DNS リゾルバーが Gateway DNS ロケーション の IP アドレスを向いていることを確認します。
ドメインをブロックする DNS ポリシーを作成したら、dig(macOS と Linux で使えるコマンドラインの DNS 照会ツール)または nslookup(Windows で利用可能)で、ポリシーが意図どおり動いているかを確認できます。
たとえば example.com をブロックするポリシーを作った場合、Gateway が example.com を正しくブロックしているかは、次の手順で確認できます。
-
ターミナルを開きます。
-
dig example.comと入力します(Windows の場合はnslookup example.com)。Enter を押します。 -
digの出力で、ヘッダー行(;; ->>HEADER<<-で始まる行)のstatus:フィールドを確認します。ポリシーで ブロックページ がオフの場合、REFUSEDと表示されます。これは、サーバーがクエリへの応答を拒否したことを示す DNS 応答コードです。dig example.com; <<>> DiG 9.10.6 <<>> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 6503 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;example.com. IN A ;; Query time: 46 msec ;; SERVER: 172.64.36.1#53(172.64.36.1) ;; WHEN: Tue Mar 10 20:22:18 CDT 2020 ;; MSG SIZE rcvd: 29ポリシーで ブロックページ がオンの場合、ヘッダーに
NOERROR(クエリが解決されたことを意味します)と表示され、回答として162.159.36.12と162.159.46.12が返ります。これらは Cloudflare のブロックページ用 IP アドレスです。dig example.com; <<>> DiG 9.10.6 <<>> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR id: 14531 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1452 ;; QUESTION SECTION: ;example.com. IN A ;;ANSWER SECTION: example.com. 60 IN A 162.159.36.12 example.com. 60 IN A 162.159.46.12 ;; Query time: 53 msec ;; SERVER: 172.64.36.1#53(172.64.36.1) ;; WHEN: Tue Mar 10 20:19:52 CDT 2020 ;; MSG SIZE rcvd: 83
セキュリティカテゴリ または コンテンツカテゴリ をブロックしている場合は、各カテゴリに紐づく テストドメイン でポリシーが動いているかを確認できます。
Gateway ポリシーでそのカテゴリをブロックしたあと、ブラウザーでテストドメインにアクセスするとブロックページが表示されます。コマンドラインで dig を実行すると REFUSED が返ります。
-
1 語のカテゴリ — 名前が 1 語のカテゴリ(例: Malware)では、テストドメインは次の形式です。
<NAME_OF_CATEGORY>.testcategory.com -
複数語のカテゴリ — 名前が複数語のカテゴリ(例: Parked & For Sale Domains)では、テストドメインは次の形式です。
- 単語間のスペースを削除する
&をandに置き換える- すべての文字を小文字にする
| カテゴリ | テストドメイン |
|---|---|
| Anonymizer | anonymizer.testcategory.com |
| Command and Control & Botnet | commandandcontrolandbotnet.testcategory.com |
| compromised Domain | compromiseddomain.testcategory.com |
| Cryptomining | cryptomining.testcategory.com |
| Malware | malware.testcategory.com |
| New Domains | newdomains.testcategory.com |
| Parked & For Sale Domains | parkedandforsaledomains.testcategory.com |
| Phishing | phishing.testcategory.com |
| Potentially Unwanted Software | potentiallyunwantedsoftware.testcategory.com |
| Private IP Address | privateipaddress.testcategory.com |
| Spam | spam.testcategory.com |
| Spyware | spyware.testcategory.com |
| Unreachable | unreachable.testcategory.com |
EDNS client subnet(ECS)は、ユーザーの IP アドレスの一部を権威 DNS ネームサーバーに送る DNS 拡張です。地理的に最適な回答を返すために使います。Cloudflare はプライバシーを保ちつつ位置情報を渡すため、ユーザー IP の先頭 /24 だけを送ります。DNS ロケーションで EDNS client subnet を有効にしている 場合は、次の手順で検証できます。
-
DNS ロケーションの DoH(DNS over HTTPS)サブドメインを確認します。
- Cloudflare ダッシュボード ↗ で、Zero Trust > Networks > Resolvers & Proxies > DNS locations を開きます。
- テスト対象の DNS ロケーションを選択します。
- DNS over HTTPS の値を控えます。
-
ターミナルを開き、次のコマンドを実行します。
curl 'https://<DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query?type=TXT&name=o-o.myaddr.google.com' -H 'Accept: application/dns-json' | json_pp出力に EDNS client subnet が含まれます。
{ "AD": false, "Answer": [ { "TTL": 60, "data": "\"108.162.218.211\"", "name": "o-o.myaddr.google.com", "type": 16 }, { "TTL": 60, "data": "\"edns0-client-subnet 136.62.0.0/24\"", "name": "o-o.myaddr.google.com", "type": 16 } ], "CD": false, "Question": [ { "name": "o-o.myaddr.google.com", "type": 16 } ], "RA": true, "RD": true, "Status": 0, "TC": false } -
EDNS client subnet を確認するには、送信元 IP アドレスを取得します。
curl ifconfig.me136.62.12.156%送信元 IP アドレスは、EDNS client subnet で指定された /24 範囲に含まれるはずです。
最近の Web ブラウザーと OS は、一定時間 DNS レコードをキャッシュします。DNS レコードの要求があると、まずブラウザーキャッシュが確認されます。応答がすでにキャッシュされていると、DNS ポリシーが効いていないように見えることがあります。
DNS キャッシュをクリアするには、次の手順を使います。
ChromeOS
chrome://net-internals/#dnsを開きます。- Clear host cache を選択します。
Windows
- 管理者のコマンドプロンプトまたは PowerShell を開きます。
- 次のコマンドを実行します。
ipconfig /flushdnsmacOS
- ターミナルを開きます。
- 次のコマンドを実行します。
sudo killall -HUP mDNSResponder
sudo killall mDNSResponderHelper
sudo dscacheutil -flushcache