コンテンツにスキップ

トラブルシューティング

DNSSECに関する問題をトラブルシューティングする方法について詳しく学びましょう。

Digを使ってDNSSECをテストする

Digは、DNSレコードを取得するためにネームサーバーにクエリを送るコマンドラインツールです。

例えば、digを使ってDNSリゾルバーにwww.cloudflare.comのIPアドレスを尋ねることができます:

Terminal window
dig www.cloudflare.com +short
198.41.215.162
198.41.214.162

オプション+shortは、結果をのみ出力します。

+dnssecを使用して、DNSレコードが署名されていることを確認します:

Terminal window
dig www.cloudflare.com +dnssec +short
198.41.214.162
198.41.215.162
A 13 3 300 20180927180434 20180925160434 35273 cloudflare.com. DYYZ/bhHSAIlpvu/HEUsxlzkC9NsswbCQ7dcfcuiNBrbhYV7k3AI8t46 QMnOlfhwT6jqsfN7ePV6Fwpym3B0pg==

この例では、出力の最後の行がRRSIGレコードです。RRSIGは、レコードに付随するDNSSEC署名です。RRSIGを使用して、DNSリゾルバーはDNS応答が信頼できるかどうかを判断します。

Digは、DNSレコードを検証するために使用される公開鍵DNSKEYを取得することもできます:

Terminal window
dig DNSKEY cloudflare.com +short
257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+ KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==
256 3 13 koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z 1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==

ドメインのDNSレコードはすべて同じ公開鍵で署名されています。したがって、サブドメイン(www.cloudflare.com)の公開鍵ではなく、ルートドメイン(cloudflare.com)の公開鍵をクエリしてください。

DNS応答には2つのレコードが含まれています:

  • DNSKEYレコード256は、ゾーン署名鍵(ZSK)と呼ばれる公開鍵です。ZSKは、AMXCNAMESRVなどのDNSレコード署名を検証するために使用されます。
  • DNSKEYレコード257は、鍵署名鍵(KSK)と呼ばれます。KSKは、DNSKEYCDS、およびCDNSKEYレコードの署名を検証するために使用されます。

dig+shortオプションを使用しない場合、DNS応答は、応答ヘッダーにadフラグが表示されるとDNSSEC認証されます:

Terminal window
dig www.cloudflare.com
[...]
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65326
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
[...]
;; QUESTION SECTION:
;www.cloudflare.com. IN A
[...]
;; ANSWER SECTION:
www.cloudflare.com. 15 IN A 198.41.215.162
www.cloudflare.com. 15 IN A 198.41.214.162

DNSVizを使用してDNSSEC検証のトラブルシューティング

DNSSECの潜在的な問題を視覚化し発見するには:

  1. http://dnsviz.net/にアクセスします。
  2. 表示されるテキストフィールドにドメイン名を入力します。
  3. DNSVizが以前にサイトを分析したことがない場合は、表示されるAnalyzeボタンをクリックします。
  4. サイトが以前にDNSVizによって分析された場合は、表示されるUpdate Nowボタンをクリックします。

権威あるネームサーバーでRRSIGレコードが欠落または不正確な例

以下は、権威あるネームサーバーがDSレコードに一致する有効なDNSKEYレコードを提供しない場合に、dnsviz.netが不正な委任を表示する方法の例です:

有効なDNSKEYレコードが提供されていない場合の不正な委任


Digを使用してDNSSECの信頼チェーンを表示する

ドメイン署名の完全な検証(例えば、cloudflare.com)は、トップレベルドメイン(例えば、.com)での鍵署名鍵の検証を含みます。

その後、ルートサーバーレベルで.comの鍵署名鍵を確認することによって、同様の検証が行われます。DNSSECルート鍵は、信頼チェーンを完成させるためにDNSクライアントに配布されます。

DNSSECが有効な場合、レジストラのDNSにDSレコードが必要です。DSレコードには、公開鍵署名鍵のハッシュと鍵に関するメタデータが含まれています。

DSレコードを見つけるためにdigを使用します:

Terminal window
dig +short DS cloudflare.com
2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9

+traceオプションを使用すると、digcloudflare.comのネームサーバーまたは.comのネームサーバーから応答が返されるかどうかを確認します。この例では、cloudflare.comDSレコードがe.gtld-servers.netから返されます:

Terminal window
dig DS cloudflare.com +trace
[...]
cloudflare.com. 86400 IN DS 2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9
[...]
com. 172800 IN NS e.gtld-servers.net.
[...]
;; Received 1213 bytes from 2001:502:1ca1::30#53(e.gtld-servers.net) in 37 ms

上記の手順を手動で実行する代わりに、サードパーティツールDNSVizを使用する方が簡単です。


Digを使用してDNSSEC検証のトラブルシューティング

権威あるDNSプロバイダーが変更され、レジストラで古いDNSSECレコードが更新または削除されない場合、問題が発生します:

Terminal window
dig A brokendnssec.net @1.0.0.1
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10663

SERVFAIL応答がDNSSECに関連しているかどうかを確認するには、+cdオプションを使用してdigを実行します。+cdオプションは、DNSSEC検証なしでDNS結果を提供します。

Terminal window
dig A brokendnssec.net @1.0.0.1 +dnssec +cd +short
104.20.49.61
104.20.48.61

この例では、+cdオプションを使用したときに適切なDNS応答が受信されるが、DNSSECを使用したクエリがSERVFAIL応答を返す場合、DNSSECが誤って構成されています。この問題は、権威あるネームサーバーが変更されたがDSレコードが更新されない場合によく発生します。また、攻撃者がクエリに対する応答を偽造しようとする場合にも発生する可能性があります。


次のステップ

DNSSEC実装に問題が発見された場合は、ドメインのレジストラに連絡し、DSレコードが権威あるDNSプロバイダーが指定したものと一致していることを確認してください。Cloudflareが権威あるDNSプロバイダーである場合は、CloudflareでのDNSSECの設定に関する指示に従ってください。