ページへ戻る

+ Links

 印刷 

DNS のソース :: Nest Of Hawk

xpwiki:DNSのソース

  
[[自宅鯖計画]]

*DNSとは [#tea76ea0]
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):http://www.isc.org/products/BIND/]]です。これはだいたいネームサーバといえばこれを指すので、お勉強するならこれが一番役に立つと思われます。
*さて、設定 [#jb7ed752]
最近のUNIXディストリビューションでは、大体添付されているので、Linuxでの設定を有効にする手順を記述しておきます。
**アドレス体系を決める [#sf427cde]
まずは、自分ちの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アドレスを使うことを宣言したのと同じです。
**データベースの設定 [#b5b91254]
ここでは、まず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ディレクトリに置いておきます。
**ネームサーバコンフィギュレーション [#i721dd86]
/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の指定などで変わります。
**さて、起動 [#j643993e]
動かしてみましょう
 /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
これで自動起動の設定も出来ましたね。
#back(戻る,right,0)

  

  • DNS のバックアップソース(No. All)
    • 現: 2009-08-16 (日) 22:38:34 maruo