DNS

DNSとは

インターネットに接続している計算機を識別するのはIPアドレスであるが、 人間がこれを暗記するのは困難である。実際には可読性の高い ホスト名を付与し、ホスト名をIPアドレスに変換する仕組みを用いる。 ホスト名/ドメイン名 をIPアドレスに変換する、あるいは逆に IPアドレスをホスト名に変換する機構をDNS(Domain Name System) という。

ネームサーバの導入

djbで固めるインターネットサービスPart3/Part4を参照し進める。

先に我々がインストールしたWebサーバを独自ドメイン名で運用することを 目指す。

各ソフトウェアの導入方法

daemontoolsの起動

以下のように作業する。

sudo mkdir /var/service
sudo vi /etc/rc.local

追加する。

if [ -x /usr/local/bin/svscanboot ]; then
	sh -cf '/usr/local/bin/svscanboot &'; echo -n ' svscan'
fi

ESC ZZで保存・終了後作業続行。rc.local ファイルは次回ブート以後の起動設定。今回起動するには直接 コマンドラインから呼び出す。

sudo sh -cf '/usr/local/bin/svscanboot &'

DNSのレコード

Aレコード

その名前のIPv4レコードを記録する

AAAAレコード

その名前のIPv6レコードを記録する

PTRレコード

IPアドレスの逆引き名に対応するIPアドレスを記録する

NSレコード

そのドメインのネームサーバを記録する

CNAMEレコード

その名前を別名として登録し、本名を記録する

TXTレコード

任意の値を記録する

正引きと逆引き

qm200.is.koeki-u.ac.jpというホスト名を考える。 この名前はis.koeki-u.ac.jpドメインに属している(例外あり)。 is.koeki-u.ac.jpドメインに qm200 というエントリを作り そのIPアドレス 172.19.5.200 をAレコードとして登録する。

逆引きのレコードは

200.5.19.172.in-addr.arpa

ドメインのPTRレコードとして参照される。 したがって、172.19.5.200 の逆引き登録をするためには 5.19.172.in-addr.arpa というDNSドメインを作成しなければならない。

hostコマンド

ドメイン/ホスト名に登録されたレコードが参照できるかを調べるために hostコマンドを利用する。たんにホスト名からIPアドレスを引くために主に 利用する。

host qm200.is.koeki-u.ac.jp
qm200.is.koeki-u.ac.jp has address 172.19.5.200
host 172.19.5.200
200.5.19.172.in-addr.arpa domain name pointer qm200.is.koeki-u.ac.jp.

hostコマンドはデフォルトでは、ホスト名を指定するとAレコード、 IPアドレスを指定すると逆引きドメインのPTRレコードを引きその 結果を出力する。

Aレコード、PTRレコード以外のレコードを引きたいときは、-t オプションでレコード名を指定する

新規ネームサーバの構築手順

たとえば、foo.is.koeki-u.ac.jp という新規ドメインを立ち上げたいときは 以下のとおりに作業を進める。

  1. ネームサーバプログラムの構築(IPアドレスを 172.19.5.x とする)
  2. foo.is.koeki-u.ac.jp ゾーンのレコードを登録
    cd /var/tinydns
    sudo -Hs					(スーパーユーザになる)
    ln -s /var/tinydns /service			(tinydnsの起動)
    svstat /service/tinydns			(確認)
    /service/tinydns: up (pid 75179) 42 seconds
    cd root						(DNSデータベースディレクトリへ)
    ./add-ns foo.is.koeki-u.ac.jp 172.19.5.x
    make                               (データ追加の反映)
    host -t ns foo.is.koeki-u.ac.jp 172.19.5.x	(確認)
    Using domain server:
    Name: 172.19.5.x
    Address: 172.19.5.x#53
    Aliases: 
    
    foo.is.koeki-u.ac.jp name server a.ns.foo.is.koeki-u.ac.jp.
    host -t a a.ns.foo.is.koeki-u.ac.jp 172.19.5.x  (確認)
    Using domain server:
    Name: 172.19.5.x
    Address: 172.19.5.x#53
    Aliases: 
    
    a.ns.foo.is.koeki-u.ac.jp has address 172.19.5.x
    
  3. 親となるドメイン(is.koeki-u.ac.jp)の foo というエントリの NS レコードに 172.19.5.x を指すFQDNホスト名とそのグルーレコードを 登録してもらう(依頼)。

親ドメインに含まれるサブドメイン名のネームサーバを、別の (つまりこれから自分が管理する)サーバに行なわせることを ドメインの権限委譲という。権限委譲が正常に行なわれたあとは 自分のサブドメイン内に任意のホスト名を登録できる。

tinydnsでホスト名(に対するAレコード)を追加するには add-host または add-alias コマンドを利用する。

自分の管理するWebサーバに別名を付けよう。ここでは www.自分のドメイン.is.koeki-u.ac.jp という名前を付ける(本名は既に qm2xx.is.koeki-u.ac.jp という名前が付いている)。

./add-alias www.foo.is.koeki-u.ac.jp 172.19.5.x
make      (追加データの反映)

simeで確認してみよう。

sime% host www.foo.is.koeki-u.ac.jp
www.foo.is.koeki-u.ac.jp has address 172.19.5.x

課題

yuuji@koeki-u.ac.jp