ウェブ開発者向けアドバイス ビギナーガイド

なんで私のドメイン名のDNSはちゃんと機能していないの?? [DNS基本確認事項5つ]

ドメイン名をウェブサイトや新しいメールサービスなど、DNSレコードに必要な変更を加えたのに、ブラウザでドメイン名を入力してもウェブサイトにつながらない! メールを受信、送信できない! などDNSに関係した問題に遭遇したことがある人は結構いるはずです。
上手くいかず欲求不満でコンピュータを窓の外に投げる前に、深呼吸して、DNSが機能しない可能性がある一般的な理由を確認してください。以下に5つの理由をまとめました。

1. キャッシュの問題

最も一般的で誤解されていて、DNSを変更してもすぐに反映されないことがあることがある理由の1つはキャッシュです。
ドメインネームシステム全体がどのように機能するかについての詳細についてはあまり詳しく説明しませんが、ドメインネームシステムは分散型の階層型システムで、堅牢に構築されており、コンピューターがリゾルバーと呼ばれるサーバーに要求することで機能します (多くの場合、このリゾルバーはDNSクエリへの応答のためにISPによって操作されます。キャッシュがまだ「期限切れ」になっていないことを前提として、リゾルバーが既にキャッシュに回答を持っている場合は、回答のソースに戻るのではなく、キャッシュを通してコンピューターにその回答を提供します。
つまり、コンピューターでドメイン名にアクセスし、DNSレコードを更新して、ドメイン名が別のIPアドレスを持つ新しいウェブサイトを指すようにした後、同じコンピューターでドメイン名に再度アクセスした場合、このキャッシュのために古いウェブサイトを参照することになります。
ただし、キャッシュの有効期限が切れると、新しいウェブサイトが表示されるようになります。この期限切れのキャッシュが原因で、新しいDNSレコードに関連したウェブサイトが表示されるまでにかかる時間に「遅延」が発生します。
これらの遅延は人々が「DNSの浸透」と呼ぶものが原因であるという誤解が広まっています。これは、DNS更新が世界中のサーバーに「プッシュ」されていることを示唆しているため、不正確で誤解を招く可能性があります。
実際にはその逆で、DNSレコードは以前に要求されていたものからリゾルバーのキャッシュに格納されます。

DNSキャッシュについてできること

a. ひたすら待つ

時間がある場合は、キャッシュの有効期限が切れるのを待ちましょう。置き換えた古いDNSレコードに関する重要なデータの1つであるTTLについて知っていると役立ちます。 TTLは「存続時間」を意味し、DNSリゾルバーにレコードをキャッシュに保持する期間を示します。 DNSレコードでは、TTLは秒単位で測定されます。ただし、落とし穴があるので注意しましょう。リゾルバーは常にTTLを尊重するとは限りません。つまり、TTLが短い場合でも、更新が表示されるまでに3〜24時間かかる可能性があります。待つ時間がない場合は、次のことができます。

b. 別のネットワークからの接続を試す

使用するDNSリゾルバーはインターネットサービスプロバイダー (ISP) に関連付けられているため、WiFiをオフにしてスマートフォンからドメイン名を試すと、新しいDNSレコードを取得できるはずです (最近スマートフォンからそのドメイン名に移動していない場合)

c. ターミナル、コマンドラインから直接サーバーにクエリを実行する

ターミナルウィンドウで dig する方法を知っている場合は、@ とネームサーバーの1つの名前を追加して、ネームサーバーに直接クエリを実行できます。次に例を示します。

$dig example.com @ns1.example.com

問題がキャッシュではない場合、問次のような別の問題である可能性があります。

2. 複数のAレコード

Aレコードは、ウェブサイトに関連付けられているIPアドレスを指すために使用されます。これは、ドメイン名を別のドメイン名にマップするCNAMEレコードとは対照的です。この違いの特徴は、特定のサブドメインに対して1つのCNAMEレコードしか持てないことです (実際、サブドメインにCNAMEがある場合、そのサブドメインに対して他のタイプのレコードを持つことはできません) 

したがって、DNSの更新にAレコードの更新が含まれている場合は、実際には新しいAレコードを追加し、古いレコードをそのままにしておくことができます。
このエラーを理解するのがさらに難しいのは、コンピュータがAレコードクエリに対して1つの応答を受け取る場合もあれば、別の応答を受け取る場合もあるということです。異なるIPアドレスが異なるウェブサイトにサービスを提供している場合、結果として、あるウェブサイトを取得することもあれば、別のウェブサイトを取得することもあります。
そして、さらに別の問題もあります。IPアドレスのシステムは、バージョン4 (v4) からバージョン6 (v6) に移行中です。問題は v4 IPアドレス (別名IPv4) が少なくて、十分ではないことです。 IPv6アドレスははるかに長くなります。 DNSの問題は、IPv6アドレスを持つ通常のAレコードを作成できないことです。
そのためには、AAAAレコードが必要です。
そして、それがこの問題を見つけるのを難しくしている原因です。 AAAAレコードではなく、Aレコードのみを更新すると、その更新も機能しなくなります。

3. 間違ったDNSサーバーを更新している可能性

インフラストラクチャチームの誤解や単なるど忘れが原因であるかどうかにかかわらず、間違ったDNSサービスでDNS更新を行った可能性があります。
最近ドメイン名を移管し、ネームサーバーを新しい登録事業者に更新しなかったなどの可能性があります。
または、CloudFlareなどのDNSサービスを使用している場合など、レジストラまたは以前に使用した別のDNSプロバイダーで更新を行うことができます。
レジストラのドメインダッシュボードでドメイン名が使用しているネームサーバーを確認して、適切な場所で更新を行っていることを確認してください。

4. ドットを忘れている

DNSレコードの編集を難しく感じる理由の1つは、その特定の構文が原因です。これに起因する問題の多くは安全に自動化できますが、CNAMEレコードが指すドメイン名の末尾にドットを付ける必要があることなどは覚えておく必要があります。
CNAMEレコードを使用して、ドメイン名をサブドメイン名または外部ドメイン名 (完全に異なるドメイン名) に移動するようマッピングできるためです。
CNAMEレコードの [値] フィールドのドメイン名は、外部の場合はドットで終わる必要があります。ドットがない場合、DNSシステムはサブドメインであると認識します。
例えば:
www 300 IN CNAMEfoo.example.net.
ドメイン example.com が foo.example.net を指すようになります。
しかし、以下の場合:
www 300 IN CNAME foo.example.net
ドメイン example.com は foo.example.net.example.com を指すことになります。

5. ドメインの有効期限が切れているか一時停止されている可能性

最後に、DNSが機能しない可能性がある最後の理由は、ドメイン名の有効期限が切れているかどうかです。期限が切れているとドメイン名が機能しません (名前解決が行われません)。
もう1つの理由は、たとえば法的な問題のためにドメインが停止されている場合です。
期限切れのドメイン名はダッシュボードに表示されます。一時停止されたドメイン名については、DNSの問題を引き起こしているかどうかを判断する唯一の方法は、Whoisを使用することです。 「ドメインステータス」を確認し、「clientHold」または「serverHold」と表示されている場合は、レジストラに連絡して問題を解決してください。

結論

DNSを更新しても機能しない場合は、上記5つの一般的なDNSの問題をまずは確認するようにしましょう。もちろん、ドメイン名を Gandi で管理している場合は、カスタマーケアチームが24時間体制で問題解決をお手伝いします。