DNSとは
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)です。これはだいたいネームサーバといえばこれを指すので、お勉強するならこれが一番役に立つと思われます。
アドレス体系を決める
まずは、自分ちの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アドレスを使うことを宣言したのと同じです。
データベースの設定
ここでは、まず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ディレクトリに置いておきます。
ネームサーバコンフィギュレーション
/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の指定などで変わります。
さて、起動
動かしてみましょう
/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
これで自動起動の設定も出来ましたね。
| Page Info | |
|---|---|
| Page Name : | DNS |
| Page aliases : | None |
| Page owner : | maruo |
| Can Read | |
| Groups : | All visitors |
| Users : | All visitors |
| Can Edit | |
| Groups : | No one |
| Users : | No one |

