【DNSサーバ編】

Last Update 2001/02/25


家庭内でも、インターネット上でも複数台の端末がある環境では、マシン名からIPアドレスに、IPアドレスからマシン名に変換できないとあらゆるサービスが利用できません。

Linux では、/etc/hosts と DNS の2つの変換方法が提供されています。 Vine等をインストールすると、/etc/host.conf は通常以下のようになっています。

------------------------
order hosts,bind
multi on
------------------------

その意味は、「順番として最初に/etc/hosts ファイルの中を検索し、なければ bind というプログラムを用いて(DNSで)検索する。」ということになります。 ちなみに、「『multi on』は、/etc/hosts に複数の名前の登録があった場合には、全ての名前を返す。」という意味のようです。

今回は、極々小規模な家庭内のマシン名とIPアドレスの変換に/etc/hosts を編集する方法と、規模が大きくなっても対応できる bind が提供する DNS サーバを構築する方法を紹介します。

【hosts編】 (2001/02/25)

ネットワークを組むとマシンの少ないうちは、/etc/hosts でネットワーク内のマシン名を管理します。 普段は Windows をお使いの方も、Linuxサーバの設定変更のために telnet で login なんてことは良くあるのではないでしょうか。

良く利用するマシン名を /etc/hosts に書き込むことにより、名前の変換が高速にできるようになります。 以下のように各マシンの情報を書き込みます。

---------------------------------------------------
127.0.0.1       localhost.localdomain   localhost
# IP            name                    alias
192.168.1.1     server.hyamada.gr.jp    server
192.168.1.5     linux.hymada.gr.jp      linux
192.168.1.10    win.hyamada.gr.jp       win
---------------------------------------------------

家庭内の全ての端末名を列記した後、ファイルを編集して保存するだけで、認識されます。 全ての端末に同じ内容のファイルを保存します。

変更があった場合にも同様に、全ての端末のファイルを変更する必要があるため、ある程度以上の規模のネットワークでは、作業が大変になります。 この場合には、後述のDNSサーバを利用するのが一般的です。

ちなみに、この hosts ファイルは Windows でも有効で、windows ディレクトリ内に拡張子なしの hosts ファイルを全く同じ内容で作成し、保存するだけでLinuxと同様に有効になります。

【DNSサーバ編】 (2001/02/25)

DNS は、複数台の端末の存在するSOHOや一般家庭やインターネットで、マシンのアドレスを解決してくれるシステムです。 ここでは、主にキャッシュを中心としたネットワーク内部の DNS サーバの構築を目標とします。

なお、DNS を用いる場合でも、良く利用する端末名を /etc/hosts に記載することにより、ネットワークに負荷を与えることなく高速に名前の変換ができます。 全ての端末を記載する必要はないと思いますが、良く利用する端末名は記載しておくことをお勧めします。

DNS は named というデーモンが行っています。 named というデーモンの起動は、bind というプログラムを起動することになります。 Vine には、標準で rpm ファイルがありますので、インストールは簡単です。 参考までに、vine 2.1 では、現時点(2001/02/25)での最新バージョンである bind-8.2.3-1vl1.i386.rpm、 bind-devel-8.2.3-1vl1.i386.rpm、 bind-utils-8.2.3-1vl1.i386.rpm を順番に rpm -ivh *.rpm などとしてインストールします。 ちなみに、bind はよくセキュリティホールが発見され、頻繁にアップデートします。 bind を利用されている方は、迅速にアップデートすることをお勧めします。

DNS が参考とするファイルには、以下のようなものがあります。

ファイル名機能の概要
/etc/resolve.conf IP アドレスや名前の解決順序を定める
/etc/named.conf bindの動作(役割)を規定する
/var/named/named.ca キャッシュ用の設定ファイル。編集の必要なし。
/var/named/named.local キャッシュ用の設定ファイル。編集の必要なし。
/var/named/named.zone 家庭内用に設定するファイル。名前からIPアドレス。
/var/named/named.rev 家庭内用に設定するファイル。IPアドレスから名前。

ここでは、/etc/resolve.conf と /etc/named.conf、/var/named/named.data、/var/named/named.rev ファイルの編集・作成方法について書きます。

まず、resolve.conf ファイルですが、自分の端末がDNSサーバになるのですから、 以下のような記述になります。なお、ここではドメイン名を hyamada.gr.jp という架空のものに設定します。

--------- resolve.conf -----
search hyamada.gr.jp 
nameserver 127.0.0.1
----------------------------

search 行には、自ドメイン名を入力してください。 ファイルを編集し、保存するだけで変更が反映します。

続いて、/etc/named.conf の編集を行います。 前述の通り、キャッシュサーバの構築を目標としますので、最初にプロバイダのDNSへ問い合わせ、それでもない場合に自分のデータを検索するようにします。 なお、検索を許可するホストは、192.168.1.1〜254 のホストのみにし、*印の所は実際には、プロバイダのDNSのIPアドレスに変更してください。

--------------------------- named.conf -------------
// 検索を許可する端末
acl allowed-hosts{
        192.168.1.0/24;
        localhost;
};
options {
        directory "/var/named";
	// プロバイダのDNS(2つある場合)
        forwarders{
                ***.***.***.***;
                ***.***.***.***;
        };
        allow-transfer{
                allowed-hosts;
        };
        allow-query{
                allowed-hosts;
        };
};
zone "." {
        type hint;
        file "named.ca";
};
zone "yamada.ne.jp" {
        type master;
        file "named.zone";
        allow-query{
                allowed-hosts;
        };
};
zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.local";
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "named.rev";
        allow-query{
                allowed-hosts;
        };
};
----------------------------------------------------

残りのファイルを作成した後に、namedを再起動しますので、とりあえずは、このままnamed.confを保存しておいてください。

さて、後は、自分のネットワークのデータを作成します。

------------------ named.zone ------------------------------
;
; Written by Hyamada at 2001/02/25
;
; DNSサーバの名前、サーバの管理者のメールアドレス
@               IN      SOA server.hyamada.gr.jp. root.server.hyamada.gr.jp. (
                        2001022500 ; serial  連続番号変更時は以前より大きく
                        43200      ; refresh 
                        3600       ; retry
                        3600000    ; expire
                        360000     ; default_ttl
                        )
                  ; DNS サーバを指定する
		  IN    NS      server.hyamada.gr.jp.
		  ; メールサーバの名前を指定する
                  IN    MX      10      linux.yamada.gr.jp.
;
; localhosts
;
localhost               IN      A       127.0.0.1
loghost         IN      CNAME   localhost.
;
;
; local ネットワーク内の端末名を列記する
;
server          IN      A       192.168.1.1
linux           IN      A       192.168.1.5
win             IN      A       192.168.1.10
;
; 別名を定義する
dns             IN      CNAME   server.hyamada.gr.jp.
mail            IN      CNAME   linux.hyamada.gr.jp.
www             IN      CNAME   linux.hyamada.gr.jp.
---------------------------------------------------------------

記述の際に、www.hyamada.gr.jp. 最後の.をお忘れなく。

最後に逆引きファイルを作成します。

------------------ named.rev ----------------------------------
;
; named.rev Written By Hyamada at 2001/02/25
;
@               IN      SOA  server.hyamada.gr.jp  root.server.hyamada.gr.jp. (
                        2001022500 ; serial 連続番号変更時は以前より大きく
                        43200      ; refresh
                        3600       ; retry
                        3600000    ; expire
                        360000     ; default_ttl
                        )
@               IN      NS      server.hyamada.gr.jp.
@               IN      PTR     hyamada.gr.jp.
;
; Other Hosts
;
1               IN      PTR     server.hyamada.gr.jp.
5               IN      PTR     linux.hyamada.gr.jp.
10              IN      PTR     win.hyamada.gr.jp.
----------------------------------------------------------------

お疲れ様でした。これで全てのファイルが揃いました。 念のために、今まで作ったファイルを再度確認してみてください。

named は以下のように起動します。

 $ su
 (パスワードの入力)
 # /etc/rc.d/init.d/named start 

起動時後に、/var/log/messages を確認してください。 記述のミスがある場合は、エラーメッセージが書き込まれますので、参考にして修正してください。

エラーがなくなったら、正引き、逆引きのテストを行います。 以下のように、記述した全ての端末をテストしてみてください。

----------------------------
 $ nslookup linux
 Server:  server.hyamada.gr.jp
 Address:  192.168.1.1

 Name:    linux.hyamada.gr.jp
 Address: 192.168.1.5


 $ nslookup 192.168.1.5
 Server:  server.hyamada.gr.jp
 Address:  192.168.1.1

 Name:    linux.hyamada.gr.jp
 Address:  192.168.1.2
----------------------------

全ての端末が正引き、逆引きできたら、正常にファイルができていますから、 次回からマシンの起動時に自動的に起動するように、/usr/sbin/ntsysv で named を起動するように設定してください。


ホームへ