DNSとは? 初心者向けマニュアル
ネットワークでは、ノード間の通信に特定の数値が使用されます。たとえば、IPアドレスは138.0.254.15のような4つの10進数の形式を取ります。このような数字は覚えにくいため、便宜上サイトの文字名も使用します。**DNS(ドメインネームシステム)**は、ウェブサイトの文字名(ドメイン)をIPアドレスの数値に関連付けます。
すべてのドメイン名とそのIPアドレスは、専門のDNSデータベースに追加されました。メインデータベースは階層名構造の形で物理サーバーに配置されており、これはポール・モカペトリス博士によって発明されました。
ユニークなアドレスの作成方法
ドメイン名データベースの階層を簡略化するために、ユニークなアドレスが作成されました。これらはサーバー名とドメイン名を接続することで作成されます。たとえば、「proton.org」というドメインに属するコンピュータが「tom」と名付けられている場合、「tom.proton.org」と呼ばれます。しかし、ドメインにはホストやゾーンが含まれることがあり、我々のproton.orgドメインはtom.proton.orgホストとdssrg.proton.orgゾーンをホストすることができます。さらに、ゾーンはサブドメインの特性を持ち、他のホストをホストすることができます(例:don.dssrg.proton.org)。
すべてのドメインにはDNSデータがプレーンテキストファイルの形で記録される個別のデータベースがあります。通常、人々はこれらのデータベースを強力なプライマリDNSサーバーに配置し、セカンダリサーバーと同期させます。すべてのDNSデータベースを持つサーバーには、それが属するゾーンのプライマリまたはセカンダリサーバーの状態を記述するファイルがあります。
DNS上位階層の原則
DNS階層は、下位のローカルDNSサーバーから上位のルートサーバーまでの上位サーバーで構築されています。
また、階層はバックアップDNSサーバーによって横に拡張され、連続動作が確保されます。これらの目的のために、二次ドメインとゾーンには、このドメインをサービスするために2つ以上のDNSサーバーを選択する必要があります。
インターネットネットワークの継続的な成長のため、一級ドメインを便宜上サブドメインに分割する必要がありました。順に、すべてのサブドメイン(ゾーン)は個別のドメインとして機能しますが、常に一級ドメインを介してDNSサーバーにクエリを送信します。
DNSサーバーは再帰型と非再帰型がある
再帰型サーバーはリクエストを受信すると、自身で必要なレコードを探し、見つからなかった場合はDNSサーバーと通信を開始し、必ず応答を送信します。ほとんどの場合、再帰型サーバーはローカルであり、応答をキャッシュできるため、同一のリクエストに対する応答速度が速くなります。
非再帰型サーバーは通常、大量のリクエストを処理する能力がありますが、検索クエリに対する応答をキャッシュすることはできません。単にリクエストを他のDNSサーバーにリダイレクトします。
データベースでIPアドレスを検索する3つの方法:
- 同じゾーン内にいるコンピュータ間で、ローカルDNSサーバーへのクエリを介して、必要なアドレスをそのローカルネームデータベースで見つける。
- コンピュータが異なるゾーンにいる場合、リクエストはローカルDNSサーバーからルートDNSサーバーに渡されます。ルートサーバーは希望するDNSサーバーを見つけ、ローカルDNSサーバーに応答を送信します。リクエストと共に、見つかったIPアドレスがローカルDNSサーバーのキャッシュにどれくらいの期間保持されるかを示す特別なTTL値も送信されます。その結果、同一リクエストの処理に要する時間が大幅に短縮されます。
- コンピュータが別のゾーンの別のコンピュータと再度通信する必要がある場合、ネイティブゾーンのローカルDNSサーバーへのリクエストが生成されます。まず、ローカルDNSサーバーはそのキャッシュにアクセスし、必要な名前を見つけた場合、対応するTTL値を確認します。リクエストが期限切れでなければ、応答がコンピュータに送信されます。リクエストがタイムアウトした場合、ルートサーバーに再度アクセスします。
DNSの変更に最大48時間かかる理由
特定のドメイン名のゾーンファイルにDNSレコードの変更が加えられると、データの同期に最大48時間かかる場合があります。
同期時間はさまざまな要因によって異なります:
- キャッシュ内のDNSレコード情報の保存期間(TTL寿命)。
- クロック周波数。インターネットプロバイダーはDNSレコードをキャッシュし、特定のDNSサーバーとの同期を適時に行いません。
- ドメイン名ゾーンの更新。多くのドメイン名レジストリは、ルートサーバーの過負荷を防ぐために頻繁にドメイン名ゾーンを更新しません。