さくらのでサーバー構築 ロゴ

DNSサーバーを運用しサブドメインを使えるようにする。(BIND編)

最初に、BINDをインストールします。
[root@ichigo-lab ~]# yum -y install bind bind-chroot
Complete!と表示されれば、インストール完了です。 スクリプトを作成するために、以下のコマンドを入力してください。
[root@ichigo-lab ~]# vi bind-chroot-admin
以下の内容を「bind-chroot-admin」に貼り付けます。
#!/bin/sh

# bind-chroot install check
rpm -q bind-chroot > /dev/null 2>&1
[ $? -ne 0 ] && echo bind-chroot not install && exit 1

# bind-chroot enabled
sed -i '/^ROOTDIR=/d' /etc/sysconfig/named
echo ROOTDIR=/var/named/chroot >> /etc/sysconfig/named

# file copy
filelist=`mktemp`
rpm -ql bind|grep ^/etc >> ${filelist}
rpm -ql bind|grep ^/var >> ${filelist}
for file in `cat ${filelist}`
do
  # directory make
  if [ -d ${file} ]; then
      DIRNAME=/var/named/chroot${file}
      [ ! -d ${DIRNAME} ] && mkdir -p ${DIRNAME}
  fi
  # file copy
  if [ -f ${file} ]; then
      DIRNAME=/var/named/chroot`dirname ${file}`
      [ ! -d ${DIRNAME} ] && mkdir -p ${DIRNAME}
      /bin/cp -a ${file} ${DIRNAME}
  fi
done
rm -f ${filelist}

chown named:named /var/named/chroot/var/named/data
chmod 770 /var/named/chroot/var/named/data
chown named:named /var/named/chroot/var/named/dynamic

exit


「:wq」を押して保存します。
以下のコマンドを入力してスクリプトを実行します。
[root@ichigo-lab ~]# sh bind-chroot-admin
BINDの設定ファイルを編集します。
[root@ichigo-lab ~]# vi /var/named/chroot/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.
//

options {
	#listen-on port 53 { 127.0.0.1; };
	#listen-on-v6 port 53 { ::1; };
        version         "unknown";
	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     { localhost; localnets; };
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
        category lame-servers { null; };
};

view "internal" {
        match-clients { localnets; };
        match-destinations { localnets; };

zone "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

};

view "external" {
        match-clients { any; };
        match-destinations { any; };
        recursion no;
        include "/etc/named.ichigo-lab.mydns.jp.zone.wan";
};


外部のゾーン設定を行います。
さくらのVPSでローカル接続を行っていない場合は内部のゾーン設定は不要です。
vi /var/named/chroot/etc/named.ichigo-lab.mydns.jp.zone.wan
以下の内容を「/var/named/chroot/etc/named.ichigo-lab.mydns.jp.zone.wan」にコピーします。
zone "ichigo-lab.mydns.jp" {
        type master;
        file "ichigo-lab.mydns.jp.db.wan";
        allow-query { any; };
};


IPv4のみで動作するように設定を変更します。
[root@ichigo-lab ~]# echo OPTIONS="-4" >> /etc/sysconfig/named
ルートネームサーバーの更新を行います。
[root@ichigo-lab ~]# dig . ns @198.41.0.4 +bufsize=1024 > /var/named/chroot/var/named/named.ca
ルートゾーンの自動更新スクリプトを作成します。
[root@ichigo-lab ~]# vi named.root_update
以下の内容を「named.root_update」に貼り付けます。
#!/bin/bash

new=`mktemp`
errors=`mktemp`

dig . ns @198.41.0.4 +bufsize=1024 > $new 2> $errors

if [ $? -eq 0 ]; then
    sort_new=`mktemp`
    sort_old=`mktemp`
    diff_out=`mktemp`
    sort $new > $sort_new
    sort /var/named/chroot/var/named/named.ca > $sort_old
    diff --ignore-matching-lines=^\; $sort_new $sort_old > $diff_out
    if [ $? -ne 0 ]; then
        (
         echo '-------------------- old named.root --------------------'
         cat /var/named/chroot/var/named/named.ca
         echo
         echo '-------------------- new named.root --------------------'
         cat $new
         echo '---------------------- difference ----------------------'
         cat $diff_out
        ) | mail -s 'named.root updated' root
        cp -f $new /var/named/chroot/var/named/named.ca
        chown named. /var/named/chroot/var/named/named.ca
        chmod 644 /var/named/chroot/var/named/named.ca
        which systemctl > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            systemctl restart named-chroot > /dev/null
        else
            /etc/rc.d/init.d/named restart > /dev/null
        fi
    fi
    rm -f $sort_new $sort_old $diff_out
else
    cat $errors | mail -s 'named.root update check error' root
fi
rm -f $new $errors


「named.root_update」のパーミッションと所有者を変更します。
[root@ichigo-lab ~]# chmod 700 named.root_update
「named.root_update」ファイルをコピーします。
[root@ichigo-lab ~]# cp -p named.root_update /etc/cron.monthly/
MXレコードを外部から逆引きできるように設定します。
[root@ichigo-lab ~]# vi /var/named/chroot/var/named/ichigo-lab.mydns.jp.db.wan
「ichigo-lab.mydns.jp.db.wan」に以下の内容を貼り付けます。
$TTL    86400
@       IN      SOA     ns1.ichigo-lab.mydns.jp.  root.ichigo-lab.mydns.jp.(
                                      2015111601 ; Serial
                                      7200       ; Refresh
                                      7200       ; Retry
                                      2419200    ; Expire
                                      86400 )    ; Minimum
        IN NS    ns1.ichigo-lab.mydns.jp.
        IN MX 10 ichigo-lab.ga.mydns.jp.
ns1     IN A     160.16.64.180
@       IN A     160.16.64.180
ichigo-lab.mydns.jp. IN TXT "v=spf1 ip4:160.16.64.180 ~all"


BINDを起動します。
[root@ichigo-lab ~]# service named start
Generating /etc/rndc.key:[  OK  ]

Starting named: [  OK  ]
自動起動の設定を行います。
[root@ichigo-lab ~]# chkconfig named on
ファイアウォールの設定を変更します。
[root@ichigo-lab ~]# /etc/sysconfig/iptables
以下の内容を「-A INPUT -i lo -j ACCEPT」の後に貼り付けてください。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
ファイアウォールを再起動します。
[root@ichigo-lab ~]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [  OK  ]

iptables: Flushing firewall rules: [  OK  ]

iptables: Unloading modules: [  OK  ]

iptables: Applying firewall rules: [  OK  ]
これでDNSサーバーの構築は完了です。

↑ PAGE TOP