DNSサーバー(BIND)の構築 合計:
昨日:
今日:
更新日:2008/7/21
<<ホームへ戻る


DNSサーバーは、ホスト名とIPアドレスの関連づけを定義する「A(Address)レコード」、特定のホスト名を別のドメイン名に転送できる「CNAMEレコード」、メールの配送先となるホスト名を定義する「MXレコード」、ゾーン情報を管理するネームサーバのサーバ名を定義する「NSレコード」、ホスト名に関連付けるテキスト情報を定義する「TXTレコード」を設定するものです。当サーバーでは、基本的に市販のルーターを使用していますので、それに関連することを記していきたいと思います。
当サーバーの場合は、固定IPを取得しているため,そのことを念頭に置いて設定していきます。
◆BINDのインストール <<TOP
[root@server ~]# yum -y install bind bind-chroot caching-nameserver
        ↑ bindに関係するパッケージをインストールする
◆BINDの設定 <<TOP

 

[root@server ~]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
         ↑ BIND設定ファイルのコピー
[root@server ~]# chgrp named /var/named/chroot/etc/named.conf
         ↑ BIND設定ファイル所有グループ変更
[root@server ~]# vi /var/named/chroot/etc/named.conf ← BIND設定ファイルの変更
        #listen-on port 53 { 127.0.0.1; }; ← コメントアウト
        #listen-on-v6 port 53 { ::1; };   ← コメントアウト
        version "unknown";  ← 追加 BINDバージョン情報の非表示
        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;
    //bindを使用する範囲を指定する 
       allow-query     { localhost; localnets; };
                  ↑ 変更追加 サーバーと同じローカルネットワークのみアクセス許可
  ここから ↓
    //このDNSサーバーで名前の解決ができなかった場合外部のネームサーバーに
    //問い合わせを転送する
    forwarders{
                192.168.11.1;   ← ルータ経由の場合は,ルーターのアドレスを指定
                #XXX.XXX.XXX.XXX; ← PPOEのDNSアドレス(プライマリ)
                #XXX.XXX.XXX.XXX; ← PPOEのDNSアドレス(セカンダリ)
		};
  ↑ ここまで追加


};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {
        match-clients      { localhost; };
        match-destinations { localhost; };
        recursion yes; #キャッシュ有効化
        include "/etc/named.rfc1912.zones";
        include "/etc/named.arisonsvr.org.zone"; ← 追加 サーバ自身も自ネットワークを参照できるように設定
};

↓ 追加 内部向け(ここから)
view "internal" {
        match-clients { localnets; };
        match-destinations { localnets; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
        include "/etc/named.arisonsvr.org.zone";
};
↑ (ここまで)

↓ 追加 外部向け(ここから)
view "external" {
        match-clients { any; };
        match-destinations { any; };
        recursion no; #キャッシュ無効化
        include "/etc/named.arisonsvr.org.zone.wan";
};
↑ (ここまで)

[root@server ~]# vi /var/named/chroot/etc/named.arisonsvr.org.zone
         ↑ arisonsvr.orgの内部向けゾーン定義ファイル作成  
//正引きゾーン(arisonsvr.org)の指定
zone "arisonsvr.org" {
        type master;
        file "arisonsvr.org.db";
};

//逆引きゾーン(192.168.11.0/24)の指定
zone "11.168.192.in-addr.arpa" {
        type master;
        file "11.168.192.in-addr.arpa.db";
};

[root@server ~]# vi /var/named/chroot/etc/named.arisonsvr.org.zone.wan
         ↑ arisonsvr.orgの外部向けゾーン定義ファイルの作成
zone "arisonsvr.org" {
        type master;
        file "arisonsvr.org.db.wan";
        allow-query { any; };
};

 

◆ルートゾーンの最新化 <<TOP

@、ルートゾーンを最新化しておく。

[root@server ~]# dig . ns @198.41.0.4 > /var/named/chroot/var/named/named.ca
		
		
		
		

 

A、ルートゾーン最新化の自動更新 CentOSで自宅サーバー構築様のスクリプトを使用させてもらっています。

[root@server ~]# 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@server ~]# chmod 700 named.root_update ← 実行権限の付与
		
[root@server ~]# mv named.root_update /etc/cron.monthly/ ← 月一回実行されるところに移動		

[root@server ~]#
		

 

 
◆内部向け正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成 <<TOP

 

[root@server ~]# vi /var/named/chroot/var/named/arisonsvr.org.db
$TTL    86400
@       IN      SOA     arisonsvr.org.  root.arisonsvr.org.(
                                      2005120201 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    arisonsvr.org.
        IN MX 10 arisonsvr.org.
@       IN A     192.168.11.77       # サーバーのプライベートアドレスを指定
*       IN A     192.168.11.77       #  サーバーのプライベートアドレスを指定		
		
		
		

 

◆内部向け逆引きゾーンデータベース(IPアドレス⇒ドメイン名)作成 <<TOP

 

[root@server ~]# vi /var/named/chroot/var/named/11.168.192.in-addr.arpa.db
$TTL    86400
@       IN      SOA     arisonsvr.org.  root.arisonsvr.org.(
                                      2004031901 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS    arisonsvr.org.
77            IN      PTR   arisonsvr.org.       ;PTRレコードは、IPからホスト名に変換するレコード
↑ サーバーのIPアドレスの最下位部を指定		

 

◆外部向け正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成 <<TOP

 

[root@server ~]# vi /var/named/chroot/var/named/arisonsvr.org.db.wan
$TTL    86400
@       IN      SOA     ns1.arisonsvr.org.  root.arisonsvr.org.(
                                      2006041401 ; Serial
                                      7200       ; Refresh
                                      7200       ; Retry
                                      2419200    ; Expire
                                      86400 )    ; Minimum
        IN NS    ns1.arisonsvr.org.
        IN MX 10 mai.ariosnsvr.org.
ns1     IN A     ***.***.***.***   # 自サーバーの(グローバル)固定IPアドレスを指定
@       IN A     ***.***.***.***      # 自サーバーの(グローバル)固定IPアドレスを指定
www     IN A     ***.***.***.***      # 自サーバーの(グローバル)固定IPアドレスを指定
ftp     IN A     ***.***.***.***      # 自サーバーの(グローバル)固定IPアドレスを指定
mail    IN A     ***.***.***.***      # 自サーバーの(グローバル)固定IPアドレスを指定

なお、ゾーン情報を変更するときは、Serial番号(YYYYMMDD01)を新しいものに変えること。たとえば、2006041401から2006041402のように。.

 

◆BIND起動 <<TOP

 

[root@server ~]# /etc/rc.d/init.d/named start

named を起動中:                                            [  OK  ]		  

[root@server ~]# chkconfig named on

[root@server ~]# chkconfig --list named

named           0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@server ~]#
		  

ルーターのポートUDP53とTCP53を開ける。
ルーターの開け方は、ここを参照。
iptableでも、UDP53とTCP53番を開けるようにする。

 
◆問合せ先DNSサーバーを自サーバーに切り替える <<TOP

@、サーバー自身の問合せ先を自分自身に変更

[root@server ~]# echo "nameserver 127.0.0.1" > /etc/resolv.conf
		  

A、問合せ先DNSサーバーを自サーバーに変更

  ルーターのDHCP設定でDNSサーバーのIPアドレスをLinuxサーバーのIPアドレスに変更する

ルーターの設定

上記にあるDNSサーバーの通知をルーターのアドレスから自サーバーのアドレスに変更する。上記の場合、異なるルーターのためIPアドレスは192.168.1.1になっているが当サーバーの場合は、192.168.11.1である。(稼働中のルーターのため、いじれないため)

B、問合せ先DNSサーバー変更の反映。(この手順を踏まないと正しく変更されない)

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

 
◆BINDの確認 <<TOP
@、クライアントがWindowsの場合。

 

C:\Documents and Settings\arisonstc>nslookup ← nslookup起動
Default Server:  arisonsvr.org
Address:  192.168.11.77		  

> arisonsvr.org ← 自宅サーバーの正引きテスト
Server:  arisonsvr.org
Address:  192.168.11.77

Name:    arisonsvr.org
Address:  192.168.11.77 ← IPアドレスが返ってきた		  

> 192.168.11.77 ← 自宅サーバーの逆引きテスト
Server:  arisonsvr.org
Address:  192.168.11.77

Name:    arisonsvr.org ← ドメイン名が返ってきた
Address:  192.168.11.77

> www.linux.or.jp ← 外部ドメインの正引きテスト
Server:  arisonsvr.org
Address:  192.168.11.77

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

> 210.171.226.47 ← 外部ドメインの逆引きテスト
Server:  arisonsvr.org
Address:  192.168.11.77

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

> exit ← nslookupから出る

C:\Documents and Settings\arisonstc>
		  

 

A、クライアントがLinuxの場合

 

[root@server ~]# dig arisonsvr.org ← 自宅サーバーの正引きテスト

; <<>> DiG 9.4.2 <<>> arisonsvr.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64231
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;arisonsvr.org.                 IN      A

;; ANSWER SECTION:
arisonsvr.org.          86400   IN      A       192.168.11.77 ← IPアドレスが返ってきた

;; AUTHORITY SECTION:
arisonsvr.org.          86400   IN      NS      arisonsvr.org.

;; Query time: 63 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 21 16:08:45 2008
;; MSG SIZE  rcvd: 61

[root@server ~]# dig -x 192.168.11.77 ← 自宅サーバーの逆引きテスト

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

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

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

;; AUTHORITY SECTION:
11.168.192.in-addr.arpa. 86400  IN      NS      arisonsvr.org.

;; ADDITIONAL SECTION:
arisonsvr.org.          86400   IN      A       192.168.11.77

;; Query time: 23 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 21 16:11:16 2008
;; MSG SIZE  rcvd: 101

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

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

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

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

;; AUTHORITY SECTION:
.                       353288  IN      NS      B.ROOT-SERVERS.NET.
.                       353288  IN      NS      C.ROOT-SERVERS.NET.
.                       353288  IN      NS      D.ROOT-SERVERS.NET.
.                       353288  IN      NS      E.ROOT-SERVERS.NET.
.                       353288  IN      NS      F.ROOT-SERVERS.NET.
.                       353288  IN      NS      G.ROOT-SERVERS.NET.
.                       353288  IN      NS      H.ROOT-SERVERS.NET.
.                       353288  IN      NS      I.ROOT-SERVERS.NET.
.                       353288  IN      NS      J.ROOT-SERVERS.NET.
.                       353288  IN      NS      K.ROOT-SERVERS.NET.
.                       353288  IN      NS      L.ROOT-SERVERS.NET.
.                       353288  IN      NS      M.ROOT-SERVERS.NET.
.                       353288  IN      NS      A.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.     363174  IN      A       198.41.0.4
A.ROOT-SERVERS.NET.     359360  IN      AAAA    2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.     528160  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     528160  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     528160  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     528160  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     363174  IN      A       192.5.5.241
F.ROOT-SERVERS.NET.     359360  IN      AAAA    2001:500:2f::f
G.ROOT-SERVERS.NET.     528160  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     528160  IN      A       128.63.2.53
H.ROOT-SERVERS.NET.     528159  IN      AAAA    2001:500:1::803f:235
I.ROOT-SERVERS.NET.     363174  IN      A       192.36.148.17

;; Query time: 48 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 21 16:13:19 2008
;; MSG SIZE  rcvd: 509

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

; <<>> DiG 9.4.2 <<>> -x 210.171.226.47
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63451
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 11

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

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

;; AUTHORITY SECTION:
.                       353153  IN      NS      F.ROOT-SERVERS.NET.
.                       353153  IN      NS      G.ROOT-SERVERS.NET.
.                       353153  IN      NS      H.ROOT-SERVERS.NET.
.                       353153  IN      NS      I.ROOT-SERVERS.NET.
.                       353153  IN      NS      J.ROOT-SERVERS.NET.
.                       353153  IN      NS      K.ROOT-SERVERS.NET.
.                       353153  IN      NS      L.ROOT-SERVERS.NET.
.                       353153  IN      NS      M.ROOT-SERVERS.NET.
.                       353153  IN      NS      A.ROOT-SERVERS.NET.
.                       353153  IN      NS      B.ROOT-SERVERS.NET.
.                       353153  IN      NS      C.ROOT-SERVERS.NET.
.                       353153  IN      NS      D.ROOT-SERVERS.NET.
.                       353153  IN      NS      E.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.     363039  IN      A       198.41.0.4
A.ROOT-SERVERS.NET.     359225  IN      AAAA    2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.     528025  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     528025  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     528025  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     528025  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     363039  IN      A       192.5.5.241
F.ROOT-SERVERS.NET.     359225  IN      AAAA    2001:500:2f::f
G.ROOT-SERVERS.NET.     528025  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     528025  IN      A       128.63.2.53
H.ROOT-SERVERS.NET.     528024  IN      AAAA    2001:500:1::803f:235

;; Query time: 65 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jul 21 16:15:34 2008
;; MSG SIZE  rcvd: 500

[root@server ~]#
		  

 

 
 
◆広告等 <<TOP