LoginSignup
23
27

More than 5 years have passed since last update.

DNSサーバ構築手順(ソースからBIND 9.10.1-P1をインストール + 内部向け権威DNSサーバ構築)

Last updated at Posted at 2015-01-28

はじめに

CentOS 6.6サーバにソースからBIND 9.10.1-P1をインストールし、内部向けの権威DNSサーバを構築する手順です。

BINDはyumでインストールできますが、BIND脆弱性対応等により、yumのパッケージが提供されるより早く最新バージョンのBINDをインストールしたいといった事があるかと思います。

今回の例では、新しく構築したCentOS 6.6サーバ(BINDがインストールされていないサーバ)に対して、ソースファイルからBIND 9.10.1-P1をインストールする手順について記載致します。

構築するBINDサーバには例示用として「test.example.com」ゾーンを作成し、digコマンドで、本ゾーンの名前解決(正引き)を行うところまで記載致します。

  ↓

構築するBINDサーバには例示用として「test.example.com」と「100.51.192.in-addr.arpa」ゾーンを作成し、digコマンドで、本ゾーンに対する名前解決(正引きと逆引き)を行うところまで記載致します。

今回構築するDNSサーバの用途

今回の例で、BIND 9.10.1-P1をインストールするCentOS 6.6サーバは、プライベートなネットワーク内のマシンやサーバからの名前解決でのみ利用する内部向け権威DNSサーバとして構築します。

なお、プライベートなネットワーク内のマシンやサーバから、digやnslookupコマンドを使用せずに内部向けゾーンの名前解決を行えるようにする為には、DNSフォワーダや再帰検索を担う内部向けのDNSフルサービスリゾルバサーバが必要になります。

今回はDNSフルサービスリゾルバ構築手順については割愛しますが、フルサービスリゾルバ(DNSキャッシュサーバ)構築例としては、以下が参考になるかもしれません。

unbound 1.5.1によるDNSキャッシュサーバ構築例
http://qiita.com/na0AaooQ/items/ac0e2f0588c70a12f0c5

BIND 9.10.1-P1によるDNSキャッシュサーバ構築例
http://qiita.com/na0AaooQ/items/8fe5fca279449d96e277

参考サイト

BINDのソースインストール手順については、以下のページを参考にさせて頂きました。
http://etcsysconfig.hatenadiary.jp/entry/2013/03/15/155149
http://www.eis.co.jp/bind9_src_build_1/
http://www.geocities.jp/yasasikukaitou/bind_install.html
http://centossrv.com/bind.shtml

named.confの設定については、http://qiita.com/dumpty-alma@github 様の以下のページを参考にさせて頂きました。
http://qiita.com/dumpty-alma@github/items/536f21de67d0ed2c8e85

digコマンドの詳細については、以下のページを参考にさせて頂きました。
http://d.hatena.ne.jp/japanrock_pg/20090410/1239355230

make testでFAILが出る場合の対応については、以下のページを参考にさせて頂きました。
http://cathand.info/?p=85
http://diary.bis5.net/2013/07/27/302.html

BINDサーバで不要サービスを停止する際、 http://qiita.com/RentalCat__ 様の以下のページを参考にさせて頂きました。
http://qiita.com/RentalCat__/items/862d0ec075e97ae52b52

BIND 9.10.1-P1のソースファイル

今回の例では、ISCから以下のソースファイルをダウンロードして、BINDをインストールします。

ftp://ftp.isc.org/isc/bind9/9.10.1-P1/bind-9.10.1-P1.tar.gz

BIND 9.10.1-P1インストールする環境

BIND 9.10.1-P1をインストールするOSは以下になります。

・CentOS release 6.6 (2.6.32-504.3.3.el6.x86_64)

BIND 9.10.1-P1ソースインストール手順 (事前準備)

・BIND 9.10.1-P1をインストールしたいCentOS 6.6サーバにrootユーザでログインします。

・ホスト名を変更します。

# cp -p /etc/sysconfig/network /etc/sysconfig/network.ORG
#

# sed -i 's/^HOSTNAME=localhost.localdomain/HOSTNAME=dns-bind-server/' /etc/sysconfig/network
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dns-bind-server
NOZEROCONF=yes
#

・CentOS 6.6サーバのカーネルやパッケージ類をアップデートします。

# yum update

・BINDインストールに最低限必要なパッケージをインストールします。

configure実行時に必要なgccやperl(perl-Net-DNS)やmakeをインストールします。
BINDでDNSSECを利用する場合は、OpenSSLもインストールします。

# yum -y install gcc
# yum -y install make
# yum -y install perl-Net-DNS
# yum -y install openssl-devel

・その他あると便利なパッケージ類をインストールします。

wgetはBINDソースのダウンロードに利用します。
sysstatはsarコマンドでBINDサーバの負荷を見るときに便利なのでインストールします。
ntpdateはBINDサーバの時刻同期の為にインストールします。

# yum -y install wget
# yum -y install sysstat
# yum -y install ntpdate

・パッケージ版のBINDはインストールされていない事を確認します。

# rpm -qa | grep bind
#

・サーバをリブートします。

# reboot

BIND 9.10.1-P1ソースインストール手順 (BINDインストール)

・CentOS 6.6サーバが起動したら、rootユーザでログインします。

[root@dns-bind-server ~]# hostname
dns-bind-server
[root@dns-bind-server ~]# uname -a
Linux dns-bind-server 2.6.32-504.3.3.el6.x86_64 #1 SMP Wed Dec 17 01:55:02 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@dns-bind-server ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@dns-bind-server ~]#

・BINDソースファイルをダウンロードします。

[root@dns-bind-server ~]# cd /usr/local/src
[root@dns-bind-server src]# pwd
/usr/local/src
[root@dns-bind-server src]# ls -lrta /usr/local/src
total 8
drwxr-xr-x.  2 root root 4096 Sep 23  2011 .
drwxr-xr-x. 12 root root 4096 Sep 30 07:18 ..
[root@dns-bind-server src]#
[root@dns-bind-server src]# wget ftp://ftp.isc.org/isc/bind9/9.10.1-P1/bind-9.10.1-P1.tar.gz

[root@dns-bind-server src]# ls -lrta /usr/local/src/bind-9.10.1-P1.tar.gz
-rw-r--r--. 1 root root 8356463 Jan 28 23:50 /usr/local/src/bind-9.10.1-P1.tar.gz
[root@dns-bind-server src]#

・ダウンロードしたBINDソースファイルを展開します。

[root@dns-bind-server src]# pwd
/usr/local/src
[root@dns-bind-server src]# tar zxvf /usr/local/src/bind-9.10.1-P1.tar.gz

[root@dns-bind-server src]# cd /usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# 

・展開したBINDソースファイルをコンパイルします。

[root@dns-bind-server bind-9.10.1-P1]# ll /var/named
ls: cannot access /var/named: No such file or directory
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# pwd
/usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# ./configure --prefix=/var/named/chroot --enable-threads --with-openssl=yes --enable-openssl-version-check --disable-ipv6
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# pwd
/usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# make
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# pwd
/usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# ll bin/tests/system/ifconfig.sh
-rwxr-xr-x. 1 10292 9901 5760 Nov 21 08:56 bin/tests/system/ifconfig.sh
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# bin/tests/system/ifconfig.sh up
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# pwd
/usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# make test
 (長いので途中省略)

I:System test result summary:
I:        44 FAIL
I:         X PASS
I:         X SKIPPED

・make testでFAILが出た場合の対応。

以下サイトを見ますと、make testでFAILが出る場合、BINDソースディレクトリのオーナーをrootに変更する必要があります。
正確にはソースディレクトリのオーナーをmake testを実行するユーザ(今回の例ではrootユーザ)に合わせておく必要があるそうです。
http://cathand.info/?p=85
http://diary.bis5.net/2013/07/27/302.html

[root@dns-bind-server bind-9.10.1-P1]# chown -R root /usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]#

再度make testを実行し、FAILがなくなった事を確認します。

[root@dns-bind-server bind-9.10.1-P1]# pwd
/usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# make test
 (長いので途中省略)
I:exit status: 0
R:PASS
E:zonechecks:Fri Jan 29 XX:XX:XX JST 2015
I:System test result summary:
I:      63 PASS
I:       6 SKIPPED
make[3]: Leaving directory `/usr/local/src/bind-9.10.1-P1/bin/tests/system'
make[2]: Leaving directory `/usr/local/src/bind-9.10.1-P1/bin/tests'
make[1]: Leaving directory `/usr/local/src/bind-9.10.1-P1'
[root@dns-bind-server bind-9.10.1-P1]#

・make installを実行してコンパイルしたBINDをインストールします。

[root@dns-bind-server bind-9.10.1-P1]# pwd
/usr/local/src/bind-9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]# make install
 (長いので途中省略)

ln /var/named/chroot/share/man/man1/isc-config.sh.1 /var/named/chroot/share/man/man1/bind9-config.1
/usr/bin/install -c -m 644 ./bind.keys /var/named/chroot/etc
[root@dns-bind-server bind-9.10.1-P1]#

・BINDがインストールされた事を確認します。

[root@dns-bind-server bind-9.10.1-P1]# ls -lrta /var/named/
total 12
drwxr-xr-x. 18 root root 4096 Jan 29 01:06 ..
drwxr-xr-x.  3 root root 4096 Jan 29 01:06 .
drwxr-xr-x.  9 root root 4096 Jan 29 01:22 chroot
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# ls -lrta /var/named/chroot/
total 36
drwxr-xr-x.  3 root root 4096 Jan 29 01:06 var
drwxr-xr-x.  3 root root 4096 Jan 29 01:06 ..
drwxr-xr-x.  3 root root 4096 Jan 29 01:22 share
drwxr-xr-x. 12 root root 4096 Jan 29 01:22 include
drwxr-xr-x.  2 root root 4096 Jan 29 01:22 lib
drwxr-xr-x.  2 root root 4096 Jan 29 01:22 sbin
drwxr-xr-x.  9 root root 4096 Jan 29 01:22 .
drwxr-xr-x.  2 root root 4096 Jan 29 01:22 bin
drwxr-xr-x.  2 root root 4096 Jan 29 01:22 etc
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# ls -lrta /var/named/chroot/sbin/named
-rwxr-xr-x. 2 root root 9974284 Jan 29 01:22 /var/named/chroot/sbin/named
[root@dns-bind-server bind-9.10.1-P1]#
[root@dns-bind-server bind-9.10.1-P1]# /var/named/chroot/sbin/named -v
BIND 9.10.1-P1
[root@dns-bind-server bind-9.10.1-P1]#

・bindユーザとbindグループを作成します。

bindグループを作成します。

[root@dns-bind-server bind-9.10.1-P1]# cd ~
[root@dns-bind-server ~]#
[root@dns-bind-server ~]# cp -p /etc/group /etc/group.ORG
[root@dns-bind-server ~]# cp -p /etc/passwd /etc/passwd.ORG
[root@dns-bind-server ~]# cp -p /etc/shadow /etc/shadow.ORG
[root@dns-bind-server ~]#

[root@dns-bind-server ~]# groupadd -g 25 bind
[root@dns-bind-server ~]#

bindユーザを作成します。
先のBINDインストールで/var/namedディレクトリが既に作成されている為、以下のようなメッセージが表示されますが、問題ありません。

[root@dns-bind-server ~]# useradd -u 25 -g bind -d /var/named -c "DNS BIND Named User" -s /sbin/nologin bind
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@dns-bind-server ~]#

・bindユーザにスイッチできない事を確認します。

[root@dns-bind-server ~]# id bind
uid=25(bind) gid=25(bind) groups=25(bind)
[root@dns-bind-server ~]# su - bind
This account is currently not available.
[root@dns-bind-server ~]#

・chroot配下にデバイスファイルを作成します。

[root@dns-bind-server ~]# mkdir /var/named/chroot/dev
[root@dns-bind-server ~]# ls -lrta /var/named/chroot/dev/
total 8
drwxr-xr-x. 10 root root 4096 Jan 29 01:39 ..
drwxr-xr-x.  2 root root 4096 Jan 29 01:39 .
[root@dns-bind-server ~]#

[root@dns-bind-server ~]# mknod -m 666 /var/named/chroot/dev/null c 1 3
[root@dns-bind-server ~]#

[root@dns-bind-server ~]# ls -lrta /var/named/chroot/dev/null
crw-rw-rw-. 1 root root 1, 3 Jan 29 01:40 /var/named/chroot/dev/null
[root@dns-bind-server ~]#

[root@dns-bind-server ~]# mknod -m 666 /var/named/chroot/dev/random c 1 8
[root@dns-bind-server ~]#

・rndcキーを作成します。

[root@dns-bind-server ~]# /var/named/chroot/sbin/rndc-confgen -a
wrote key file "/var/named/chroot/etc/rndc.key"
[root@dns-bind-server ~]#

・以下のようにrndcキーファイルが作成された事を確認します。

[root@dns-bind-server ~]# cat /var/named/chroot/etc/rndc.key
key "rndc-key" {
        algorithm hmac-md5;
        secret "XXXXXXXXXXXXXXXXXXXXX";
};
[root@dns-bind-server ~]#

・/usr/locals/sbin/配下にrndcコマンド等のシンボリックリンクを作成します。

[root@dns-bind-server ~]# ls -lrta /var/named/chroot/sbin/rndc
-rwxr-xr-x. 1 root root 1452030 Jan 29 01:22 /var/named/chroot/sbin/rndc
[root@dns
23
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
27