CentOS7.5にてBINDによるDNSサーバを構築します。まず以下のコマンドでBIND本体をインストールします。
# yum install bind bind-chroot bind-utils # rpm -qa | grep bind bind-9.9.4-61.el7.x86_64 bind-utils-9.9.4-61.el7.x86_64 bind-chroot-9.9.4-61.el7.x86_64 |
BINDには少し癖があり、bind-chrootというものを上記でインストールしました。これは本来のルートディレクトリを/var/named/chrootに変更するもので、このディレクリより上位へはアクセスができず、セキュリティ強化がされるというものです。従いまして設定ファイルはすべて/var/named/chrootに配置されるということになります。
ただ、bindを起動していない状態では/var/named/chrootはマウントされず、起動することで初めてマウントされます。以下のような状態となります。
・/etc/named.conf → /var/named/chroot/etc/named.conf
・/var/named/[ゾーンファイル] → /var/named/chroot/var/named/[ゾーンファイル]
bindの起動停止で上記のマウント・アンマウントが行われるのですが、以下のスクリプトでも行うことが可能です。
# /usr/libexec/setup-named-chroot.sh /var/named/chroot [on/off] |
ただ、bindの起動停止で自動で行われるので上記は基本は不要です。
最初はbindは起動していない状態だと思うので/etc/named.confの設定から入ります。以下は私の環境の場合の設定例で修正箇所を太字にしてあります。参考程度に見てください。
# vi /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // See the BIND Administrator's Reference Manual (ARM) for details about the // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html acl "trust" { 127.0.0.1; 192.168.0.0/16; 172.16.0.0/16; }; options { #listen-on port 53 { 127.0.0.1; }; 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 { trust; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable no; dnssec-validation no; /* 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"; version "unknown"; allow-transfer { none; }; allow-recursion { trust; }; masterfile-format text; }; logging { channel default_debug { file "data/named.run"; severity info; print-time yes; print-severity yes; print-category yes; }; category default { default_debug; }; category security { default_debug; }; category resolver { default_debug; }; category xfer-in { default_debug; }; category xfer-out { default_debug; }; category notify { default_debug; }; category client { default_debug; }; category general { default_debug; }; category config { default_debug; }; category database { default_debug; }; category dnssec { default_debug; }; category lame-servers { null; }; category network { default_debug; }; category update { default_debug; }; category update-security { default_debug; }; }; zone "." IN { type hint; file "named.ca"; }; zone "unix-power.net" IN { type master; file "master/kagawa-u.ac.jp"; allow-transfer { trust; }; also-notify { trust; }; }; zone "168.192.in-addr.arpa" IN { type master; file "master/168.192.in-addr.arpa"; allow-transfer { trust; }; also-notify { trust; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; |
named.confに記載のゾーンファイルについてはCentOS6のときと同様なのでこちらのページをご覧になってください。
ここまで終わればnamed-chrootを起動します。(namedは起動の必要はありません)
# systemctl enable named-chroot # systemctl start named-chroot |
/var/named/chroot以下にファイルがマウントされます。