Webサイトやアプリケーションが、不適切に設定されたDNSレコード、遅延、悪意のある攻撃など、 DNSの問題のために正しく動作しないことがあります。
この記事を読み終えると、以下のことができるようになります。
記事のリンクをコピーする
Domain Name System(DNS)は、ドメイン名をIPアドレスにマッピングすることで、ユーザーが正確なネットワークアドレスを記憶しなくてもWebアプリを使用できるようにします。DNSは、ドメインに関連する多くの他の情報(たとえば、メールの宛先)を保存するためにも使用されます。DNSが適切に設定されていない場合、攻撃者がDNSを標的にしている場合、またはその他の技術的な問題が発生した場合に、問題が発生する可能性があります。ここでは、Webサイトの管理者が直面する可能性が高い最も一般的なDNS問題の概要を説明します。
ドメインのDNSレコードが正しく設定されていない可能性があります。レコード内のドメインのスペルミスがある、レコードに記載されているIPアドレスが間違っている、またはその他の重要な情報が不足しているか間違っているなどの場合、 DNSは解決に失敗する可能性があります。
これらの基本的なエラーに加えて、数種類のDNSレコードがドメインに関連付けられています。それらのレコードに問題があると、DNSエラーが発生する可能性があります。たとえば、ドメインにはAレコードはありますが、AAAAレコードがない場合があります。その場合、IPv6を使用するクライアントに対して、最初にDNS解決が失敗します。または、クライアントが代替ドメイン(例:「www.example.com」ではなく「blog.example.com」)に到達しようとしている場合に、ドメインのCNAMEレコードが適切な場所を指していない可能性があります。
このエラーを解決するには、サイト管理者がホスティングプロバイダーまたはDNSプロバイダーのダッシュボードでDNSレコードをチェックし、エラーがないことを確認する必要があります。その後、DNSリゾルバー(DNSクエリに応答するサーバー)がシステム内の最新のDNSレコードを取得する必要があります。TTLをあまり高く設定しすぎていない限り(下記参照)、これはそれほど時間がかかることはありません。
すべてのDNSレコードには、サーバーがレコードを有効とみなす有効期限(TTL)*(秒数)が含まれており、それを過ぎると更新のためにサーバーは再クエリーが必要となります。基本的にTTLは、パッケージに入れられた食品の「使用期限」のようなものです。レコードはTTL時間が終了するまで使用可能と見なされます。
TTLが大きすぎると、サーバーはDNSレコードの更新の確認まで長くかかりすぎるようになります。つまり、変更がドメインネームシステム全体に広がるのは非常に遅くなることを意味します。DNSレコードがドメインに対して更新されているにもかかわらず、サーバーがその更新を受信していない場合、ブラウザーは間違ったIPアドレスでサイトにアクセスしようとする可能性があります。
このDNSの問題を回避するには、TTLが大きすぎないように注意してください。通常、絶対最大値は86400(単位は秒、24時間に相当)ですが、ほとんどのTTLはずっと短く(6時間以下)されています。レコードの正確なTTLは、将来そのレコードがどの程度の頻度と速さで更新される想定かによって異なります。(Cloudflare DNSレコードのTTLに関する情報を参照してください。)
また、一部のDNSリゾルバーでは、ドメイン管理者がドメインのキャッシュを強制的に更新することが可能です。Cloudflareの1.1.1.1については、こちらから強制的に更新できます。しかし、そうしたとしても、世界中のすべてのリゾルバーのすべてのキャッシュを消去するわけではないため、これはTTLを適切に設定することに代わるものではありません。
*TTLは、ルーティングやキャッシングなど、ネットワークの他の領域でも使用されます。
分散サービス妨害(DDoS)攻撃の目的は、その名の通り「サービスを拒否」することです。DDoS攻撃は、正規ユーザーがサービスを利用できないようにジャンクトラフィックを標的に送り付けます。これらの攻撃により、Webサイト、アプリケーション、API、またはサーバーが数分から数時間にわたって利用できなくなる可能性があります。
DDoSの標的がDNS自体である場合、ブラウザはドメインを解決することができません。つまり、ユーザーはIPアドレスが見つからないため、Webサイトやアプリを読み込むことができません。この種の大規模な攻撃は、2016年に発生しました。Dynへの攻撃により、世界の多くの地域のユーザーはインターネットを使用できなくなりました。DNSに対する小規模のDDoS攻撃は定期的に発生しており、より多く標的になっている可能性があります。
各ドメインのDNSプロバイダーがDDoS攻撃対策を講じていることを確認するか、セルフホスト型のDNS解決にDDoS軽減策を実装することで、この問題を回避してください。
遅延は、データがあるポイントから別のポイントに移動するのにかかる時間です。遅延が大きくなると、応答が遅くなり、さらには接続が終了してタイムアウトが発生することさえあります。
ネットワーク輻輳によって遅延が発生することもありますが、最大の原因は多くの場合サーバーの所在地にあります。DNSクエリは、他のWebトラフィックに比べてかなり軽量ですが、DNSリゾルバーが遠く離れている場合、リクエストがサーバーに送信され、サーバーから応答が返されるまで、ユーザーは何秒も待たなければならない可能性があります。この問題は、ユーザーがDNSプロバイダーのサーバーネットワークから遠く離れた予期しない場所や、通常とは異なる地域からWebコンテンツを読み込もうとした場合に発生することがあります。
DNS遅延を解決するには、世界中のインターネットユーザーの近くに接続拠点を持つDNSプロバイダーを使用します。Cloudflareグローバルネットワークについてご覧ください。
DNSキャッシュポイズニング攻撃では、悪意のある攻撃者がDNSリゾルバーを侵害して、ドメインに対し不正なIPアドレスをキャッシングします。その結果、そのドメインを読み込もうとするユーザーは、代わりに攻撃者が提供するIPアドレスに誘導されます。
DNSSECの採用は、検証されていないデータがDNSリゾルバーキャッシュに入るのを防ぐ方法です。DNSSECは、DNSサーバー間のメッセージを認証します(DNSSECが使用されない場合、DNSは信頼の原則に基づいて動作し、攻撃者はこれを悪用できます)。
ドメインハイジャック攻撃とは、攻撃者がドメインに関連付けられているDNSレコードを変更することです。多くの場合、ドメイン名レジストラに、ドメインを移管してもらうことで、これを行います。その結果、サイト訪問者が間違ったWebページ(多くの場合、悪意のあるページ)を読み込む可能性や、ドメインの解決に完全に失敗する可能性があります。
レジストラーとレジストリーレベルの両方でドメインロックを適用することにより、攻撃者がDNSハイジャックをかなり困難にすることができます。
「NXDOMAIN」は、コンピュータの言葉で「存在しないドメイン」を意味します。このエラーは基本的に、ユーザーのデバイスが知る限り、ドメインが存在しないことを意味します(使われていない電話番号に電話をかけようとしたり、存在しない都市に小包を送ろうするようなものです)。
これは、上記の問題と、クライアント側(ユーザーがWebサイトを読み込もうとしているデバイス)の問題によって引き起こされる可能性のある幅広いエラーです。
ユーザーは、ローカルネットワークに再接続を試みる、Webページをハードリフレッシュする(Ctrl/コマンド+シフト+R)、別のブラウザで開く、またはDNS設定を変更して、別のリゾルバを使用することができます。(Cloudflareは信頼性の高い1.1.1.1を提供しています。DNSリゾルバーは無料です)。
「NXDOMAIN」エラーにより、ブラウザに「このサイトにアクセスできません」または「DNSサーバーが応答していません」というメッセージが表示される場合があります。前述のように、多くの問題がこのエラーメッセージを発生させる可能性があります。
Webアプリを実行している人々や企業は、これらの問題のほとんどを、Cloudflareを採用することで修正または軽減できます。Cloudflareは、Webサイトへのトラフィックをプロキシし、DDoS攻撃、DNSハイジャック、DNSキャッシュポイズニング、DNS設定ミスから保護する最新のセキュリティ対策を使用しています。Cloudflareの利用開始プランをご覧ください。