DNSスレーブサーバ構築(目次)


Table of Contents

↑

はじめに

BIND 9.7によるDNSスレーブサーバの構築手順です。
OSはCentOS 6.2を利用します。

↑

環境

↑

マスタサーバ

  • ホスト名(IP)
    • serv100(192.168.11.100)
  • OS
    • CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
  • パッケージ
    • bind-9.7.3-8.P3.el6_2.2
↑

スレーブサーバ

  • ホスト名(IP)
    • serv101(192.168.11.101)
  • OS
    • CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
  • パッケージ
    • bind-9.7.3-8.P3.el6_2.2
↑

  • named.confに下記を追加します。
    options{    # ゾーン情報の転送を許可するセカンダリDNS    allow-transfer { 192.168.11.101; };    # NSレコードおよび、also-notifyに対して変更通知を送る    notify yes;    # NSレコード以外で変更通知を送るサーバ    also-notify { 192.168.11.101; };};
↑

スレーブサーバの設定(192.168.11.101)

↑

インストール

  • bind 本体のインストール
    # yum install bind bind-chroot

  • 必要な設定ファイルをコピーします。
    # cd /usr/share/doc/bind-9.7.3/sample/# cp -rp etc/* /var/named/chroot/etc# cp -rp var/named/named* /var/named/chroot/var/named

  • コピーした設定ファイルの権限を変更します。
    # chown -R root:named /var/named/chroot
↑

chrootの設定

chrootについて

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

↑

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

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

named.confの編集

  • 設定ファイル「/var/named/chroot/etc/named.conf」を編集します。
    # vi /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
                            "
                            ;    
                            # サービスのListenポートとIP
                            
                            listen
                            -
                            on
                            
                            port
                            
                            53
                            
                            {
                            
                            any
                            ; 
                            }
                            ;    
                            listen
                            -
                            on
                            -
                            v6
                            
                            port
                            
                            53
                            
                            {
                             ::
                            1
                            ; 
                            }
                            ;    
                            # 問い合わせ元をローカルホストとローカルネットワークに限定します
                            
                            allow
                            -
                            qu
                            ery             { localhost; 192.168.11.0/24; };    # キャッシュを応答する先をローカルホストとローカルネットワークに限定します    allow-q
                            u
                            ery
                            -
                            cache
                            
                            {
                            
                            localhost
                            ; 
                            192.168
                            .11
                            .0
                            /
                            24
                            ; 
                            }
                            ;    
                            # 再帰問い合わせの設定(viewで再定義します)
                            
                            recursion
                            
                            yes
                            ;    
                            # DNSSECは無効にします。(後で有効にします)
                            
                            dnssec
                            -
                            enable
                            
                            no
                            ;    
                            dnssec
                            -
                            validation
                            
                            no
                            ;    
                            dnssec
                            -
                            lookaside
                            
                            auto
                            ;  
                            }
                            ;
                            # ログ設定(デフォルト)
                            
                            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
                            ;    
                            #ルートゾーンの設定
                            
                            zone
                            
                            "
                            .
                            "
                            
                            IN
                            
                            {
                            
                            type
                            
                            hint
                            ;            
                            file
                            
                            "
                            /var/named/named.ca
                            "
                            ;    
                            }
                            ;    
                            #ローカルホストに名前解決に関する設定
                            
                            include
                            
                            "
                            /etc/named.rfc1912.zones
                            "
                            ;    
                            #正引きの設定
                            
                            zone
                            
                            "
                            oss-d.net
                            "
                            
                            {
                            
                            type
                            
                            slave
                            ;                           
                            # tyepをslaveに設定
                            
                            masters
                            
                            {
                            
                            192.168
                            .11
                            .100
                            ; 
                            }
                            ;          
                            # マスタサーバのIPを設定
                            
                            file
                            
                            "
                            slaves/oss-d.net.in_zone
                            "
                            ;    
                            }
                            ;    
                            #逆引きの設定
                            
                            zone
                            
                            "
                            11.168.192.in-addr.arpa
                            "
                            
                            IN
                            
                            {
                            
                            type
                            
                            slave
                            ;                           
                            # tyepをslaveに設定
                            
                            masters
                            
                            {
                            
                            192.168
                            .11
                            .100
                            ; 
                            }
                            ;          
                            # マスタサーバのIPを設定
                            
                            file
                            
                            "
                            slaves/11.168.192.in-addr.arpa.in_zone
                            "
                            ;    
                            }
                            ;
                            }
                            ;
                          
  • 統計情報やログの出力先となるフォルダを作成します。フォルダ所有者はnamedに変更します。
    # mkdir /var/named/chroot/var/named/dynamic# mkdir /var/named/chroot/var/named/data# mkdir /var/named/chroot/var/named/slaves# chown named:named /var/named/chroot/var/named/dynamic# chown named:named /var/named/chroot/var/named/data# chown named:named /var/named/chroot/var/named/slaves
↑

SElinuxの設定

  • 「/var/named/chroot/var/named」配下はnamedで書き込みできないため、
    書き込み可能にするようSELinuxの設定を変更します

  • SElinuxのパラメータを確認します。
    # getsebool -a|grep namednamed_write_master_zones --> off
  • SElinuxのパラメータを変更します。
    # setsebool -P named_write_master_zones 1
↑

起動・自動起動

自動起動の設定

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

  • chkconfigコマンドで自動起動の確認をします。LUNレベル3,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


↑

ゾーンファイルの確認

  • 起動時にマスタサーバからゾーン情報が転送されてきます。
    # ls /var/named/chroot/var/named/slaves11.168.192.in-addr.arpa.in_zone  oss-d.net.in_zone
↑

動作確認

↑

ゾーン転送の確認

↑

マスタ側での設定変更

  • マスタサーバでゾーンファイルを変更します。
    変更時はシリアルを必ず増加させます。(シリアル増加時にゾーン転送が実施されるため)
    [root@serv100 ~]# vi /var/named/chroot/var/named/oss-d.net.in_zone
    $TTL    86400@    IN    SOA   dns.oss-d.net. root.oss-d.net.  (                2012050102    ; Serial          ;←シリアルを増やす                3H            ; Refresh                15M           ; Retry                1W            ; Expire                1D )          ; Minimum;           IN    NS     dns.oss-d.net.           IN    NS     dns-slave.oss-d.net.           IN    MX 10  mx.oss-d.net.;mx         IN    A      192.168.11.10dns        IN    A      192.168.11.100dns-slave  IN    A      192.168.11.101internal   IN    A      192.168.11.201          ;←IPを変更
↑

スレーブ側での確認

  • スレーブ側でゾーン転送の確認を行い、マスタの変更が反映されている事を確認します。
    [root@serv100 ~]# cat /var/named/chroot/var/named/slaves/oss-d.net.in_zone
    $TTL    86400@    IN    SOA   dns.oss-d.net. root.oss-d.net.  (                2012050102    ; Serial          ;←シリアルが増えている                3H            ; Refresh                15M           ; Retry                1W            ; Expire                1D )          ; Minimum;           IN    NS     dns.oss-d.net.           IN    NS     dns-slave.oss-d.net.           IN    MX 10  mx.oss-d.net.;mx         IN    A      192.168.11.10dns        IN    A      192.168.11.100dns-slave  IN    A      192.168.11.101internal   IN    A      192.168.11.201          ;←IPが変更されている
↑

内部向け設定の確認

スレーブサーバで名前解決の確認を行います。

  • 正引きを確認します。(192系のIPアドレスで回答されます)
  • 逆引きを確認します。
    # nslookup 192.168.11.100 192.168.11.101Server:         192.168.11.101Address:        192.168.11.101#53100.11.168.192.in-addr.arpa     name = dns.oss-d.net.
  • 再帰問い合わせの確認(内部向けは再帰問い合わせ可能です)
    # nslookup exsample.com 192.168.11.101Server:         192.168.11.101Address:        192.168.11.101#53Non-authoritative answer:Name:   exsample.comAddress: 69.43.160.151
↑

rndcの設定

  • rndcを設定して、BINDをリモートから制御可能にします。
↑

DNSSECの設定

  • DNSキャッシュポイズニング対策としてDNSSECを導入します。
↑

各種コマンド

dig

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

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

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

  • 設定ファイルの内容確認
    # named-checkconf -p -t /var/named/chroot

このエントリーをはてなブックマークに追加
Last-modified: 2012-05-02 (水) 19:19:22   最終更新のRSS