| DNSサーバ(BIND) |
DNSサーバは、IPアドレスとDomainネームを結びつけるためのサーバである。 しかし、インターネット上には、無数の名前が流れているため、一つのサー バがすべての名前を解決していたら大変なので、分散して管理するように なっています。 また、CACHE機能もあり、一度サーバで解決した名前はそれ以後一定の間 CACHE内にあるので解決も早くなる。
このサーバでの基本的な方針は、自分のローカルネットワークから尋ねら れた場合のみに動き、ローカルネットの情報のみだけはこのサーバで返答 し、それ以外は、この上位のサーバ(プロバイダのDNS)に尋ねて答えると 言う形をとる。
DNSサーバのソフトはDHCPと同じで ISC(Internet Software Consortium) と言うところから出ている。
| ダウンロードとインストール |
2001.08.12現在の最新バージョンは、9.1.3である。 ここ のあたりからソースをダウンロードすることができる。 Vine Linux2.1では、8.2.3が、RedHat Linux7.1では9.1.0がインストール されている。 設定自体はそれほど変わらない。
ソースをダウンロードした場合は、
$ cd /usr/local/src $ gtar xvfz /usr/local/src/bind-9.1.3.tar.gz $ cd bind-9.1.3 $ ./configure $ make $ su passward XXXXXX # make install
| 関連ファイル |
下記は、RedHat 7.2におけるファイルのおき場所である。 他のディストリビューションでは違う場所にあるかも知れない。
| /etc/named.conf | 全体設定用ファイル |
| /var/named/named.ca | 全世界のNAMEサーバを利用するた めの設定 |
| /var/named/named.local | localhost用ファイル |
| /var/named/bigforest.hn.org.zone | 自ドメイン用ゾーンファイル |
| /var/named/192.168.1.0.rev | アドレス逆引き用ファイル |
| bindの設定 |
BINDの全体設定ファイルは、/etc/named.confにある。
以下に設定を示す。ゾーンデータのドメイン名は、絶対表記では最後に
「.」がつく。そうしないと相対表記になってしまう。
つまり、「dns」は「dns.bigforest.hn.org.」とお
なじである。これを付けわすれないように注意する。
# file: named.conf
options {
#ゾーンファイルの場所を設定する。
directory "/var/named";
#もし、自DNSで見付からなかったときに探す
forwarders{
xxx.xxx.xxx.xxx; providerのファーストネームサーバ
yyy.yyy.yyy.yyy; providerのセカンドネームサーバ
};
};
#世界のDNSを設定する。
zone "." {
type hint;
file "named.ca";
};
#自ドメインのゾーンファイルを指定する。
zone "bigforest.hn.org." {
type master;
file "bigforest.hn.org.zone";
};
#ローカルの設定をする。
zone "0.0.127.IN-ADDR.ARPA." {
type master;
file "named.local";
};
#自ドメインの逆引きファイルを指定する。
zone "1.168.192.IN-ADDR.ARPA." {
type master;
file "192.168.1.0.rev";
};
|
世界のネームサーバ(/var/named/named.ca)
;s file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . |
ローカルのゾーンファイル(/var/named/named.local)
$TTL 86400
@ IN SOA bigforest.hn.org. root.bigforest.hn.org. (
2001101300 ; serial
3600 ; refresh every 1 hours
3600 ; retry after 1 hour
3600000 ; expire after 1000 hours
2419200 ; default ttl is 10 hours
)
IN NS bigforest.hn.org.
;
1 IN PTR localhost.
|
つづいて、ゾーンファイル(/var/named/bigforest.hn.org.zone)の設定を する。
; $Id:$ ; file: bigforest.hn.org.zone $TTL 86400 ; @ IN SOA yari.bigforest.hn.org. root.bigforest.hn.org. ( 2001081200 ;Serial 10800 ;Refresh 1800 ;Retry 4320000 ;Expire 86400 );Minimum ;;;; NS and MX servers IN NS yari.bigforest.hn.org. IN MX 10 yari.bigforest.hn.org. ;;;; A RR of NS and MX yari.bigforest.hn.org. IN A 192.168.1.1 www IN CNAME yari.bigforest.hn.org. mail IN CNAME yari.bigforest.hn.org. dns IN CNAME yari.bigforest.hn.org. dhcp IN CNAME yari.bigforest.hn.org. |
@は、named.confで示したzone "この部分"{ に入っていたものが そのまま表される。
逆引きゾーンの設定をする。
; $Id:$ ; file: 192.168.1.0.rev $TTL 86400 @ IN SOA yari.bigforest.hn.org. root.bigforest.hn.org. ( 2001081200 ;Serial 10800 ;Refresh 1800 ;Retry 4320000 ;Expire 86400 );Minimum ;;;; DNS Server IN NS yari.bigforest.hn.org. ;;;; PTR of hosts in 1 IN PTR yari.bigforet.hn.org. |
| 動作確認 |
○ nslookupを使って動作の確認をする。
$ nslookup yari.bigforest.hn.org Server: 192.168.1.1 Address: 192.168.1.1#53 Name: yari.bigforest.hn.org Address: 192.168.1.1 $ nslookup 192.168.1.1 Server: 192.168.1.1 Address: 192.168.1.1#53 1.1.168.192.in-addr.arpa name = yari.bigforet.hn.org.
以上のようにローカル内の名前参照ができればOKである。
(注)上記はbind-9.1.0での結果である。bind-8.x.xでは微妙に表示が変わる。
○ hostを使って確認する。
最近、nslookupを立ち上げると、
$ 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. >
どうやら、将来的には、nslookupはなくすかもしれないから digやhostというコマンドを使えということらしい。 そこで、hostを使ってみる。(digも使ってみましたが、 逆引きのやり方分からなかったのと、 いろいろ表示がされるのでhostを使ってみる)
$ host www.yahoo.co.jp www.yahoo.co.jp. has address 210.81.153.68 www.yahoo.co.jp. has address 210.81.153.69 www.yahoo.co.jp. has address 210.81.153.70 www.yahoo.co.jp. has address 210.152.236.111 www.yahoo.co.jp. has address 210.152.236.112 www.yahoo.co.jp. has address 210.152.236.113 www.yahoo.co.jp. has address 211.14.13.65 www.yahoo.co.jp. has address 211.14.13.66 www.yahoo.co.jp. has address 210.81.150.166
逆引きはそのまま、IPアドレスを打ち込めば良い。
$ host 210.81.150.166 166.150.81.210.in-addr.arpa. domain name pointer w14.yahoo.co.jp.
といった感じ表示される。使い勝手もnslookupとあまり変わらない。 -vオプションを付ければ、詳細に表示も行ってくれる。
$ host -v www.yahoo.co.jp Trying "www.yahoo.co.jp." ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34710 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.yahoo.co.jp. IN A ;; ANSWER SECTION: www.yahoo.co.jp. 179 IN A 210.81.150.166 www.yahoo.co.jp. 179 IN A 210.81.153.68 www.yahoo.co.jp. 179 IN A 210.81.153.69 www.yahoo.co.jp. 179 IN A 210.81.153.70 www.yahoo.co.jp. 179 IN A 210.152.236.111 www.yahoo.co.jp. 179 IN A 210.152.236.112 www.yahoo.co.jp. 179 IN A 210.152.236.113 www.yahoo.co.jp. 179 IN A 211.14.13.65 www.yahoo.co.jp. 179 IN A 211.14.13.66 ;; AUTHORITY SECTION: yahoo.co.jp. 779 IN NS dnsn201.yahoo.co.jp. yahoo.co.jp. 779 IN NS dnsg01.yahoo.co.jp. ;; ADDITIONAL SECTION: dnsg01.yahoo.co.jp. 779 IN A 211.14.12.10 dnsn201.yahoo.co.jp. 779 IN A 202.229.198.120 Received 252 bytes from 192.168.1.1#53 in 63 ms $ host -v 210.81.150.166 Trying "166.150.81.210.in-addr.arpa." ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55840 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4 ;; QUESTION SECTION: ;166.150.81.210.in-addr.arpa. IN PTR ;; ANSWER SECTION: 166.150.81.210.in-addr.arpa. 719 IN PTR w14.yahoo.co.jp. ;; AUTHORITY SECTION: 150.81.210.in-addr.arpa. 719 IN NS dnsu01.yahoo.co.jp. 150.81.210.in-addr.arpa. 719 IN NS auth100.ns.uu.net. 150.81.210.in-addr.arpa. 719 IN NS auth320.ns.uu.net. 150.81.210.in-addr.arpa. 719 IN NS dnsn201.yahoo.co.jp. ;; ADDITIONAL SECTION: dnsu01.yahoo.co.jp. 867 IN A 210.81.153.11 auth100.ns.uu.net. 1299 IN A 198.6.1.202 auth320.ns.uu.net. 1525 IN A 210.80.58.98 dnsn201.yahoo.co.jp. 867 IN A 202.229.198.120 Received 234 bytes from 192.168.1.1#53 in 23 ms
ローカルのnameサーバ(192.168.1.1#53)が答えているのは、 前回の問い合わせ結果がcacheされているからである。
| logの出力場所 |
logは、/var/log/messages(ディストリビューションによって違うかも)に 出力されている。 その中のnamed[xxxx]と書いてある行がそうである。