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

最終更新日: 2016.12.21

<<トップページ <<新着情報 <<リンク集 <<サイト内検索 <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

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


■BINDインストール

[root@centos ~]# yum -y install bind ← bindインストール

[root@centos ~]# yum -y install caching-nameserver ← caching-nameserverインストール

[root@centos ~]# yum -y install bind-chroot ← bind-chrootインストール

■BIND設定

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

[root@centos ~]# vi /var/named/chroot/etc/named.conf ← DNSサーバー設定ファイル編集
options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
    追加(ここから)
        allow-query{
                    127.0.0.1;
                    192.168.1.0/24; ← このDNSサーバーを使用するのは内部のみ
        };
        allow-recursion{
                    127.0.0.1;
                    192.168.1.0/24; ← このDNSサーバーをキャッシュサーバーとして使用するのは内部のみ
        };
        allow-transfer{
                    127.0.0.1;
                    192.168.1.0/24; ← このDNSサーバーのゾーンデータの転送先は内部のみ
        };
        forwarders{
                    192.168.1.1; ← ルーター経由接続環境の場合はルーターのIPアドレスを指定※
                    XXX.XXX.XXX.XXX; ← PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(プライマリ)のIPアドレスを指定
                    XXX.XXX.XXX.XXX; ← PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(セカンダリ)のIPアドレスを指定
        };
        追加(ここまで)
};

//
// a caching only nameserver config
//
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
追加(ここから)
logging {
        category lame-servers { null; }; ← /var/log/messagesに「lame server resolving …」というログを出力しないようにする
};
追加(ここまで)

include "/etc/rndc.key";

追加(ここから)
zone "centossrv.com" IN {← 正引きゾーンデータベース宣言
        type master;
        file "centossrv.com.db";
        allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {← 逆引きゾーンデータベース宣言
        type master;
        file "1.168.192.in-addr.arpa.db";
        allow-update { none; };
};
追加(ここまで)
※forwardersには、このDNSサーバーで名前解決ができなかった場合に問合せにいくDNSサーバー(ルーターまたは、プロバイダから通知されたDNSサーバー)を指定する

(2)ルートゾーン最新化
ルートゾーンは世界に13台しかないトップレベルドメインを管理するDNSサーバーのIPアドレスを管理しているファイルで、最新化しておく
[root@centos ~]# dig @a.root-servers.net . ns > /var/named/chroot/var/named/named.ca ← ルートゾーン(named.ca)最新化

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

new=`mktemp`
errors=`mktemp`

dig @a.root-servers.net . ns > $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@centos ~]# chmod 700 /etc/cron.monthly/named.root_update ← ルートゾーン最新化スクリプトへ実行権限付加

■正引き(ドメイン名⇒IPアドレス)ゾーンデータベース作成

[root@centos ~]# vi /var/named/chroot/var/named/centossrv.com.db ← 正引きゾーンデータベース作成
$TTL    86400
@       IN      SOA     centossrv.com.  root.centossrv.com.(
                                      2005120201 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    centossrv.com.
        IN MX 10 mail.centossrv.com.
@       IN A     192.168.1.2
www     IN A     192.168.1.2
ftp     IN A     192.168.1.2
mail    IN A     192.168.1.2

■逆引き(IPアドレス⇒ドメイン名)ゾーンデータベース作成

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

■BIND起動

[root@centos ~]# /etc/rc.d/init.d/named start ← DNSサーバー起動
namedを起動中:                                             [  OK  ]

[root@centos ~]# chkconfig named on ← DNSサーバー自動起動設定

[root@centos ~]# chkconfig --list named ← DNSサーバー自動起動設定確認
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サーバーの変更を反映させる

■BIND確認

(1)DNSサーバー確認(Windowsの場合)
C:>nslookup ← nslookup起動
Default Server:  centossrv.com
Address:  192.168.1.2

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

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

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

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

> www.linux.or.jp ← 外部ドメインの正引きテスト
Server:  centossrv.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:  centossrv.com
Address:  192.168.1.2

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

> exit ← nslookup停止

C:>

(2)DNSサーバー確認(Linuxの場合)
[root@centos ~]# dig centossrv.com ← Linuxサーバーの正引きテスト

; <<>> DiG 9.2.3 <<>> centossrv.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:
;centossrv.com.               IN      A

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

;; AUTHORITY SECTION:
centossrv.com.        86400   IN      NS      centossrv.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@centos ~]# 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     centossrv.com. ← ドメイン名が返ってきた

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

;; ADDITIONAL SECTION:
centossrv.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@centos ~]# 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@centos ~]# 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© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします