Server ≫ Linux Server ≫ Fedora Core 4 ≫ 内部向けDNSサーバーの構築

 
DNSサーバーは固定グローバルIPアドレス環境でなければ構築できません。大袈裟に言うと、これはDNSサーバーを構築することにより全世界のDNSサーバーの一躍を担うことになるからです。

えッ・・・・そんな大袈裟な〜・・・・だって、自分のサイトのホスト名とIPアドレスを繋ぎ合わせるだけだよ!!!!。

確かにそうなんですが、それが大変なことなんです!!!

簡単ですがDNSとは?  から紹介して行きます。

DNSとは、ドメインネームシステム (Domain Name System) の略です。

何をするためのものかというと、「ホスト名を元に、ホストの IP アドレスを調べる」というのが一番大きな仕事です。

例えば、このサイトにアクセスしようと、“www.papa-net.info”にアクセスしたとします。アクセス先の IP アドレスを教えてもらわないとアクセスできないので、DNSサーバーに「“www.papa-net.info”の IP アドレスは何番ですか?」と問い合わせをします。すると、DNSサーバーは、ホスト名を元にDNSサーバーに登録された情報を検索し、IPアドレスを調べて返します。そして、“www.papa-net.info”にアクセスできるようになります。

もし、そのDNSサーバーに登録されていないホスト名を聞かれたら、上位のDNSサーバーに問い合わせをし、IPアドレスを調べてきてくれます。そして、その上位のDNSサーバーでも解らない場合はまたその上位のDNSサーバーへ、そしてある上位のDNSサーバーでヒントが見付かると今度は詳細を調べるために下位DNSサーバーへと下って行きます。

下の図ではインターネット閲覧PCで www.papa-net.info を閲覧しようとした場合にDNSサーバー@に問い合わせをします。DNSサーバー@は上位DNSサーバーFに問い合わせをします。そして上位DNSサーバーFは更に上位DNSサーバーHに問い合わせをします。

そしてDNSサーバーは次々(I→G→D)に問い合わせを繰り返し目的のWebサーバー(www.papa-net.info)に辿り着く と今度はさっきとは逆(D→G→I→H→F→@→インターネット閲覧PC)に情報を返して来ます。これでインターネット閲覧PCはWebサーバーのグローバルIPアドレスを入力しなくてもドメイン名の入力だけWebサーバー内にあるWebサイトを見ることができるのです。

自宅でDNSサーバーを構築すると言うことは上の図で言うDNSサーバーDを構築すると言うことなんです。

もし、DのDNSサーバーのIPアドレスが変わってしまったらGの上位DNSサーバーで検索・問い合わせが止まってしまいます。それだけなら自分のサイトを公開できなかったりと自分だけの問題で済みますが・・・・・実はGにはDのドメイン・IPアドレス情報が登録されているのです!!!  DのIPアドレスが変わってしまったらこの情報は嘘の情報になってしまいます、逆に言うと嘘の情報を登録した事になってしまうのです。

また、もし変わってしまったIPアドレスが他の人(PC)に割り当てられたら・・・・・そうです! まったく違うサイトにアクセスするこになってしまいます。  これではDNSサーバーの意味が無くなってしまい混乱を招きます。

したがって、DNSサーバーを構築すると言うことは大変責任の重いことになります。

上記のような理由でDNSサーバーを構築する場合は固定グローバルIPアドレスでなければなりません。

堅い事を書きましたがインターネットを愛する者として正確で安定した使い易いネット環境であって欲しいと思っています。

だいぶ話しがそれてしまいましたが、ここではプライベートIPアドレスを使ったLAN内だけで有効なDNSサーバーを構築してみます。

LAN内にあるWebサーバーにアクセスする場合 http://192.168.*.** 等のIPアドレスでアクセスしますが、これを http://www.papa-net.info のようにドメイン名でアクセスできるようにします。

ただ、最近のルーター等は性能が良いので最初から問題無くドメイン名でアクセスできる事が多いです。ですが一応知識として・・・・・

bind のインストール
 

bind は通常OSと一緒にインストールされていますので改めてインストールすることは無いのですが一応確認します。

デスクトップ上で右クリックをしてメニューを表示させ“端末を開く(E)”をクリックします。この操作には root 権限が必要になりますので user でログインしている場合は su コマンドで root になって下さい。

下図のように rpm -q bind と入力して Enter キーを押します。

下図のように bind のバージョン番号が表示されればインストールされています。。

もし、上図のようにバージョン番号が表示されない場合はインストールされていませんので下図のように yum install bind と入力して Enter キーを押します。

ダウンロードが開始されます。

途中で ls this ok [y/n] と問われるので y を入力して Enter キーを押します。

“ complete! ” と表示されればインストールの完了です。

bindの設定
  bind の設定は root 権限がないとできませんのであらかじめ root でログインしておいて下さい。

デスクトップ上部にあるメニューバーより“アプリケーション”⇒“アクセサリー”⇒“GNOMEテキスト・エディタ”を選択して“gedit”を起動します。

“gedit”が起動したら、画面メニューバーより“ファイル(E)”⇒“開く(O)”を選択して /etc/ にある named.conf を開きます。

下図のような画面が表示されます。

これが bind の設定ファイルです。

この設定ファイルを使ってもいいのですが問題があった時にすぐに戻せるようにこのファイルを namedbk.conf のように別名で保存して新たに named.conf ファイルを作って設定を行います

下記に新しく作る bind の設定ファイル( named.conf )の全文を掲載します。下記のように“GNOMEテキスト・エディタ”でファイルを作り /etc/ に named.conf と言う名前で保存して下さい。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

options {
    directory "/var/named"; (1)
    allow-query { (2)
    127.0.0.1;
    192.168.0.0/24;
};
forwarders {  (3)
    123.456.789.101; (4)
    123.456.789.102; (5)
};

zone "." IN {
    type hint;
    file "named.ca"; (6)
};
zone "localhost" IN {
    type master;
    file "localhost.zone"; (7)
};

zone "named.local" IN {
    type master;
    file "named.local"; (8)
};

zone "mydomain.co.jp" IN {
    type master;
    file "papa-net.info.db"; (9)
};

zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "0.168.192.in-addr.arpa"; (10)
};

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

(1)   = ゾーンファイルの保存場所。
(2)   = LAN内からの問い合わせのみ応答する。
(3)   = LAN内以外の名前解決に利用するDNSサーバー。
(4)   = プロバイダーのDNSサーバー(プライマリ)。
(5)   = プロバイダーのDNSサーバー(セカンダリ)。
(6)   = ルートサーバーの情報ファイル名。
(7)   = ローカルホストの正引きファイル名。
(8)   = ローカルホストの逆引きファイル名。
(9)   = ドメインの正引きファイル名。
(10) = ドメインの逆引きファイル名。

(4)(5)(9)は自分の環境に合わせて変えて下さい。

これで bind の設定は終了です。

正引きゾーン&逆引きゾーンのデータベース作成
データベースの作成は root 権限がないとできませんのであらかじめ root でログインしておいて下さい。

デスクトップ上部にあるメニューバーより“アプリケーション”⇒“アクセサリー”⇒“GNOMEテキスト・エディタ”を選択して“gedit”を起動します。

“gedit”が起動したら、画面メニューバーより“ファイル(E)”⇒“新規(N)”を選択して新規ファイルを開きます。

まずは、localhost.zone(ローカルホストの正引きゾーンのデータベース作成です。下記のように“GNOMEテキスト・エディタ”でファイルを作り /var/named localhost.zone と言う名前で保存して下さい。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

$TTL 1D(1)
@       IN       SOA(2)       papa-net.info.(3)       root.papa-net.info.(4) (
 
                                                                   2006091801 ; Serial(5)
                                                                   3H               ; Refresh(6)
                                                                   15M             ; Retry (7)
                                                                   1W               ; Expire(8)
                                                                   1D )             ; Minimum(9)

         IN       NS       papa-net.info. (10)
         IN       A         127.0.0.1 (11)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

(1)   = TTLは外部に対するキャッシュデータの有効期間。 外部に公開しないので何でも良い。 とりあえず1日(1D)。
(2)   = SOAは決まりの記述。 ドメインに関する権限を持っているサーバーという意味。
(3)   = DNSサーバーのドメイン(ホスト)名。 最後に“.”(ピリオド)があることに注意!
(4)   = DNSサーバー管理者のメールアドレス。 “@”の代わりに“.”になっていることに注意! 最後に“.”(ピリオド)があることに注意!
(5)   = DNSサーバーのシリアル番号。 一般的にはDNSサーバーを立ち上げた年月日+任意の数字。
(6)   = スレーブDNSサーバーがマスターDNSサーバーに同期更新する間隔。
(7)   = 同期更新に失敗した場合に再試行する間隔。
(8)   = 同期更新に失敗した場合にスレーブのデータを破棄するまでの期間。
(9)   = 同期更新に失敗した場合のログを記憶しておく期間。
(10) = ドメインに関する権限を持っているドメイン(ホスト)名.。 通常は(3)と同じになる。 最後に“.”(ピリオド)があることに注意!
(11) =
ローカルホストの正引きゾーンの設定なのでローカルホストのIPアドレス。 自分自身を意味する 127.0.0.1 を記述。

次は、named.local(ローカルホストの逆引きゾーンのデータベース作成です。下記のように“GNOMEテキスト・エディタ”でファイルを作り /var/namednamed.local と言う名前で保存して下さい。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

$TTL 1D(1)
@                 IN       SOA(2)       papa-net.info.(3)       root.papa-net.info.(4) (

                                                                   2006091801 ; Serial(5)
                                                                   3H               ; Refresh(6)
                                                                   15M             ; Retry (7)
                                                                   1W               ; Expire(8)
                                                                   1D )             ; Minimum(9)

                   IN       NS       papa-net.info. (10)
127.0.0.1      IN       PTR     localhost. (11)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

(1)〜(10) は前項と同じ。
(11) =
ローカルホストの逆引きゾーンの設定なのでローカルホストのIPアドレスにドメイン名を関連付ける。 最後に“.”(ピリオド)があることに注意!

続いて、papa-net.info.db(ドメインの正引きゾーンのデータベース作成です。下記のように“GNOMEテキスト・エディタ”でファイルを作り /var/named に papa-net.info.db と言う名前で保存して下さい。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

$TTL 1D(1)
@          IN     SOA(2)     papa-net.info.(3)     root.papa-net.info.(4) (

                                                        2006091801 ; Serial(5)
                                                        3H               ; Refresh(6)
                                                        15M             ; Retry (7)
                                                        1W               ; Expire(8)
                                                        1D )             ; Minimum(9)

           IN     NS            papa-net.info. (10)
           IN     MX   10     papa-net.info. (11)
@         IN     A              192.168.0.100 (12)
papa     IN     A              192.168.0.101 (13)
mama   IN     A              192.168.0.102 (13)
oyaji     IN     CNAME     papa-net.info. (14)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

(1)〜(10) は前項と同じ。
(11) = 決まりの記述。メール受信の設定。 最後に“.”(ピリオド)があることに注意!
(12) = papa-net.info でアクセスしたときに 192.168.0.100 を返す。
(13) = バーチャルホスト papa.papa-net.info でアクセスしたときに 192.168.0.101 を返す。
(14) = 別名指定でブラウザに oyaji 入力した場合に papa-net.info と入力したものと同じになる。 最後に“.”(ピリオド)があることに注意!

最後に、0.168.192.in-addr.arpa(ドメインの逆引きゾーンのデータベース作成です。下記のように“GNOMEテキスト・エディタ”でファイルを作り /var/named に 0.168.192.in-addr.arpa と言う名前で保存して下さい。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

$TTL 1D(1)
@         IN       SOA(2)       papa-net.info.(3)       root.papa-net.info.(4) (

                                                           2006091801 ; Serial(5)
                                                           3H               ; Refresh(6)
                                                           15M             ; Retry (7)
                                                           1W               ; Expire(8)
                                                           1D )             ; Minimum(9)

           IN       NS       papa-net.info. (10)
100      IN       PTR     papa-net.info. (11)
101      IN       PTR     papa.papa-net.info. (11)
102      IN       PTR     mama.papa-net.info. (11)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

(1)〜(10) は前項と同じ。
(11) =
ドメインの逆引きゾーンの設定なのでドメインのIPアドレスにドメイン名を関連付ける。 最後に“.”(ピリオド)があることに注意!

これでデータベースの作成は終了です。

bind の起動
デスクトップ上部にあるメニューバーより“デスクトップ”⇒“システム設定”⇒“サーバ設定”⇒“サービス”を選択しします。

“naned” の前のチェックボックスにチェックを入れ “開始” ボタンをクリックします。

“OK(O)” ボタンをクリックして起動が完了します。

これでLAN内のDNSサーバーが完成しました。

ローカルホストのアドレス設定
設定は root 権限がないとできませんのであらかじめ root でログインしておいて下さい。

デスクトップ上部にあるメニューバーより“アプリケーション”⇒“アクセサリー”⇒“GNOMEテキスト・エディタ”を選択して“gedit”を起動します。

“gedit”が起動したら、画面メニューバーより“ファイル(E)”⇒“開く(O)”を選択して /etc/ にある resolv.conf を開きます。

下図のような画面が表示されます。

自分自身がDNSサーバーになったのでIPアドレスを自分自身を表す 127.0.0.1 に変更して保存します。

ルーターの設定
ルーターの設定は皆さん使っているルーターが違うと思いますので詳しく書けませんがLAN内向けのDNSサーバーのアドレスを記述するところに上記のDNSサーバーのIPアドレスを記述して下さい。

また、ルーターによってはDHCPの設定の中にある物もあります。

注意!!!・・・・・・・

ルーターに設定項目が無い場合はお使いのルーターは最初から問題無くドメイン名でアクセスできる物になっているはずです。このようなルーターをお使いの場合、上記のようにDNSサーバーを立ち上げてしまうと正常にアクセスできなくなる場合がありますのでDNSサーバーの構築は辞めた方が良いです。 ・・・・・・・

クライアント側の設定
最後にクライアント側の設定です。

下図の例は Windows XP ですが他のOSでも基本は同じなので同じように設定して下さい。

ローカルエリア接続のプロパティを開きます。

インターネットプロトコル(TCP/IP)を選択して、“プロパティ(R)”をクリックします。

下図のように“優先DNSサーバー(P)”にDNSサーバーのアドレスを入力して“OK”をクリックします。

これでクライアント側からドメイン名でWebサーバーにアクセスできるようになります。

戻る