ページへ戻る

+ Links

 印刷 

DNS :: Nest Of Hawk

xpwiki:DNS

自宅鯖計画

DNSとは anchor.png

DNSとはDomain Name Serviceの略で、IPアドレスと名前の変換を行ってくれるものです。インターネットはIPアドレスを使って通信されることはご存知かと思いますが、例えばYahooにアクセスするのに「210.81.3.238」とかでアクセスするのもどーかと思うでしょ?そこは、yahoo.co.jp⇔210.81.3.238を変換してくれるサーバがやってくれてるんですね。

と、これを家でやって何が嬉しいの?と思われるかと思います。これをやっておくと、「自分のPCに名前がつけられます!」これは結構嬉しいのではないでしょうか。今では、WindowsのWINSサーバを使えばローカルネットワークに名前をつけて置くこともできますが、UNIX,Windowsで共通でやろうと思ったらDNSです。また、メールやHTTPサーバ等はDNSを参照して名前とアドレスの変換をしていますので、設定しておいた方が良いでしょう。 DNSサーバとして最も有名なのはBIND(Berkrey Internet Name Domain)です。これはだいたいネームサーバといえばこれを指すので、お勉強するならこれが一番役に立つと思われます。

Page Top

さて、設定 anchor.png

最近のUNIXディストリビューションでは、大体添付されているので、Linuxでの設定を有効にする手順を記述しておきます。

Page Top

アドレス体系を決める anchor.png

まずは、自分ちのIPアドレス体系を決めましょう。基本的には、プライベートアドレスを使ってるでしょうね。「192.168.XXX.XXX」みたいな奴です。頭の192.168が勝手に使っていい(但しインターネットでは使っても無視される)アドレスです。 とりあえず、192.168.1.0 netmask 255.255.255.0 としておきましょう。これだと、192.168.1.1~192.168.1.254までのIPアドレスを使うことを宣言したのと同じです。

Page Top

データベースの設定 anchor.png

ここでは、まずfoo.netという仮装ネットワークを作ってみましょう。DNSでは

正引きデータベース
名前→IPアドレス変換の内容を書いておきます
逆引きデータベース
IPアドレス→名前の変換を書いておきます

と言うことで、まずは正引きデータベース。

$TTL 86400
@       IN      SOA     name.foo.net.  root.localhost ( ←おまじない。
                        2 ; serial      ネームホスト名と管理者メールを書いておきます。
                        28800 ; refresh
                        7200 ; retry
                        604800 ; expire
                        86400 ; ttl
                        )  


        IN      NS      192.168.1.1 ←ネームサーバのアドレス

        IN      A       192.168.1.1 
        IN      MX      10 name     ←ユーザ名@foo.netで送ったときに
                                      メールを受けるホスト
name    IN      A       192.168.1.1 ←こんな具合にホストを追加していきます
www     IN      CNAME   name        ←nameの別名をwwwとする。
                                      www.foo.netでアクセスできるようになります。
host1   IN      A       192.168.1.10
host1   IN      A       192.168.1.11

これをfoo.net.zoneというファイル名でセーブしておきます。

次に逆引きデータベースです。

$TTL 86400
@       IN      SOA     name.foo.net.  root.localhost (
                        3 ; serial
                        28800 ; refresh
                        7200 ; retry
                        604800 ; expire
                        86400 ; ttk
                        ) 

@       IN      NS      name.foo.net. ←ネームサーバの宣言
1       IN      PTR     name.foo.net. ←こんな風に追加していきます
10      IN      PTR     host1.foo.net.
11     IN      PTR     host2.foo.net.

これを1.168.192.in-addr.arpa.zoneと言う名前でセーブしておきます。変な名前ーと思われるかもしれませんが、アドレスをひっくり返して、in-addr.arpaをつけるのが古の逆引き指定だったので、こんな名前になってます。これを一般的には/var/namedディレクトリに置いておきます。

Page Top

ネームサーバコンフィギュレーション anchor.png

/etcにnamed.conf,named.customというファイルがあるかと思います。named.customに以下のエントリを追加しておきます。

options {
        directory "/var/named/";
        forward first;        ←追加
        forwarders {
               XXX.XXX.XXX.XXX;←プロバイダのネームサーバを追加しておきます
               XXX.XXX.XXX.XXX;
        };
};

これをやると、さっき書いたデータベース以外の情報はプロバイダのネームサーバに問い合わせに行くので、直接ネットの名前も引けるようになります。

さらにnamed.confに以下のエントリを追加します。

zone  "1.168.192.in-addr.arpa" { ←このzoneを自分のネームサーバで扱う宣言
       type master;          ←データベースがあるのでマスタサーバになる
       file  "1.168.192.in-addr.arpa.zone";
};
zone  "foo.net" {            ←このzoneを自分のネームサーバで扱う宣言
       type master;          ←データベースがあるのでマスタサーバになる
       file  "foo.net.zone";
};

これでfoo.netのデータベースをもち、その他をプロバイダのネームサーバに問い合わせる設定が完了しました。ちなみに、他の設定では、

マスターサーバデータベース本体を持っているサーバ
スレーブサーバデータベースのバックアップをするサーバ
キャッシングオンリーサーバデータベースを持たず、外部への問い合わせのみを行うサーバ

という種別に分かれます。named.confき記述したtypeの項ですとか、named.customで指定したforwarderの指定などで変わります。

Page Top

さて、起動 anchor.png

動かしてみましょう

/etc/rc.d/init.d/named start

でネームサーバが起動します。ついでに名前引きが出来るようにクライアント側も設定してしまいましょう。 /etc/resolve.confを以下のように設定しておきます

domain foo.net
search foo.net
nameserver 192.168.1.1

これを設定した上でサーバ上で以下のコマンドを実行してみましょう

[XXX@name etc]$ nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> yahoo.co.jp
Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   yahoo.co.jp
Address: 210.81.3.238
Name:   yahoo.co.jp
Address: 210.81.150.5
Name:   yahoo.co.jp
Address: 211.14.15.5
> host1
Server:         192.168.1.1
Address:        192.168.1.1#53

Name:   host1.foo.net
Address: 192.168.1.10

さて、こんな感じに出てきましたか?ホスト名に対してアドレスがちゃんと出てきたら設定に問題はありません。 さらに、サーバをブートしたときに自動的に起動するようにもしておきましょう

/bin/chkconfig named on

これで自動起動の設定も出来ましたね。

[ 戻る ]

Last-modified: 2009-08-16 (日) 22:38:34 (JST) (5338d) by maruo