TOP ▲ itcore TOPTIPSdns.php  タグ:dns centos7 インストール 正引き セカンダリ whois ドメイン ログ windowsdynamicdns dnssec

DNS(bind) in CentOS7 インストール| itcore 2017年

CentOS7 DNS登録 bind 正引き セカンダリ Whois ドメイン追加 ログ(windows Dynamic DNS) ログ(DNSSEC)

CentOS7

CentOS7をインストールします。

DNS登録

まずは、現在のDNSサーバに新しいDNSサーバの情報を登録します。
ns3.itcore.jp 61.213.223.46

bind

bindをインストールします。
セキュリティ対策のためにchrootもインストールします。

# yum -y install bind bind-chroot
# /usr/libexec/setup-named-chroot.sh /var/named/chroot on

chroot on とした場合、以下に設定ファイルを作ります。
# ls /var/named/chroot
dev etc run usr var

# cp -ip /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.conf_`date "+%Y%m%d"`
# vi /var/named/chroot/etc/named.conf
:13
        #listen-on port 53 { 127.0.0.1; };
        listen-on port 53 { any; };
        #listen-on-v6 port 53 { ::1; };
        listen-on-v6 port 53 { none; };
:21
        #allow-query { localhost; };
        allow-query { any; };
:wq

named.confのチェック
# named-checkconf /var/named/chroot/etc/named.conf

# systemctl start named
# systemctl enable named

# firewall-cmd --add-service=dns --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
services: ssh dns

IPv4専用にする
# cp -ip /etc/sysconfig/named /etc/sysconfig/named_`date "+%Y%m%d"`
# vi /etc/sysconfig/named
:12
OPTIONS="-4"
:wq
# systemctl restart named

正引き

正引きのゾーンを設定します。

# cp -ip /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.conf_`date "+%Y%m%d"`zone
# vi /var/named/chroot/etc/named.conf
:$
zone "koganecloud.jp" IN {
        type master;
        file "koganecloud.jp.hosts";
};
:wq

named.confのチェック
# named-checkconf /var/named/chroot/etc/named.conf

# vi /var/named/chroot/var/named/koganecloud.jp.hosts
$ttl 38400
koganecloud.jp. IN SOA ns3.itcore.jp. admin.itcore.jp. (
    2017110501 ; serial
    10800 ; refresh
    3600 ; retry
    604800 ; expire
    38400 ; TTL
)
koganecloud.jp. IN NS ns3.itcore.jp.
koganecloud.jp. IN A 61.213.223.47
www.koganecloud.jp. IN A 61.213.223.47
wp.koganecloud.jp. IN A 14.102.134.42
user101a1.wp.koganecloud.jp. IN A 14.102.134.42
user101b.wp.koganecloud.jp. IN A 14.102.134.42
test.koganecloud.jp. IN A 14.102.134.42
:wq

# chown named.named /var/named/chroot/var/named/koganecloud.jp.hosts
# chmod 600 /var/named/chroot/var/named/koganecloud.jp.hosts

ゾーンファイルのチェック
# named-checkzone koganecloud.jp /var/named/chroot/var/named/koganecloud.jp.hosts
zone koganecloud.jp/IN: loaded serial 2017110501
OK
# systemctl reload named

現在のDNSで定義されていないサーバの正引き確認。
C:\Users\yamada>nslookup
既定のサーバー: google-public-dns-a.google.com
> test.koganecloud.jp
*** google-public-dns-a.google.com が test.koganecloud.jp を見つけられません: Non-existent domain

> server ns3.itcore.jp
既定のサーバー: ns3.itcore.jp
> test.koganecloud.jp
Address: 14.102.134.42

セカンダリ

セカンダリサーバを作成します。
プライマリサーバとは別の物理サーバに作成します。
DNSに登録します。
ns4.itcore.jp 61.213.223.53
CentOS7をインストールします。
# yum -y install bind bind-chroot
# /usr/libexec/setup-named-chroot.sh /var/named/chroot on

# cp -ip /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.conf_`date "+%Y%m%d"`
# vi /var/named/chroot/etc/named.conf
:13
        #listen-on port 53 { 127.0.0.1; };
        listen-on port 53 { any; };
        #listen-on-v6 port 53 { ::1; };
        listen-on-v6 port 53 { none; };
:21
        #allow-query { localhost; };
        allow-query { any; };
:47
        forwarders {
                61.213.223.46;
                };
        allow-transfer { 61.213.223.46; };
:$
server 61.213.223.46 {
        };
:wq
# named-checkconf /var/named/chroot/etc/named.conf
# systemctl start named
# systemctl enable named
# firewall-cmd --add-service=dns --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
services: ssh dns

プライマリサーバへの設定
# vi /var/named/chroot/etc/named.conf
:47
        forwarders {
                61.213.223.53;
                };
:wq
# systemctl start named

セカンダリサーバでの確認。
> server ns4.itcore.jp
> test.koganecloud.jp
サーバー: ns4.itcore.jp
Address: 61.213.223.53
権限のない回答:
名前: test.koganecloud.jp
Address: 14.102.134.42

Whois

whoisの確認
https://whois.ansi.co.jp/
[Domain Name] KOGANECLOUD.JP
[Name Server] ns1.itcore.jp
[Name Server] ns2.itcore.jp

ドメインを取得したレジストラ(プロバイダ)にてDNSサーバを変更します。

ドメイン名のネームサーバー変更が完了した事をお知らせいたします。
※お客様の環境により、反映完了まで24時間から72時間程度かかる場合がございます。
[ドメイン情報]
ドメイン名..................:koganecloud.jp
[ネームサーバー情報]
ns3.itcore.jp
ns4.itcore.jp

翌日にはWhoisに反映されていました。
[Domain Name] KOGANECLOUD.JP
[Name Server] ns3.itcore.jp
[Name Server] ns4.itcore.jp

GoogleのDNSで名前解決出来ることを確認できました。
C:\Users\yamada>nslookup
> test.koganecloud.jp
サーバー: google-public-dns-a.google.com
Address: 8.8.8.8
権限のない回答:
名前: test.koganecloud.jp
Address: 14.102.134.42

ドメイン追加

ゾーンファイルのテンプレート作成シェル
# cd /var/named/chroot/etc
# mkdir -p rireki
# vi _add.sh

today=`date "+%Y%m%d"`
# ドメインを追加します。
for domain in \
  koganecloud.jp \
  work80.jp \
  sc80.jp
do
  echo domain=$domain
  ret=`grep $domain named.conf`
  if [ -z "$ret" ]; then
    echo add $domain to named.conf
    cp -np named.conf rireki/named.conf_`date "+%Y%m%d"`
    data=$(cat << EOT
zone "$domain" IN { type master; file "$domain.hosts"; };
EOT
)
    echo "$data" >> named.conf

    data=$(cat << EOT
\$ttl 38400
$domain. IN SOA ns3.itcore.jp. admin.itcore.jp. (
    ${today}01 ; serial
    10800 ; refresh
    3600 ; retry
    604800 ; expire
    38400 ; TTL
)
$domain. IN NS ns3.itcore.jp.
$domain. IN NS ns4.itcore.jp.
EOT
)
    # 変数をダブルコーテーションでくくらないと改行がなくなるので注意。
    # 追加にしているのは、万が一の上書き防止の為。
    file=/var/named/chroot/var/named/$domain.hosts
    echo "$data" >> $file
    chown named.named $file
    chmod 600 $file
    ls -l $file
  fi
done;

# sh _add.sh
domain=koganecloud.jp
domain=work80.jp
add work80.jp to named.conf
-rw------- 1 named named 194 11月 6 21:45 /var/named/chroot/var/named/work80.jp.hosts
domain=sc80.jp
add sc80.jp to named.conf
-rw------- 1 named named 190 11月 6 21:45 /var/named/chroot/var/named/sc80.jp.hosts

作成されたゾーンファイルにレコードを追加します。
# vi /var/named/chroot/var/named/work80.jp.hosts
# vi /var/named/chroot/var/named/sc80.jp.hosts

ゾーンファイルをチェックします。
# vi _check.sh
named-checkconf /var/named/chroot/etc/named.conf
for domain in \
  koganecloud.jp \
  work80.jp \
  sc80.jp
do
  named-checkzone $domain /var/named/chroot/var/named/$domain.hosts
done;

# sh _check.sh
zone koganecloud.jp/IN: loaded serial 2017110501
OK
zone work80.jp/IN: loaded serial 2017110601
OK
zone sc80.jp/IN: loaded serial 2017110601
OK

ゾーンファイルの読み込み
# systemctl reload named

ログ(windows Dynamic DNS)

WindowsマシンからのDynamic DNS登録拒否ログを解消する。

[root@ns3 ~]# tail /var/named/data/named.run
client 61.213.223.61#64283: update 'itcore.jp/IN' denied
[root@ns3 ~]# tail /var/log/messages
Feb 23 18:19:41 ns3 named[1074]: client 61.213.223.61#62617: update 'itcore.jp/IN' denied

[root@ns3 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
[root@ns3 ~]# cp -ip /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.conf_`date "+%Y%m%d"`
[root@ns3 ~]# vi /var/named/chroot/etc/named.conf
options {
    allow-update {61.213.223.32/27;};
}

[root@ns3 ~]# named-checkconf /var/named/chroot/etc/named.conf
[root@ns3 ~]# systemctl restart named
[root@ns3 ~]# tail /var/log/messages
Feb 23 18:25:46 ns3 named[1918]: all zones loaded

■しばらく運用
ジャーナルファイルの書き込みエラーになっているので、namedに対して書き込み権限を与える。

[root@ns3 ~]# tail /var/log/messages
Feb 23 18:39:48 ns3 named[1918]: client 61.213.223.61#54476: updating zone 'itcore.jp/IN': error: journal open failed: unexpected error

[root@ns3 ~]# ls -l /var | grep named
drwxr-x--- 7 root named 4096 12月 15 2017 named
[root@ns3 ~]# ls -l /var/named/chroot | grep var
drwxr-x--- 5 root named 52 11月 5 2017 var
[root@ns3 ~]# ls -l /var/named/chroot/var | grep named$
drwxrwx--- 7 root named 4096 12月 15 2017 named

[root@ns3 ~]# chmod g+w /var/named
[root@ns3 ~]# chmod g+w /var/named/chroot/var

[root@ns3 ~]# ls -l /var | grep named
drwxrwx--- 7 root named 4096 12月 15 2017 named
[root@ns3 ~]# ls -l /var/named/chroot | grep var
drwxrwx--- 5 root named 52 11月 5 2017 var

■しばらく運用
うまくいっているようだ
Feb 23 20:19:48 ns3 named[1918]: client 61.213.223.61#51507: updating zone 'itcore.jp/IN': adding an RR at 'ForestDnsZones.corp.itcore.jp' A
Feb 23 20:19:48 ns3 named[1918]: client 61.213.223.61#65445: updating zone 'itcore.jp/IN': adding an RR at 'DomainDnsZones.corp.itcore.jp' A

ログ(DNSSEC)

■ログ出力
error (insecurity proof failed) resolving 'aids.gov/ANY/IN':

■設定
# cp -ip /var/named/chroot/etc/named.conf /var/named/chroot/etc/named.conf_20190302
# vi /var/named/chroot/etc/named.conf
dnssec-enable no;
dnssec-validation no;

systemctl restart named
tail /var/named/data/named.run