====== 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 のように実行する