|
||
|
DNSマスターサーバを構成するゾーンマスターサーバを構成します。デフォルトのnamed.confに最小限の調整でゾーンファイルを追加します。 ゾーン転送をするスレーブサーバの構成は「DNSスレーブサーバを構成する」を参照してください。 0.ファイアウォールを開放する 現在のゾーンを確認します。 #firewall-cmd --get-active-zones public interfaces: enp0s3 現在のゾーンへDNSサービスの許可を追加します。 #firewall-cmd --permanent --zone=public --add-service=dns もしくはファイアウォールを全開けにします。 #firewall-cmd --set-default-zones=trusted (デフォルトのゾーンを、FW無しのtrustedに) もしくは #firewall-cmd --zone=trusted --change-interface=enp0s3 (FWを一時的に変更、全許可へ。再起動したらDefaultに戻ります) 1.DNSのインストール #yum install bind-chroot bind bind本体とbind-chroot環境をインストールします。 過去のバージョンではbind-chrootだけでbindが動作したものですが。 ここではbinr-chroot 9.9.4が入りました。 2.IPv6の問い合わせを無効にする。 環境によりますが、もしネットワーク内にIPv4クライアントしかなく、IPv4のネットワークしか使わない予定なら、DNSのIPv6問い合わせを無効にすることで、解決速度を高めることができます。 #vi /etc/sysconfig/named (追加) OPTIONS="-4" 3.起動 以下のコマンドで起動します。 #systemctl start named 正常に起動すると、/etc/rndc.keyというファイルが生成されます。 これはBINDの管理ツール rndc に必要なファイルです。 ※ちなみに正常に起動しない場合、なんらかの理由でrndc.keyファイルが生成されないためです。 その場合、messagesにrndc,confもしくはrndc.keyが存在しないというエラーメッセージが出力されます。 rndc.keyを手作業で生成したい場合は以下の手順で行います。 #rndc-confgen -a #chmod 640 /etc/rndc.key #chgrp named /etc/rndc.key 再度namedを起動してみます。 正常に起動できたら #rndc status で動作確認します。 4.コンフィグの調整 /etc/named.confを調整します。 (昔は/var/named/chroot/etc/named.confでしたが、今は/etc/named.confです) /etc/named.confを調整します。 コンフィグはバージョンによって動作が微妙に変わってくるのがクセものです。 これはBIND9.9.4(CentOS)ですから。 デフォルトのコンフィグに、赤色で追記します。 options { //DNSサービスを提供する自IPアドレスを追加 listen-on port 53 { 127.0.0.1; 192.168.1.10; }; //IPv6問い合わせを無効jにしたいので、コメントアウト //listen-on-v6 port 53 { ::1; }; 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"; //名前の問い合わせ元はインターネット全て allow-query { any; }; //今回はマスターサーバとして動作するので、キャッシュサーバとしては動作しない recursion no; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run" versions 10 size 10M; //10世代10MBまでログを保存 severity dynamic; print-time yes; //ログに時刻を出力 print-query yes; //名前解決を求めたクライアントアドレスを出力 }; category lame-servers { null; }; //名前解決エラーのログは出力しない //category queries { "default_debug"; }; クエリログを取得する場合はこちらを使用 }; zone "." IN { type hint; file "named.ca"; }; //正引きゾーンの定義 zone "example.com" { type master; file "example.com.zone"; //directoryで指定したパスを基準にしたファイル名 allow-update {none;} ; allow-transfer { none; }; }; //逆引きゾーンの定義 (必要であれば) zone "1.168.192.in-addr.arpa" IN { type master; file "example.com.rev"; allow-update {none;} ; allow-transfer { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; 5.ゾーンファイルの追加 /var/namedへファイルを作成 (昔は/var/named/chroot/var/namedでしたが、今は/var/namedです) example.com.zone ゾーンファイル ------------------------------------------ $TTL 86400 @ IN SOA ns1.example.com. root.example.com. ( 2017110401 ;Serial 3600 ;ゾーン転送の間隔 秒 300 ;転送失敗時のリトライ間隔 秒 360000 ;ゾーンファイルの保持時間 秒 86400 ) ;他サーバでキャッシュされる時間 秒 IN NS ns1.example.com. //末尾のドットに注意 ns1 IN A 192.168.1.10 //自DNSサーバ host1 IN A 192.168.1.99 //LAN内の適当なアドレス ------------------------------------------ example.com.rev 逆引きゾーンファイル ------------------------------------------ $TTL 86400 @ IN SOA ns1.example.com. root.example.com. ( 2017110401 ;Serial 3600 ;Refresh sec(Transfer span) 300 ;Retry sec(in failure retry) 360000 ;SecondaryExpire sec 86400 ) ;Minumum TTL sec(zone expired time) IN NS ns1.example.com. //末尾のドットに注意 10 IN PTR ns1.example.com. //末尾のドットに注意 99 IN PTR host1.example.com. //末尾のドットに注意 ------------------------------------------ 作成したファイルのアクセス権を変更します。 #chgrp named examp.e.com.zone #chmod 640 example.com.zone #chgrp named examp.e.com.rev #chmod 640 example.com.rev 6.コンフィグの確認、サービスの起動、エラー確認 named.confの文法チェック。なにも表示されなければ正しい #named-checkconf namedがまだ起動していない場合、起動。自動起動の設定 #systemctl start named #systemctl enable named namedが起動済みの場合、コンフィグとゾーン情報を再読み込み #rndc reload 起動しない場合、エラーログの確認 #tail -n 30 /var/log/message 7.名前解決の正常性 他の端末からnslookupコマンドを実行してみます。 nslookup >server 192.168.1.10 >host1.example.com サーバー: [192.168.1.10] Address: [192.168.1.10] 名前: host1.example.com Address: 192.168.1.99 >set type=ptr >192.168.1.99 サーバー: [192.168.1.10] Address: [192.168.1.10] 99.1.168.192.in-addr.arpa name=host1.example.com 1.168.192.in-addr.arpa (略) こんなのが返ってくれば正常です。 チェンジルートのファイルパス いままでnamedをchrootで構築した場合、設定ファイル・ゾーンファイルはそれぞれ /var/named/chroot/etc/named.conf /var/named/chroot/var/named/○○○.zone でしたが、いつのころからか /etc/named.conf /var/named/○○○.zone で設定できるようになってました。 chrootされたプロセスがなんで/etc/named.confを使用しているの? と思っていたのですが、 これはchroot内のプロセスが/etc/named.confへアクセスしているわけではなく、 /etc/named.conf を /var/named/chroot/etc/named.confを として /var/named を /var/named/chroot/var/named へ、仮想的にマウントしているようです。 プロセスがchroot外へお出かけしてるわけではなく、外のディレクトリのほうがchroot内へ 来てくれてるわけですね。 確かにこれならchrootされたプロセスにも、chroot内にnamed.confがあるように見えます。 同様に/var/named/○○○.zoneも、chroot内にマウントされているので、chrootプロセスから 正常にアクセスできる、という仕組みのようです。 この仕組みに関しては、/usr/libexec/setup-named-chroot.shに記述してあり サービスを起動するたびにこのスクリプトが実行されるようです。 |
|