環境
インストールを行った環境は、以下の通りです。
- OS:CentOS 7.5
インストールするものは、以下です。
- BIND 9.11.4
事前準備
以下のパッケージをインストールしておく。
- openssl-devel
インストールと設定
[bash]
$ ./configure --with-openssl --prefix=/usr/local/bind-9.11.4 --sysconfdir=/etc --localstatedir=/var --disable-ipv6 --disable-tcp-fastopen --enable-full-report
$ make
$ su -
# make install
# cd /usr/local
# ln -s /usr/local/bind-9.11.4 bind
# mkdir -p /var/named/chroot/etc
# mkdir -p /var/named/chroot/var/named
# mkdir -p /var/named/chroot/var/named/data
# mkdir -p /var/named/chroot/dev
# chown -R named:named /var/named/chroot/*
# chmod -R 775 /var/named/chroot/*
# vi /var/named/chroot/etc/named.conf
# /usr/local/bind/sbin/rndc-confgen -a
# cat /etc/rndc.key
# cp -ip /etc/rndc.key /var/named/chroot/etc/rndc.key
# chown named:named /var/named/chroot/etc/rndc.key
# cd /var/named/chroot/var/named
# wget https://www.internic.net/domain/named.root
[/bash]
デバイスファイルの作成
以下、ARMからの抜粋。
Unlike with earlier versions of BIND, you typically will not need to compile named statically nor install shared libraries under the new root.However, depending on your operating system, you may need to set up things like /dev/zero, /dev/random, /dev/log, and /etc/localtime.
ただ、手元の CentOS 7.5 で試したところ、bind起動時に以下のログが出力されて起動しませんでした。
could not open entropy source /dev/random: file not foundusing pre-chroot entropy source /dev/random
ということで、以下のように /dev/random だけ作成しました。
自動起動設定
/usr/lib/systemd/system に named.service ファイルを配置する。
ファイルの中身は、以下のような感じで。
[bash]
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Wants=named-setup-rndc.service
Before=nss-lookup.target
After=network.target
After=named-setup-rndc.service
[Service]
Type=forking
Environment=NAMEDCONF=/etc/named.conf
EnvironmentFile=-/etc/sysconfig/named
Environment=KRB5_KTNAME=/etc/named.keytab
PIDFile=/var/named/chroot/var/run/named/named.pid
ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/local/bind/sbin/named-checkconf -z -t /var/named/chroot "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'
ExecStart=/usr/local/bind/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS
ExecReload=/bin/sh -c '/usr/local/bind/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'
ExecStop=/bin/sh -c '/usr/local/bind/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[/bash]