\documentstyle[epsf]{jarticle}
\title{\LARGE{IPアドレス（補足）とDNSについて}}

\begin{document}
\maketitle
\section{グローバルアドレスとプライベートアドレス}
各マシンをネットワーク上で識別するための番号であるIPアドレスにはグロー
バルアドレスとプライベートアドレスの2種類がある．インターネットに直接
接続されている場合，世界中で唯一の番号（インターネットの管理団体が重複
しないように割り当てる）が割り振られ，この場合のIPアドレスをグローバル
アドレスという．これに対し，直接外部と接続されていない研究室内LANなどの内部ネットワークでは，内
部だけで通用するIPアドレスをシステム管理者が自由に割り振ることができる．
このIPアドレスをプライベートアドレスという．実際には以下のようにプライ
ベートアドレスとして使用していいアドレスの範囲が決められているので,こ
の範囲内で自由に割り当てることができる．\\


(プライベートアドレスの範囲）\\
	10.0.0.0${\sim}$10.255.255.255\\
	172.16.0.0${\sim}$172.31.255.255\\
	192.168.0.0${\sim}$192.168.255.255\\

研究室の場合, 192.168.0.?を3階の内部マシン，192.168.33.?を4階の内部マ
シンのプライベートアドレスとして使用している．また，外部に接続されたマ
シン（minako,madoka,hatsune,yoda,amiなど）では，133.5.18.?というグロー
バルアドレスが割り当てられている．プライベートアドレスは内部ネッ
トワークでのみ有効なIPアドレスであるため，外部と通信する際は，NATなどによ
り，プライベートアドレスをグローバルアドレスに変換する必要がある．
\section{ドメイン}
インターネット上のホストにアクセスする時には，IPアドレスによって相手の
ホストを指定しなければならないが，実際にはユーザが分かりやすい名前
（www.db.is.kyushu-u.ac.jpなど）を指定することによってアクセスを行う．
www.db.is.kyushu-u.ac.jpの場合,最初のwwwがホスト名で,ドメイン名は，
db,is,kyushu-u,ac,jpの５つのラベルがある．ドメイン名には，次の５つのド
メインが含まれる．
\begin{verbatim}
db.is.kyushu-u.ac.jp
is.kyushu-u.ac.jp
kyushu-u.ac.jp
ac.jp
jp
\end{verbatim}
これらのドメインは階層構造をなしていて(図１）,木構造の最上位にルートドメイン
があり，ドメイン名はルートに向かうように列挙し，ラベル間を''.''で区切っ
て記述する．


\begin{figure}
\begin{center}
\epsfbox{dns1.eps}
\caption{ドメインの階層構造}
\label{図１}
\end{center}
\end{figure}

\section{DNS(Domain Name System)}
ホスト名にドメイン名をつけることによってネットワーク上のマシンを一意に
識別することが可能であるが,このままではコンピュータが理解できないので，
ホスト名とIPアドレスの変換を行う必要がある.
通常はホスト名をIPアドレスに変換するテーブルは/etc/hostsに作られ
る．小規模なLANでは，各マシンごとにテーブルを作成して管理するといった
こともできるが，ホストの更新を行う度に各マシンのテーブルを更新する必要
があり，マシンの数が多いと大変である．また別の方法として,テーブルをあ
る１つ（または少数）のマシンに作り，他のマシンはそのマシンに必要に応じ
て問い合わせるといった方法もあるが，インターネットなどの世界規模の膨大
なホスト数をもつネットワークでは，サーバの負担が増大し，情報の管理も難
しくなる．これを解決する方法として設計された方法がDNSである．DNSでは，ホ
スト名の管理を各ドメインごとに分散させて行うことができ,サーバマシンの負担を減ら
すことができる．
\subsection{ネームサーバ}
DNSのサービスを提供するサーバをネームサーバといい，各ドメインにはDNSサー
バが置かれ，ホスト名とIPアドレスの対応関係を管理する．各DNSサーバは自
分が管理しているゾーンの情報(１つ下の階層のIPアドレスとホスト名)のみ
をデータベースに格納している．ネームサーバのゾーン(zone)とは，ドメイン
名空間の自分が管理している情報の範囲(図１）を表す．
牧之内研究室では，DNSサーバは
minako.db.is.kyushu-u.ac.jpになっている．また，3階内部で
は，yoda.db.is.kyushu-u.ac.jp (=luke.4f.db.is.kyushu-u.ac.jp), 4階内部では
ami.db.is.kyushu-u.ac.jp (=yumi.4f.db.is.kyushu-u.ac.jp)がそれぞれDNSサーバとなっている．
なお、「4f」 とあるのは内部ネットという意味である(4階という意味では無い)。

ネームサーバに
接続してサービスを利用するクライアントをリゾルバという．リゾルバから変
換要求を受けたネームサーバはまず検索対象が自分の管理しているデータベー
スに登録してあるか調べ,あれば，それを結果として返し，なければ，インター
ネット上の別のネームサーバに問い合わせを行う．ネームサーバには，プライ
マリサーバとセカンダリサーバがある．
\begin{itemize}
\item プライマリサーバ\\
属するドメインの情報を保持し,それを管理する．自分が管理している情報に
対する他のネームサーバからの問い合わせに答える．通常ドメイン内には，１
つのプライマリサーバが置かれる．
\item セカンダリサーバ\\
プライマリサーバがダウンしたり，アクセスの集中により問い合わせに応じる
ことができない場合にプライマリサーバの代わりとなる．情報はプライマリサー
バと定期的に通信を行って，ネットワーク経由で転送される．
\end{itemize}


\subsection{DNS関連設定ファイル}
\vspace{1cm}
DNSのサービスを提供する代表的なソフトウェアはBIND(Berkeley Internet
Name Domain)である．BINDの設定ファイルは通常/etc以下に置かれる．
\begin{itemize}
\item ネームサーバ(yoda,ami)の設定ファイル\\
\begin{itemize}
\item コンフィギュレーションファイル\\

ネームサーバが起動するとき，最初に読み込まれるファイル．
/etc/named.confというファイルにデータファイルの場所やファイル名などを
記述する．\\
\item データファイル\\

実際にホスト名とIPアドレスの対応を記述したファイルで，ゾーンデータファ
イルとリバース（逆引き）データファイルがある．
\begin{itemize}
\item ゾーンデータファイル\\

ネームサーバが管理するホストのホスト名をIPアドレスに対応させる．ホスト
名${\rightarrow}$IPアドレスの変換を正引きという．3階の場合yodaの
/etc/namedb/4f.zone, 4階の場合amiの/etc/namedb/4f.zoneがゾーンファイルに
なる．

以下のように1行の最初にホスト名を記述し,最後に対応するIPアドレスを記述
する．CNAMEは別名を表す．\\
\begin{verbatim}
luke	IN	A	192.168.33.1
akari   IN      A       192.168.33.17
yoda	IN	CNAME   luke	
\end{verbatim}

\item 逆引きデータファイル\\

ネームサーバが管理するホストのIPアドレスをホスト名に対応させる．IPアド
レス${\rightarrow}$ホスト名の変換を逆引きという．3階の場合yodaの
/etc/namedb/4f.rev, 4階の場合amiの/etc/namedb/4f.revが逆引きデータファイルに
なる．

以下のように1行の最初にIPアドレス（ネットワーク番号は省略可）を記
述し,最後にホスト名を記述する．\\
\begin{verbatim}
1	IN PTR  luke.4f.db.is.kyushu-u.ac.jp.
17      IN PTR  akari.4f.db.is.kyushu-u.ac.jp.
\end{verbatim}
\end{itemize}

\item ルートキャッシュファイル\\

ネームサーバはリゾルバから問い合わせを受けたときに，自分の管理している
ドメインについてであれば，データファイルを調べて答えを返すが，自分が管
理していないドメインについての問い合わせがあった場合,ルートキャッシュ
ファイルを参照し，そこに書いてあるサーバに問い合わせを行う．ルートキャッ
シュファイルには，全世界のネームサーバを管理しているルートサーバのIPア
ドレスとホスト名を記述する．/etc/namedb/named.rootというファイルがルー
トキャッシュファイルである．\\
\end{itemize}
\clearpage

\item リゾルバ(各マシン）の設定ファイル\\

ネームサーバのサービスを利用するクライアントであるリゾルバに関しては，
リゾルバとなるホストの/etc/resolv.confというファイルで設定する．このファ
イルには，自分の属するドメイン名と，問い合わせを行うネームサーバのIPアド
レスを指定する．ネームサーバは複数指定してすることができる．
\begin{verbatim}
domain 4f.db.is.kyushu-u.ac.jp
search 4f.db.is.kyushu-u.ac.jp db.is.kyushu-u.ac.jp
nameserver 192.168.33.1     #  yoda/luke
nameserver 133.5.18.160    #  minako
\end{verbatim}
\end{itemize}

\section{実習}
各自のマシンのIPアドレスやホスト名は，OSをインストールした後でマシン
ami,yodaの設定ファイル\\（/etc/namedb/xxxx.[zone,rev]）や自分のマシン
の/etc/resolv.confにすでに追加しているので設定することはないが，これらのファイルをami
やyodaにログインして確認してみる．また，自分のマシンでnslookupコマンドを使って,設定
ファイルに記述してある通りに指定したホスト名からIPアドレスが得られるこ
とを確認する．minakoの場合，設定ファイルは/usr/named以下にある．
\end{document}