DNS

DNSの必要な理由

名前解決(IPアドレスとホスト名の解決)をするため

IPアドレスとホスト名の原始的な解決方法

ARPANETで使用されていた名前解決方法。 ホスト名が数百を超えてから破綻してきた。

$ cat /etc/hosts
127.0.0.1       localhost

つまり、ホスト名を分散して管理する必要があった。 また、ホスト名のユニーク性の問題もあった

⇒ ドメインツリーとDNS

ドメインツリーとDNS

ドメインツリー

  • そこでピリオドごとにドメイン名を階層構造にした
  • 仕組みはファイルシステムと似ているツリー構造
    • FSではルートは/だが、DNSではルートは.となる
  • 階層ごとに別々のDNSサーバーを用意して分散して管理した

DNSの持っている情報

  • 自身の下位ドメイン(サブドメイン)として何があるのか。そのサブドメインの情報を持っているDNSサーバは何か
  • 自身に所属するホストの情報(IPアドレスなど)

DNSの名前解決方法

  • ルートサーバー(.)からサブドメインのDNSサーバーを探索して、最終的なIPアドレス(ホスト)を探す
  • つまり、上位ドメインからサブドメインに対する「権限委譲(delegation)」がされている

FSとDNSのアナロジー

FSDNS
ディレクトリ、フォルダDNS
ファイルIPアドレス (ホスト名)
Absolute pathFQDN(Fully Qualified Domain Name)

FSの絶対パスの例: /home/mike/Workspace/test
DNSのFQDNの例: www.example.com.

DNSの持っている情報

  • 各ノードで管理されるDNS情報の単位を「ゾーン」
  • ゾーンに含まれるデータの単位が「レコード」

レコードの種類

Recordmeaning
SOA (Start Of a zone Of Authority)ゾーンのメタ情報
NSドメインのDNSサーバーを示す
AホストのIPアドレス
CNAMEホスト名のエイリアス(別名)
PTRIPアドレスに対するホスト名
MXメール

RDBとNDSのアナロジー

RDBDNS
TableZone
RecordRecord

正引きと逆引き

TermMeaning
正引きDomain -> IP addr (NSとAレコードを使用する)
逆引きIP addr -> Domain (PTRレコードを使用する)

リカーシブとイテレーティブ

  • DNSサーバーは2つの役割がある。
    • リゾルバの役割をするDNSサーバー(リカーシブな処理をする)
    • イテレーティブはいわゆるゾーン情報をリゾルバに返すDNSサーバー
DNSの処理意味
リカーシブDNSサーバはDNS解決が完結するまでドメイン・ツリーをたどり、(ほかのサーバに対して)検索を行い、最終結果を返す
イテレーティブ自身が管理しているゾーン情報にのみ返答し、ほかのサーバへ問い合わせを行うことはない

「逆引き」と「逆引き用ドメイン・ツリー」

  • 逆引きの場合用に、ドメインツリーが用意されている。
  • .in-addr.arpaがそのドメインとして割り当てられている
  • IPアドレスのオクテットごとにDNSサーバーが用意されている

例)

あるIPアドレス192.168.100.10の問い合わせは、10.100.168.192.in-addr.arpaのドメイン名として問い合わせられる

references:

  • https://www.atmarkit.co.jp/ait/articles/0112/18/news001.html
  • https://toshost.com/a/how-works-dns-server