興味を持ったIT系の勉強内容とたまに日々の話
Amebaでブログを始めよう!
※インストール方法は割愛

◆ユーザとグループの作成
/usr/sbin/groupadd -g 53 named
/usr/sbin/useradd -u 53 -d /var/named -g named  named

◆ディレクトリ作成
  # /var/run/named は named.pid ファイルが入る
mkdir /var/run/named
  # /var/named は各種データファイルファイルが入る (named.conf は
  # /etc/named.conf に作る)
mkdir /var/named
mkdir /var/named/data
chown named:named /var/run/named
chown named:named /var/named
chown named:named /var/named/data

◆正引き
/var/named/data/public.zone, /var/named/data/db.zone は仮に次のよ うに設定。 ドメイン名の末尾の「.」は必要(書き間違いではない)。
cd /var/named/data
vi public.zone
  # 以下のように設定
----------------------------------------------------------------------------
$TTL    86400
@       IN      SOA     dnsmail.mydomain.hoge.com.  root.mydomain.hoge.com.(
                                      2006051601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    xxx.xxx.xxx.com.
        IN MX 10 xxx.xxx.xxx.com.
@       IN A     XXX.YYY.ZZZ.160
dnsmail IN A     XXX.YYY.ZZZ.160
www     IN A     XXX.YYY.ZZZ.167
hohoge  IN A     AAA.BBB.CCC.10
----------------------------------------------------------------------------
cp public.zone db.zone

◆逆引き

/var/named/data/public.rev, /var/named/data/dbrev.rev は仮に次のように設定

cd /var/named/data
vi public.rev
  # 以下のように設定
----------------------------------------------------------------------------
$TTL    86400
@       IN      SOA     dnsmail.mydomain.hoge.com.  root.mydomain.hoge.com.(
                                      2006051601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS    mydomain.hoge.com.
160           IN      PTR   xxx.xxx.xxx.com.
167           IN      PTR   www.xxx.xxx.com.
----------------------------------------------------------------------------
cp public.rev dbrev.rev

◆チェック

ネットワーク関係の設定ミス, named 等のインストールのミス, public.zone, public.rev の書き間違いを下記の手順でチェックする。

この手順で、仮の DNS サーバが立ち上がることになります。この仮の DNS サー バは、public.zone, public.rev は使うが、db.zone, dbrev.rev は使っていないと いうことに留意しておく

  1. /etc/resolv.conf のチェック

    cat /etc/resolv.conf で、今設定を行なっているマシンの IP アドレスが、 「nameserver」の行に、正しく記述されていることを確認.

    cat /etc/resolv.conf
    
  2. /etc/named.conf
    vi /etc/named.conf
      # 仮に、次のようなファイルを作る
    ----------------------------------------------------------------------------
    options {
    	directory "/var/named";
            pid-file "/var/run/named/named.pid";
    };
    // mydomain.hoge.com <-> XXX.YYY.ZZZ
    zone "mydomain.hoge.com" IN {
    	type master;
    	file "data/public.zone";
    	allow-query { any; }; 	
    };
    zone "ZZZ.YYY.XXX.in-addr.arpa" IN {
    	type master;
    	file "data/public.rev";
    	allow-query { any; }; 	
    };
    
  3. チェックツールを使って、named.conf ファイルの内容をチェック

    エラーが出たら、named.conf を書き直す。

    /usr/local/sbin/named-checkconf /etc/named.conf
    
  4. チェックツールで, public.zone, public.rev をチェック

    エラーが出たら、public.zone, public.rev を書き直す。

    /usr/local/sbin/named-checkzone localhost /var/named/data/public.zone
    /usr/local/sbin/named-checkzone 127.0.0.1 /var/named/data/public.rev
    /usr/local/sbin/named-checkzone dnsmail /var/named/data/public.zone
    /usr/local/sbin/named-checkzone XXX.YYY.ZZZ.160 /var/named/data/public.rev
    /usr/local/sbin/named-checkzone www /var/named/data/public.zone
    /usr/local/sbin/named-checkzone XXX.YYY.ZZZ.167 /var/named/data/public.rev
    
  5. DNS サーバの起動の試み

    DNS サーバ起動時にエラーが出たら、関係する設定ファイル (ここでは、named.conf, public.zone, public.rev) を見直すとともに、「cat /var/adm/messages | grep named 」で エラーメッセージを確認

    pkill named
    /usr/sbin/named -u named -c /etc/named.conf -d 1
    cat /var/adm/messages | grep named
    

◆named.confの設定とチェック
named.conf の設定上の留意事項

・設定ファイル /etc/named.conf の注意事項

  1. options 内の記述
     options 行は複数書けない書けないことに注意.
  2. 「directory "/var/named";」
  3. 「version "unknown";」 bind のバージョンの非表示
  4. allow-recursion: 外部からの recursive query を抑止するように設定.
  5. allow-transfer: 外部からのゾーンリクエストパケット(DNS が管理し ているサーバの一覧の取得)を抑止するうううううように設定。

    named.conf ファイルの options 設定の中で

    options {
       (他の設定)
       allow-recursion { 127.0.0.1;
                         XXX.YYY.ZZZ.0/24;
       };
       (他の設定)
    };
    

    のように設定する. 外部からのrecursive query が抑止され、自分が提供しているドメイン、およ び既に キャッシュされている情報以外は返さないようになる. つまり、組織の外から「組織の外を検索するような要求」が来 たときに、recursive query の実行を抑止する。 なお、組織の内を検索するような要求に対しては recursive query は関係な い。

  6. forwarders: フォーワード先 (ルータが代理 DNS サーバの機能を持つと きはそれを書く. あるいは、上流の DNS サーバの IP アドレスを書く)
    • view "internal" で、内部向きのゾーンファイル配布を定め、 view "external" で、外部向きのゾーンファイル配布を定める。
    • ZONE "." : キャッシュサーバ用の設定


・named.conf を次のように設定する


cd /etc
vi named.conf
  # 以下のように設定
  # XXX.YYY.ZZZ, ZZZ.YYY.XXX -> DNSサーバ兼MXがある「内部」のネットワークアドレスのこと
  # AAA.BBB.CCC -> 上流の DNS サーバがあるネットワークアドレスのこと
  # mydomain.hoge.com -> DNS ドメイン名のこと
----------------------------------------------------------------------------
//
// named.conf
//

options {
	directory "/var/named";
	dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
	pid-file "/var/run/named/named.pid";
	version "unknown";
	allow-recursion {
		127.0.0.1;
		AAA.BBB.CCC.10/24;
	};
	allow-transfer {
		127.0.0.1;
		AAA.BBB.CCC.10/24;
	};
	forwarders {
		AAA.BBB.CCC.10;
	};
	/*
	 * 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;
};

//
// a caching only nameserver config
//
controls {
	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

// logging
logging {
	channel namedlog {
	file "data/named.log";
	print-time yes;
	print-category yes;
	print-severity yes;
	severity info;
    };
    channel securitylog {
	file "data/security.log";
	print-time yes;
    };
    category default {
        default_syslog;
	namedlog;
	default_debug;
    };
    category security {
        default_syslog;
	securitylog;
    };
};

view "internal" {
	match-clients {
		XXX.YYY.ZZZ.0/24;
		127.0.0.1;
	};

// mydomain.hoge.com <-> XXX.YYY.ZZZ
	zone "mydomain.hoge.com" IN {
		type master;
		file "data/db.zone";
		allow-update { none; }; 	
	};

	zone "ZZZ.YYY.XXX.in-addr.arpa" IN {
		type master;
		file "data/dbrev.rev";
		allow-update { none; }; 	
	};

include "/etc/rndc.key";
};

view "external" {
	match-clients {
		any;
	};

	zone "." IN {
		type hint;
		file "named.ca";
	};

	zone "localdomain" IN {
		type master;
		file "localdomain.zone";
		allow-update { none; };
	};

	zone "localhost" IN {
		type master;
		file "localhost.zone";
		allow-update { none; };
	};

	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "named.local";
		allow-update { none; };
	};

	zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
	        type master;
		file "named.ip6.local";
		allow-update { none; };
	};

	zone "255.in-addr.arpa" IN {
		type master;
		file "named.broadcast";
		allow-update { none; };
	};
	
	zone "0.in-addr.arpa" IN {
		type master;
		file "named.zero";
		allow-update { none; };
	};

	// mydomain.hoge.com <-> XXX.YYY.ZZZ
	zone "mydomain.hoge.com" IN {
		type master;
		file "data/public.zone";
		allow-query { any; }; 	
	};
	zone "ZZZ.YYY.XXX.in-addr.arpa" IN {
		type master;
		file "data/public.rev";
		allow-query { any; }; 	
	};
	include "/etc/rndc.key";
};
----------------------------------------------------------------------------

・チェックツールを使って、named.conf ファイルの内容をチェック  エラーが出たら、named.conf を書き直す。  /usr/local/sbin/named-checkconf /etc/named.conf
・チェックツールで, db.zone, dbrev.rev をチェック
public.zone, public.rev のチェックは済んでいるので、 db.zone, dbrev.rev のチェックを念のた めに行なう。 エラーが出たら、db.zone, dbrev.rev を書き直す。

 /usr/local/sbin/named-checkzone localhost /var/named/data/db.zone
  /usr/local/sbin/named-checkzone 127.0.0.1 /var/named/data/dbrev.rev
  /usr/local/sbin/named-checkzone dnsmail /var/named/data/db.zone
  /usr/local/sbin/named-checkzone XXX.YYY.ZZZ.160 /var/named/data/dbrev.rev
  /usr/local/sbin/named-checkzone www /var/named/data/db.zone
 /usr/local/sbin/named-checkzone XXX.YYY.ZZZ.167 /var/named/data/dbrev.rev

・named.cache, localhost.zone, localhost.rev の設定
・起動チェック
 起動チェックのために、最初は、デバッグモードで起動してみる. (起動の前に named の停止を行ないます).
 pkill named
  /usr/sbin/named -u named -c /etc/named.conf -d 1
  cat /var/adm/messages | grep named cat /var/named/data/named.log

「cat /var/named/data/named.log」の結果ログが出てきますので、エラー が出ていないことを確認する。

・rndc との通信ができていることのチェック
 rndc status   # エラーが無く、「server is up and running」という行が出てくることを確認

・/etc/hosts.allow の設定
 TCP wrapper の設定ファイルである /etc/hosts.allow を確認します。
 53/UDP は通常の名前解決に使われ、53/TCP はゾーン転送(プライマリ、セカ ンダリ間)に
 のみ使われます。
 53/TCP のアクセス のアクセスは、XXX.YYY.ZZZ.* のみを許すように設定します。
  例えば、次のように設定します。
  (ネットワークアドレスの末尾に付ける「.」は忘れないようにしましょう)。

   named: 127.0.0.1
     named: XXX.YYY.ZZZ.

とりあえず自学した内容の忘備録的に綴って行こうと思いブログを作りました。

忘れる前に書いて置きたいものが沢山あるので土日にでもまとめてみよう。


あ、ちなみに書くとしてもIT系の内容が大部分を占めます。