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サーバーとの同期を適時に行いません。
  • ドメイン名ゾーンの更新。多くのドメイン名レジストリは、ルートサーバーの過負荷を防ぐために頻繁にドメイン名ゾーンを更新しません。