BINDをソースからインストールしてみる

環境

インストールを行った環境は、以下の通りです。

  • OS:CentOS 7.5

インストールするものは、以下です。

  • BIND 9.11.4

事前準備

以下のパッケージをインストールしておく。
  • openssl-devel

インストールと設定

$ ./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

デバイスファイルの作成

9.11.4のARMを見る限りでは、「chroot先にデバイスファイルを用意する必要はない」と書かれていますので、基本的には /dev/random とかを作成する必要はなさそうです。
以下、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 found
using pre-chroot entropy source /dev/random
ということで、以下のように /dev/random だけ作成しました。
# cd /var/named/chroot/dev
# /bin/mknod -m 666 random c 1 8

自動起動設定

/usr/lib/systemd/system に named.service ファイルを配置する。
ファイルの中身は、以下のような感じで。
[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
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク