内部向けDNSサーバー構築(BIND)

最終更新日: 2008.08.24

<<トップページ <<新着情報 <<質問BBS <<逆引き集 <<アンケート <<リンク集 <<サイト内検索 <<ダウンロード <<管理人へメール <<CentOSで自宅サーバー構築 <<新着情報 <<質問BBS <<逆引き集 <<アンケート <<リンク集 <<サイト内検索 <<ダウンロード <<管理人へメール <<CentOSで自宅サーバー構築 <<新着情報 <<質問BBS <<逆引き集 <<アンケート <<リンク集 <<サイト内検索 <<ダウンロード <<管理人へメール <<CentOSで自宅サーバー構築

■概要

DNSサーバー(BIND)はfedorasrv.comというドメイン名からIPアドレスを返したり、IPアドレスからドメイン名を返すサーバー。
ここでは、内部でサーバーにアクセスするときにIPアドレスではなく、fedorasrv.comでアクセスできるようにする。

※fedorasrv.com及び、IPアドレスは当サイトの例なので、各自で置き換えてください


■BINDインストール

[root@fedora ~]# yum -y install bind bind-chroot caching-nameserver ← bind,bind-chroot, caching-nameserverインストール
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                      100% |=========================| 1.1 kB    00:00
core-source               100% |=========================|  951 B    00:00
extras                    100% |=========================| 1.1 kB    00:00
updates                   100% |=========================| 1.2 kB    00:00
Reading repository metadata in from local files
primary.xml.gz            100% |=========================|  72 kB    00:00
################################################## 196/196
Excluding Packages in global exclude list
Finished
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for bind to pack into transaction set.
bind-9.3.3-4.fc6.i386.rpm 100% |=========================|  46 kB    00:00
---> Package bind.i386 30:9.3.3-4.fc6 set to be updated
---> Downloading header for caching-nameserver to pack into transaction set.
caching-nameserver-9.3.3- 100% |=========================|  38 kB    00:00
---> Package caching-nameserver.i386 30:9.3.3-4.fc6 set to be updated
---> Downloading header for bind-chroot to pack into transaction set.
bind-chroot-9.3.3-4.fc6.i 100% |=========================|  37 kB    00:00
---> Package bind-chroot.i386 30:9.3.3-4.fc6 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 bind                    i386       30:9.3.3-4.fc6   updates           950 k
 bind-chroot             i386       30:9.3.3-4.fc6   updates            38 k
 caching-nameserver      i386       30:9.3.3-4.fc6   updates            54 k

Transaction Summary
=============================================================================
Install      3 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 1.0 M
Downloading Packages:
(1/3): bind-9.3.3-4.fc6.i 100% |=========================| 950 kB    00:01
(2/3): caching-nameserver 100% |=========================|  54 kB    00:00
(3/3): bind-chroot-9.3.3- 100% |=========================|  38 kB    00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: bind                         ######################### [1/3]
  Installing: caching-nameserver           ######################### [2/3]
  Installing: bind-chroot                  ######################### [3/3]

Installed: bind.i386 30:9.3.3-4.fc6 bind-chroot.i386 30:9.3.3-4.fc6 caching-nameserver.i386 30:9.3.3-4.fc6
Complete!

以下はDNSサーバー関連ファイルのchrootディレクトリへのコピー※FC2のみ
[root@fedora ~]# cp /etc/named.conf /var/named/chroot/etc/
cp: `/var/named/chroot/etc/named.conf' を上書きしてもよろしいですか(yes/no)? y

[root@fedora ~]# cp /etc/rndc.conf /var/named/chroot/etc/

[root@fedora ~]# cp /etc/rndc.key /var/named/chroot/etc/
cp: `/var/named/chroot/etc/rndc.key' を上書きしてもよろしいですか(yes/no)? y

[root@fedora ~]# cp /var/named/* /var/named/chroot/var/named/
cp: omitting directory `/var/named/chroot'
cp: omitting directory `/var/named/slaves'

■BIND設定

(1)BIND設定
[root@fedora ~]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
 ← BIND設定ファイルコピー

[root@fedora ~]# vi /var/named/chroot/etc/named.conf ← BIND設定ファイル編集
options {
        #listen-on port 53 { 127.0.0.1; }; ← 行頭に#を追加してコメントアウト
        #listen-on-v6 port 53 { ::1; }; ← 行頭に#を追加してコメントアウト
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source    port 53;
        query-source-v6 port 53;
        allow-query     { localhost; localnets; }; ← 変更(サーバー及び、サーバーと同じネットワーク内のホストからの問合せのみ許可)
        追加(ここから)※
        forwarders{
                192.168.1.1; ← ルーター経由接続環境の場合はルーターのIPアドレスを指定
                XXX.XXX.XXX.XXX; ← PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(プライマリ)のIPアドレスを指定
                XXX.XXX.XXX.XXX; ← PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(セカンダリ)のIPアドレスを指定
        };
        追加(ここまで)
};

view localhost_resolver {
        match-clients      { localhost; };
        match-destinations { localhost; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
        include "/etc/named.fedorasrv.com.zone"; ← 追加
};

最終行へ追加(ここから)
view "internal" {
        match-clients { localnets; };
        match-destinations { localnets; };
        recursion yes;
        include "/etc/named.root.hints";
        include "/etc/named.fedorasrv.com.zone";
};
最終行へ追加(ここまで)

[root@fedora ~]# vi /var/named/chroot/etc/named.root.hints ← ルートゾーン定義ファイル作成
zone "." IN {
        type hint;
        file "named.ca";
};

[root@fedora ~]# vi /var/named/chroot/etc/named.fedorasrv.com.zone ← fedorasrv.comのゾーン定義ファイル作成
zone "fedorasrv.com" {
        type master;
        file "fedorasrv.com.db";
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "1.168.192.in-addr.arpa.db";
};

※forwardersには、このDNSサーバーのキャッシュで名前解決ができなかった場合に問合せにいくDNSサーバー(ルーターまたは、プロバイダから通知されたDNSサーバー)を指定する

(2)ルートゾーン最新化
ルートゾーンは世界に13台しかないトップレベルドメインを管理するDNSサーバーのIPアドレスを管理しているファイルで、めったに更新されることはないが、念のため最新化しておく。
[root@fedora ~]# dig . ns @198.41.0.4 > /var/named/chroot/var/named/named.ca ← ルートゾーン(named.ca)最新化

(3)ルートゾーン自動更新
1ヶ月に一度、ルートゾーンが最新かチェックし、更新されていればルートゾーンの最新化及び、BINDの再起動を自動的に行うようにする。
※ルートゾーンが更新されていた場合のみ、新旧ルートゾーン情報及び、新旧ルートゾーンの差分情報をroot宛にメールする
[root@fedora ~]# vi named.root_update ← ルートゾーン最新化スクリプト作成
#!/bin/bash

new=`mktemp`
errors=`mktemp`

dig . ns @198.41.0.4 > $new 2> $errors

if [ $? -eq 0 ]; then
    sort_new=`mktemp`
    sort_old=`mktemp`
    diff_out=`mktemp`
    sort $new > $sort_new
    sort /var/named/chroot/var/named/named.ca > $sort_old
    diff --ignore-matching-lines=^\; $sort_new $sort_old > $diff_out
    if [ $? -ne 0 ]; then
        (
         echo '-------------------- old named.root --------------------'
         cat /var/named/chroot/var/named/named.ca
         echo
         echo '-------------------- new named.root --------------------'
         cat $new
         echo '---------------------- difference ----------------------'
         cat $diff_out
        ) | mail -s 'named.root updated' root
        cp -f $new /var/named/chroot/var/named/named.ca
        chown named. /var/named/chroot/var/named/named.ca
        chmod 644 /var/named/chroot/var/named/named.ca
        /etc/rc.d/init.d/named restart > /dev/null
    fi
    rm -f $sort_new $sort_old $diff_out
else
    cat $errors | mail -s 'named.root update check error' root
fi
rm -f $new $errors

[root@fedora ~]# chmod 700 named.root_update ← ルートゾーン最新化スクリプトへ実行権限付加

[root@fedora ~]# mv named.root_update /etc/cron.monthly/ ← ルートゾーン最新化スクリプトを毎月自動実行されるディレクトリへ移動

(4)正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成
[root@fedora ~]# vi /var/named/chroot/var/named/fedorasrv.com.db ← 正引きゾーンデータベース作成
$TTL    86400
@       IN      SOA     fedorasrv.com.  root.fedorasrv.com.(
                                      2004031901 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    fedorasrv.com.
        IN MX 10 fedorasrv.com.
@       IN A     192.168.1.1 ← サーバーのプライベートIPアドレスを指定(fedorasrv.com用)
*       IN A     192.168.1.1 ← サーバーのプライベートIPアドレスを指定(*.fedorasrv.com用)

(5)逆引きゾーンデータベース(IPアドレス⇒ドメイン名)作成
[root@fedora ~]# vi /var/named/chroot/var/named/1.168.192.in-addr.arpa.db ← 逆引きゾーンデータベース作成
$TTL    86400
@       IN      SOA     fedorasrv.com.  root.fedorasrv.com.(
                                      2004031901 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS    fedorasrv.com.
2             IN      PTR   fedorasrv.com. ← サーバーIPアドレス最下位部(192.168.1.2)とドメイン名を指定

■BIND起動

[root@fedora ~]# /etc/rc.d/init.d/named start ← BIND起動
namedを起動中:                                             [  OK  ]

[root@fedora ~]# chkconfig named on ← BIND自動起動設定

[root@fedora ~]# chkconfig --list named ← BIND自動起動設定確認
named           0:off   1:off   2:on    3:on    4:on    5:on    6:off ← ランレベル2〜5のonを確認

■問合せ先DNSサーバーをLinuxサーバーに変更(ルーター経由接続環境の場合)

(1)問合せ先DNSサーバーをLinuxサーバーに変更
ルーターのDHCP設定でDNSサーバーのIPアドレスをLinuxサーバーのIPアドレスに変更する

(2)問合せ先DNSサーバー変更反映
Linuxサーバー⇒クライアントの順に再起動し、問合せ先DNSサーバーの変更を反映させる

■問合せ先DNSサーバーをLinuxサーバーに変更(PPPoE接続環境の場合)

(1)サーバー自身の問合せ先DNSサーバーを自分自身に変更
[root@fedora ~]# echo "nameserver 127.0.0.1" > /etc/resolv.conf ← Linuxサーバー自身を問合せ先DNSサーバーとする

(2)クライアント側の問合せ先DNSサーバーをLinuxサーバーに変更
DHCPサーバー構築済であること
[root@fedora ~]# vi /etc/dhcpd.conf ← DHCPサーバー設定ファイル編集
        option domain-name-servers      192.168.1.2; ← クライアントに通知するDNSサーバーをLinuxサーバーにする

[root@fedora ~]# /etc/rc.d/init.d/dhcpd restart ← DHCPサーバー再起動
dhcpd を停止中:                                            [  OK  ]
dhcpd を起動中:                                            [  OK  ]

(3)クライアント側の問合せ先DNSサーバー変更反映
クライアントを再起動し、問合せ先DNSサーバーの変更を反映させる

■BIND確認

(1)BIND確認(クライアントがWindowsの場合)
C:>nslookup ← nslookup起動
Default Server:  fedorasrv.com
Address:  192.168.1.2

> fedorasrv.com ← Linuxサーバーの正引きテスト
Server:  fedorasrv.com
Address:  192.168.1.2

Name:    fedorasrv.com
Address:  192.168.1.2 ← IPアドレスが返ってきた

> 192.168.1.2 ← Linuxサーバーの逆引きテスト
Server:  fedorasrv.com
Address:  192.168.1.2

Name:    fedorasrv.com ← ドメイン名が返ってきた
Address:  192.168.1.2

> www.linux.or.jp ← 外部ドメインの正引きテスト
Server:  fedorasrv.com
Address:  192.168.1.2

Non-authoritative answer:
Name:    mizuho.linux.or.jp
Address:  210.171.226.47 ← IPアドレスが返ってきた
Aliases:  www.linux.or.jp

> 210.171.226.47 ← 外部ドメインの逆引きテスト
Server:  fedorasrv.com
Address:  192.168.1.2

Name:    mizuho.linux.or.jp ← ドメイン名が返ってきた
Address:  210.171.226.47

> exit ← nslookup停止

C:>

(2)BIND確認(クライアントがLinuxの場合)
[root@fedora ~]# dig fedorasrv.com ← Linuxサーバーの正引きテスト

; <<>> DiG 9.2.3 <<>> fedorasrv.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59712
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;fedorasrv.com.               IN      A

;; ANSWER SECTION:
fedorasrv.com.        86400   IN      A       192.168.1.2 ← IPアドレスが返ってきた

;; AUTHORITY SECTION:
fedorasrv.com.        86400   IN      NS      fedorasrv.com.

;; Query time: 8 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Oct  4 17:39:31 2004
;; MSG SIZE  rcvd: 63

[root@fedora ~]# dig -x 192.168.1.2 ← Linuxサーバーの逆引きテスト

; <<>> DiG 9.2.3 <<>> -x 192.168.1.2
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14938
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.1.168.192.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
1.1.168.192.in-addr.arpa. 86400 IN      PTR     fedorasrv.com. ← ドメイン名が返ってきた

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN      NS      fedorasrv.com.

;; ADDITIONAL SECTION:
fedorasrv.com.        86400   IN      A       192.168.1.2

;; Query time: 8 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Oct  4 17:39:39 2004
;; MSG SIZE  rcvd: 101

[root@fedora ~]# dig www.linux.or.jp ← 外部ドメインの正引きテスト

; <<>> DiG 9.2.3 <<>> www.linux.or.jp
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50380
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 0

;; QUESTION SECTION:
;www.linux.or.jp.               IN      A

;; ANSWER SECTION:
www.linux.or.jp.        78406   IN      CNAME   mizuho.linux.or.jp.
mizuho.linux.or.jp.     36827   IN      A       210.171.226.47 ← IPアドレスが返ってきた

;; AUTHORITY SECTION:
jp.                     41652   IN      NS      E.DNS.jp.
jp.                     41652   IN      NS      F.DNS.jp.
jp.                     41652   IN      NS      A.DNS.jp.
jp.                     41652   IN      NS      B.DNS.jp.
jp.                     41652   IN      NS      C.DNS.jp.
jp.                     41652   IN      NS      D.DNS.jp.

;; Query time: 13 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Thu Oct  7 14:43:58 2004
;; MSG SIZE  rcvd: 170

[root@fedora ~]# dig -x 210.171.226.47 ← 外部ドメインの逆引きテスト

; <<>> DiG 9.2.3 <<>> -x 210.171.226.47
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47908
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 7

;; QUESTION SECTION:
;47.226.171.210.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
47.226.171.210.in-addr.arpa. 3462 IN    PTR     mizuho.linux.or.jp. ← ドメイン名が返ってきた

;; AUTHORITY SECTION:
210.in-addr.arpa.       33382   IN      NS      NS3.APNIC.NET.
210.in-addr.arpa.       33382   IN      NS      NS4.APNIC.NET.
210.in-addr.arpa.       33382   IN      NS      DNS1.TELSTRA.NET.
210.in-addr.arpa.       33382   IN      NS      TINNIE.ARIN.NET.
210.in-addr.arpa.       33382   IN      NS      NS.RIPE.NET.
210.in-addr.arpa.       33382   IN      NS      NS1.APNIC.NET.

;; ADDITIONAL SECTION:
NS1.APNIC.NET.          599     IN      A       202.12.29.25
NS1.APNIC.NET.          3462    IN      AAAA    2001:dc0:2001:0:4608::25
NS3.APNIC.NET.          1064    IN      A       202.12.28.131
NS3.APNIC.NET.          3462    IN      AAAA    2001:dc0:1:0:4777::131
NS4.APNIC.NET.          2938    IN      A       202.12.31.140
DNS1.TELSTRA.NET.       40038   IN      A       203.50.5.200
TINNIE.ARIN.NET.        62039   IN      A       69.25.34.195

;; Query time: 12 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Thu Oct  7 14:44:27 2004
;; MSG SIZE  rcvd: 351



▲このページのトップへ戻る

LPIロゴ Copyright© 2004-2008 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします