Centos6.8でbindでdnsサーバーをサクッと構築する方法

検証などでDNSサーバが必要な際に、軽量なCentOS6.8でスピーディに準備する必要があり、備忘録。オープンリゾリゾルバとして使用する。

マシンスペック

OS CentOS6.8
メモリ1GB
HDD16GB

構築手順

ビルドに必要なツールをインストール

yum -y install perl zlib-devel wget
yum -y groupinstall "development tools"

時刻合わせ

yum -y install ntpdate
ntpdate ntp.nict.jp

SELINUX無効化

sed -i -e 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

IpTablesコンフィグ調整

以下内容にする。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FWINPUT - [0:0]
-A INPUT -j FWINPUT
-A FORWARD -j FWINPUT
-A FWINPUT -i lo -j ACCEPT
-A FWINPUT -p icmp --icmp-type any -j ACCEPT
-A FWINPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FWINPUT -p tcp -m tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT
-A FWINPUT -p udp --dport 53 -j ACCEPT
-A FWINPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

修正後、IPtablesサービス再起動(以下)。

service iptables restart

OpenSslインストール

cd /root
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar xvzf openssl-1.1.0h.tar.gz
cd openssl-1.1.0h
mkdir -p /opt/openssl
./config --prefix=/opt/openssl shared zlib
make
make install
echo '/opt/openssl/lib' >> /etc/ld.so.conf
ldconfig -v
/opt/openssl/bin/openssl version
cd ..
rm -rf openssl-1.1.0h openssl-1.1.0h.tar.gz

BIND 9.12.1 インストール

バージョンを固定したいのでソースからビルド。

cd /usr/local/src
wget --trust-server-name https://www.isc.org/downloads/file/bind-9-12-1/?version=tar-gz
mv index.html?version=tar-gz bind-9.12.1.tar.gz
tar xvzf bind-9.12.1.tar.gz
cd bind-9.12.1
./configure -enable-threads -with-openssl=/opt/openssl --enable-openssl-version-check
make
make install

bind-chrootインストール

yum -y install bind-chroot
service named restart

ネットワークインターフェース設定ファイルを修正

名前解決の際、自身へ問い合わせるようにする。設定ファイル名称は環境によって様々なので一例を記載。

DNS1=127.0.0.1

DNSサーバ設定ファイル微調整

/etc/named.confを修正する。

options {
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 { any; };
allow-recursion { any; };
allow-query-cache { any; };
dnssec-enable no;
dnssec-validation no;
empty-zones-enable no;
use-v6-udp-ports { };
recursion yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

OS起動時に連動してサービスが起動する設定

chkconfig named on

サービスを手動で起動させる

service named start

以上。

Leave a Comment