====== DNSサーバー導入 ======
ここでは、DNSサーバーの導入手順について記載していきます。
===== BIND =====
==== インストール ====
# dnf install -y bind bind-utils
==== 設定 ====
オプション一覧は以下の通り
|< 100% 20% - >|
^オプション^説明^
|allow-query|権限のあるリソースレコード用のネームサーバーにクエリーを許可されるホストを指定する。IPまたはネットワーク群を記載する。デフォルトでは全てのホスト。|
|directory|named サービス用の作業ディレクトリを指定する。デフォルトは /var/namd|
|forwarders|リクエストの転送先となるネームサーバーの有効なIPアドレス一覧を指定する。|
|forward|forwarders ディレクティブの動作を指定する。\\ first: サーバーは独自の名前の解決を志向する前にforwardersディレクティブに一覧表示されるネームサーバーをクエリーする。\\ only: forwarders ディレクティブに一覧表示されるネームサーバーをクエリーできない場合、サーバーは独自の名前の解決を志向しない。|
|listen-on|クエリーをlistenするIPv4ネットワークインターフェースを指定する。このオプションにより単一ネットワークから発信するクエリーにのみ応答することが出来る。|
|max-cache-size|サーバー用キャッシュとして使用されるメモリーの最大容量を指定する。|
|notify|あるゾーンが更新されたときにセカンダリーネームサーバーに通知するかどうか指定する。 \\ yes: サーバーは全てのセカンダリネームサーバーに通知する。\\ no: サーバーはいずれのセカンダリーネームサーバーにも通知しない。\\ master-only: サーバーはゾーン用のプライマリーサーバーにのみ通知|
|pid-file|namedサービスで作成されたプロセスIDファイルの場所を指定する。|
|recursion|再帰的なサーバーとして動作するかどうか指定する。デフォルトのオプションはyes。|
|statistics-file|統計ファイルの代替の場所を指定する。デフォルトでは/var/named/named.statsファイルが使用される。|
|masterfile-format|ゾーンファイルのフォーマットの形式を指定する。\\ text:テキストフォーマットにする。|
設定例
options {
allow-query { localhost; };
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
max-cache-size 256M;
directory "/var/named";
statistics-file "/var/named/data/named_stats.txt";
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
==== ゾーンステートメント ====
^オプション^説明^
|allow-query|情報を要求できるクライアントを指定する。デフォルトでは全てのクエリー要求が許可される。|
|allow-transfer|ゾーン情報の転送要求を許可されるセカンダリーサーバーを指定する。デフォルトでは全ての転送要求が許可される。|
|allow-update|自身のゾーン内で動的な情報更新を許可されるホストを指定する。デフォルトオプションでは全ての動的更新要求は無視される。|
|file|ゾーンの設定データを格納しているnamed作業ディレクトリー内のファイル名を指定する。|
|masters|信頼できるゾーン情報の要求先となるIPアドレスを指定する。type slave;が定義されている場合のみ設定可能。|
|notify|ゾーンが更新されたときにセカンダリーネームサーバーに通知するかどうかを指定。\\yes: 全てのセカンダリーネームサーバーに通知する。\\ no: セカンダリーネームサーバーに通知しない。\\ master-only: ゾーンに対してのみプライマリーサーバーに通知する。\\ explicit: サーバーはゾーンステートメント内のalso-notify一覧で指定したセカンダリーサーバーのみに通知する。|
|type|ゾーンタイプを指定する。\\ forward: このゾーンに関する情報への全ての要求を他のネームサーバーに転送する。\\ hint: ゾーンが不明な場合にクエリーを解決するルートネームサーバーをポイントする特別な種類のゾーン。\\ master: このゾーンに対してネームサーバーを権威として指定する。\\ slave: ネームサーバーをこのゾーンのセカンダリーサーバーとして指定する。|
マスタサーバー(192.168.0.1)の設定例
zone "example.com" IN {
type master;
file "example.com.zone";
allow-transfer { 192.168.0.2; };
};
セカンダリサーバー(192.168.0.2)の設定例
zone "example.com" {
type slave;
file "slaves/example.com.zone";
masters { 192.168.0.1; };
};
===== Chroot化 =====
CentOS 7以上の場合はnamed-chrootパッケージをインストールする。
# dnf install -y named-chroot
サービスを起動する
# systemctl start named-chroot
chroot後にレコードを変更する場合、/var/named/chroot/var/namedディレクトリ以下にあるゾーンファイルを編集すること。
===== 設定確認 =====
設定ファイルが正しいかどうか確認するにはnamed-checkconコマンドを使用する。
# named-checkconf /etc/named.conf
ゾーンファイルが正しく記載されているか確認するには
named-checkzone
named-checkzone example.com example.com.zone
のように実行する