BIND9 DNSゾーンサーバ構築(目次)


Table of Contents

はじめに

BINDによるDNSゾーンサーバの構築手順です。
DNSキャッシュサーバの構築手順については下記を参照して下さい。

インストール環境

  • OS
    • CentOS 5.5 (kernel 2.6.18-194.3.1.el5)
  • パッケージ
    • bind-9.3.6-4.P1.el5_4.2

パッケージのインストール

  • bind 本体のインストール
    # yum install bind bind-chroot
  • 必要な設定ファイルをコピーします。
    # cd /usr/share/doc/bind-9.3.6/sample/
    # cp -rp etc /var/named/chroot/etc
    # cp -rp var/named/local* /var/named/chroot/var/named
    # cp -rp var/named/named* /var/named/chroot/var/named
    
  • コピーした設定ファイルの権限を変更します。
    # chown -R root:named /var/named/chroot

設定

chrootの設定

第三者に権限が奪取された場合を想定してchrootを導入します。
chrootはnamedプロセスにおけるルートディレクトリを変更する事で、 権限が奪取された場合に上位階層のファイルへアクセス出来ないようにします。

ルートディレクトリの設定

  • 「/etc/sysconfig/named」でルートディレクトリを設定します。
    #vi /etc/sysconfig/named
    
    ROOTDIR=/var/named/chroot
    これで権限が奪取されたとしても「/var/named/chroot」より上の階層にアクセスできません。

named.confの編集

  • 設定ファイル「/var/named/chroot/etc/named.conf」を編集します。
    # 動作全般に関する設定
    options
    {
        # バージョンを隠す設定
        version "unknown";
    
        # 設定ファイルのディレクトリ (デフォルト)
        # 下記設定の場合、chrootにより /var/named/chroot/var/named が設定される
        directory "/var/named";
    
        # キャッシュの内容を保存するファイル(rndcで利用)
        dump-file       "data/cache_dump.db";  
    
        # 名前解決の回数などの統計データを保存するファイル(rndcで利用)
        statistics-file     "data/named_stats.txt";
    
        # サーバ終了時にメモリ使用統計について出力するファイルのパス名(rndcで利用)
        memstatistics-file  "data/named_mem_stats.txt";
    };
    
    # ログに関する設定(デフォルト)
    logging
    {
            //デバック時のログ出力先 (主にrndc trace コマンドで利用)
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    # 内部向けDNSの設定
    view "internal"
    {
        match-clients       { 192.168.11.0/24; };
        match-destinations  { 192.168.11.0/24; };
        recursion yes;
        include "/etc/named.root.hints";
        include "/etc/named.rfc1912.zones";
    
        zone "oss-d.net" {
            type master;
            file "oss-d.net.in_zone";
        };
    
        zone "11.168.192.in-addr.arpa" IN { 
            type master;
            file "11.168.192.in-addr.arpa.in_zone"; 
        };
    };
    
    #rndcによるアクセス許可の設定
    controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
    };
    
    #rndcで利用する暗号鍵の指定
    include "/etc/rndc.key";
    
    # 外部向けDNSの設定
    view    "external"
    {
        match-clients       { any; };
        match-destinations  { any; };
        recursion no;
        allow-query-cache { none; };
        include "/etc/named.root.hints";
        include "/etc/named.rfc1912.zones";
    
        zone "oss-d.net" {
            type master;
            file "oss-d.net.ex_zone";
        };
    
        zone "0.0.10.in-addr.arpa" IN { 
            type master;
            file "0.0.10.in-addr.arpa.ex_zone"; 
        };
    };
    

rndcの設定

named.confの編集

  • 設定ファイル「/var/named/chroot/etc/named.conf」へ下記を追加します。
    #rndcによるアクセス許可設定
    controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
    };
    include "/etc/rndc.key";

rndc.keyの編集

  • TSIG認証用の鍵を生成
    # /usr/sbin/dns-keygen
    I4S67zB1IQpAu6SGRO8bSoW6Mpju6Klv2zZLHaKMGYtQKbYeAP9ql40hEKCl

  • rndc.keyの設定
    # vi /var/named/chroot/etc/rndc.key
    key "rndckey" {
        algorithm       hmac-md5;
        secret          "I4S67zB1IQpAu6SGRO8bSoW6Mpju6Klv2zZLHaKMGYtQKbYeAP9ql40hEKCl";
    };

rndc.confの編集

  • 「/var/named/chroot/etc/rndc.conf」の設定
    key "rndckey" {
        algorithm       hmac-md5;
        secret          "I4S67zB1IQpAu6SGRO8bSoW6Mpju6Klv2zZLHaKMGYtQKbYeAP9ql40hEKCl";
    };

内部向けゾーンファイルの設定

正引きの設定

  • 内部向けの正引きゾーンファイルを設定します。
    # vi /var/named/chroot/var/named/oss-d.net.in_zone
    
    $TTL    86400
    @    IN    SOA   dns.oss-d.net. root.oss-d.net.  (
                    2010060601    ; Serial
                    3H            ; Refresh
                    15M           ; Retry
                    1W            ; Expire
                    1D )          ; Minimum
    ;
             IN    NS     dns.oss-d.net.
             IN    MX 10  mx.oss-d.net.
    ;
    mx       IN    A      192.168.11.10
    dns      IN    A      192.168.11.100
    www      IN    CNAME  dns
    internal IN    A      192.168.11.200

逆引きの設定

  • 内部向けの逆引きゾーンファイルを設定します。
    # vi /var/named/chroot/var/named/11.168.192.in-addr.arpa.in_zone
    
    $TTL    86400
    @    IN    SOA   dns.oss-d.net. root.oss-d.net.  (
                    2010060601    ; Serial
                    3H            ; Refresh
                    15M           ; Retry
                    1W            ; Expire
                    1D )          ; Minimum
    ;
             IN    NS     dns.oss-d.net.
    ;
    10       IN    PTR    mx.oss-d.net.
    100      IN    PTR    dns.oss-d.net.
    200      IN    PTR    internal.oss-d.net.

外部向けゾーンファイルの設定

正引きの設定

  • 外部向け正引きゾーンファイルを設定します。
    # vi /var/named/chroot/var/named/oss-d.net.ex_zone
    
    $TTL    86400
    @    IN    SOA   dns.oss-d.net. root.oss-d.net.  (
                    2010060601    ; Serial
                    3H            ; Refresh
                    15M           ; Retry
                    1W            ; Expire
                    1D )          ; Minimum
    ;
             IN    NS     dns.oss-d.net.
             IN    MX 10  mx.oss-d.net.
    ;
    mx       IN    A      10.0.0.10
    dns      IN    A      10.0.0.100
    www      IN    CNAME  dns
    external IN    A      10.0.0.201
    

逆引きの設定

  • 外部向け逆引きゾーンファイルを設定します。
    # vi /var/named/chroot/var/named/0.0.10.in-addr.arpa.ex_zone
    
    $TTL    86400
    @    IN    SOA   dns.oss-d.net. root.oss-d.net.  (
                    2010060601    ; Serial
                    3H            ; Refresh
                    15M           ; Retry
                    1W            ; Expire
                    1D )          ; Minimum
    ;
             IN    NS     dns.oss-d.net.
    ;
    10       IN    PTR    mx.oss-d.net.
    100      IN    PTR    dns.oss-d.net.
    201      IN    PTR    external.oss-d.net.

リゾルバの設定

  • リゾルバを設定します
    # vi /etc/resolv.conf
    
    nameserver 127.0.0.1

起動・自動起動

自動起動の設定

  • chkconfigコマンドで自動起動をONにします
    # chkconfig named on

  • chkconfigコマンドで自動起動の確認をします。 LUNレベル3,4,5がonになっていれば問題ありません。
    # chkconfig --list named 
    named           0:off   1:off   2:on    3:on    4:on    5:on    6:off

起動

  • BIND を起動します。
    # /etc/init.d/named start

  • psコマンドで起動の確認を行います。
    # ps ax |grep named 
    4711 ?        Ssl    0:00 /usr/sbin/named -u named -t /var/named/chroot

動作確認

rndcの確認

  • rndcの動作確認を行います
    # rndc status
    number of zones: 16
    debug level: 0
    xfers running: 0
    xfers deferred: 0
    soa queries in progress: 0
    query logging is OFF
    recursive clients: 0/1000
    tcp clients: 0/100
    server is up and running

内部向け設定の確認

  • 正引きを確認します。(192系のIPアドレスで回答されます)
    # nslookup dns.oss-d.net 192.168.11.100
    Server:         192.168.11.100
    Address:        192.168.11.100#53
    
    Name:   dns.oss-d.net
    Address: 192.168.11.100
  • 逆引きを確認します。
    # nslookup 192.168.11.100 192.168.11.100
    Server:         192.168.11.100
    Address:        192.168.11.100#53
    
    100.11.168.192.in-addr.arpa     name = dns.oss-d.net.

外部向け設定の確認

外向けの設定はDNSサーバを127.0.0.1に設定して確認します。

  • 正引きを確認します。(10系のIPアドレスで回答されます)
    # nslookup dns.oss-d.net 127.0.0.1
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Name:   dns.oss-d.net
    Address: 10.0.0.100
  • 逆引きを確認します。
    # nslookup 10.0.0.100 127.0.0.1
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    100.0.0.10.in-addr.arpa name = dns.oss-d.net.

各種コマンド

dig

  • 正引き(@のDNSサーバは省略可)
    # dig @localhost example.com 

  • 逆引き(@のDNSサーバは省略可)
    # dig @localhost -x 192.168.11.101

  • MXレコードの確認
    # dig @localhost example.com mx


rndc

  • namedサービスをただちに停止します。
    # rndc halt 

  • このネームサーバーに送られたクエリの すべてをログします。
    # rndc querylog

  • ネームサーバーのデータベースをリフレッシュします。
    # rndc refresh

  • ゾーンファイルをリロードしますが、以前にキャッシュされた 他の回答を全て保存します。このコマンドを使用すると、すべての保存された解決を消失することなく ゾーンファイルの変更が出来ます。
    もし、変更が特定のゾーンのみに影響する場合、reloadコマンドの後に そのゾーン名を付加することで1つのゾーンだけをリロードします。
    # rndc reload
  • 現在のnamed統計を /var/named/named.statsファイルにダンプします。
    # rndc stats

  • サーバーを安全に停止し、終了前に動的な更新やIXFR (Incremental Zone ransfers)データを保存します。
    # rndc stop 

  • DNSサーバのキャッシュ情報をクリアする
    # rndc flush 

このエントリーをはてなブックマークに追加
Last-modified: 2010-09-24 (金) 10:29:30   最終更新のRSS