BIND DNSサーバをマスタ、スレイブ構成でLinux上に構築する手順をメモ

コンピュータ
スポンサーリンク

BIND:バインド(Berkeley Internet Name Domain)は、昔からあるDNS(Domain Name System)サーバで、デファクトスタンダート的なソフトウェアですが、脆弱性が多いため最近は利用する機会が少なくなりました。

とはいえ、数年に一度は操作することがあるため、使い方を忘れないようシンプルに構築手順をまとめておきます。

BINDはconfigが分かりにくいうえ、構築する人によってディレクトリ構成も違い、混乱を招きやすい。そのため、初期インストールから極力編集が少なくて済むよにする。

なお、Winodws Serverに導入されているDNSサーバは、BINDを操作できれば直感で構築できると思います。

スポンサーリンク

準備する環境に関して

  • RHEL(Linux)上に一般的なマスタ/スレイブの2台構成
  • 公開向けのゾーンは管理せず、ローカル向けのゾーン(test.local)を管理する想定
  • スレイブはマスタからローカル向けのゾーンファイルを取得する
  • マスタはスレイブからのみゾーンファイルの転送を受け付ける
  • マスタ/スレイブともに自身で名前解決できない場合は、Googleで公開されているDNSであるIPv4の8.8.8.8にクエリを投げ名前解決する(IPv6は2001:4860:4860::8888)
  • 稼働を最優先とし、極力編集を少なくする(セキュリティ関連の設定は考慮しておりません

BINDの初期導入

BINDの導入に関しては、マスタ:master/スレイブ:slave(プライマリ:primary/セカンダリ:secondaryという方も)ともに同手順となるため、1台分だけの手順を記載する

パッケージの導入

//BINDのインストール
# dnf install bind
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 0:58:33 時間前の 2022年01月08日 20時20分22秒 に実施しました。
依存関係が解決しました。
====================================================================================================
 パッケージ  Arch          バージョン                 リポジトリー                            サイズ
====================================================================================================
インストール:
 bind        x86_64        32:9.11.26-6.el8           rhel-8-for-x86_64-appstream-rpms        2.1 M

トランザクションの概要
====================================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 2.1 M
インストール後のサイズ: 4.5 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
bind-9.11.26-6.el8.x86_64.rpm                                       2.3 MB/s | 2.1 MB     00:00    
----------------------------------------------------------------------------------------------------
合計                                                                2.3 MB/s | 2.1 MB     00:00     
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                            1/1 
  scriptletの実行中: bind-32:9.11.26-6.el8.x86_64                                               1/1 
  インストール中   : bind-32:9.11.26-6.el8.x86_64                                               1/1 
  scriptletの実行中: bind-32:9.11.26-6.el8.x86_64                                               1/1 
[/usr/lib/tmpfiles.d/pesign.conf:1] Line references path below legacy directory /var/run/, updating /var/run/pesign → /run/pesign; please update the tmpfiles.d/ drop-in file accordingly.

  検証             : bind-32:9.11.26-6.el8.x86_64                                               1/1 
インストール済みの製品が更新されています。

インストール済み:
  bind-32:9.11.26-6.el8.x86_64                                                                      

完了しました!


//パッケージ確認
# rpm -qa | grep -i bind
bind-license-9.11.26-6.el8.noarch
bind-libs-9.11.26-6.el8.x86_64
rpcbind-1.2.5-8.el8.x86_64
bind-libs-lite-9.11.26-6.el8.x86_64
python3-bind-9.11.26-6.el8.noarch
pcp-pmda-bind2-5.3.1-5.el8.x86_64
bind-utils-9.11.26-6.el8.x86_64
bind-9.11.26-6.el8.x86_64 ← ★bindがインストールされた


//インストール確認
# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

自動起動の設定

自動起動の設定後、デフォルトのコンフィグでサービス開始

//自動起動に変更
# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: inactive (dead)



//bindのconfファイル確認
 
# cd /etc
# ll named.conf
-rw-r-----. 1 root named 1705  8月 20 07:15 named.conf


//デフォルトのnamed.confは以下の通り 
# cat 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; };
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { localhost; };

        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

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

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        include "/etc/crypto-policies/back-ends/bind.config";
};

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";


//BIND(named)を起動し、ステータス確認
# systemctl start named.service 
# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-08 21:29:51 JST; 3s ago
  Process: 60355 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0>
  Process: 60352 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sb>
 Main PID: 60356 (named)
    Tasks: 11 (limit: 49318)
   Memory: 65.8M
   CGroup: /system.slice/named.service
           └─60356 /usr/sbin/named -u named -c /etc/named.conf

 1月 08 21:29:51 relay named[60356]: network unreachable resolving './DNSKEY/IN': 2001:500:1::53#53
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './NS/IN': 2001:500:1::53#53
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './DNSKEY/IN': 2001:500:12::d0d#>
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './NS/IN': 2001:500:12::d0d#53
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './DNSKEY/IN': 2001:500:2::c#53
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './DNSKEY/IN': 2001:503:ba3e::2:>
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './DNSKEY/IN': 2001:500:2f::f#53
 1月 08 21:29:51 relay named[60356]: network unreachable resolving './DNSKEY/IN': 2001:503:c27::2:3>
 1月 08 21:29:51 relay named[60356]: managed-keys-zone: Key 20326 for zone . acceptance timer compl>
 1月 08 21:29:51 relay named[60356]: resolver priming query complete

簡易動作確認

digで簡易的に動作確認をしておく。ここで外部からレコードが返ってこないようであれば、どこかでフィルタされている可能性があるため、適宜OS、ネットワーク機器のフィルタなどを確認していただきたい。

//デフォルトのconfigでrootサーバへ問い合わせた結果
# dig @127.0.0.1 www.yahoo.co.jp

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @127.0.0.1 www.yahoo.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29703
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: aef176cf497515f89fa5835361d983d72864e4711424b440 (good)
;; QUESTION SECTION:
;www.yahoo.co.jp.               IN      A

;; ANSWER SECTION:
www.yahoo.co.jp.        900     IN      CNAME   edge12.g.yimg.jp.
edge12.g.yimg.jp.       60      IN      A       182.22.25.252

;; AUTHORITY SECTION:
g.yimg.jp.              900     IN      NS      gns02.yahoo.co.jp.
g.yimg.jp.              900     IN      NS      gns12.yahoo.co.jp.

;; Query time: 1078 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 土  1月 08 21:30:15 JST 2022
;; MSG SIZE  rcvd: 156

マスタ(master)の構築

named.confの準備

修正した箇所は、太字の★マークでコメントを付けておく。

//master向けにconf修正
# vi /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 port 53 { 192.168.11.11; }; ← ★自分の環境に合わせてマスタのIP
//      listen-on-v6 port 53 { ::1; }; ← ★v6はコメントアウト
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
//      allow-query     { localhost; }; ← ★コメントアウト
        allow-query     { 192.168.11.0/24; localhost; }; ← ★自ネットワークのみクエリ許可

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;
        forwarders { 8.8.8.8; }; ★構築したDNSサーバで名前解決できない場合、8.8.8.8へ問い合わせ
        forward only; ★8.8.8.8へ問い合わせ回答が来なければエラーで返す

        dnssec-enable yes;
        dnssec-validation yes;

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

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

//zone "." IN { ← ★rootのサーバには問い合わせ不要のため一式コメントアウト
//      type hint;
//      file "named.ca";
//};

zone "test.local" IN {  ← ★test.localのゾーン場所指定
        type master;
        file "test.local";
};

zone "11.168.192.in-addr.arpa" IN { ←★192~のゾーン場所指定
        type master;
        file "192.168.11.rev";
};

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

test.localゾーンの準備

新規で、test.local向けのゾーンを作成する。

//ファイル新規作成
# vi /var/named/test.local
$ORIGIN test.local.
$TTL 15M
@ IN SOA ns1.test.local. root.ns1.test.local. (
                                     2022011501   ;Serial
                                             2H   ;Refresh
                                             1H   ;Retry
                                             1D   ;Expire
                                            15M ) ;Minimum
@                                   IN NS  ns1.test.local.
@                                   IN NS  ns2.test.local.

; SECURE Service
ns1                     IN      A       192.168.11.11
ns2                     IN      A       192.168.11.12

192.168.11.0/24ゾーンの準備

新規で,192.168.11.0/24向けのゾーンを作成する。

//ファイル新規作成
# vi /var/named/192.168.11.rev
$ORIGIN test.local.
$TTL 15M
@ IN SOA ns1.test.local. root.ns1.test.local. (
                                     2022011501   ;Serial
                                             2H   ;Refresh
                                             1H   ;Retry
                                             1D   ;Expire
                                            15M ) ;Minimum
@                                   IN NS  ns1.test.local.
@                                   IN NS  ns2.test.local.

; SECURE Service
ns1                     IN      A       192.168.11.11
ns2                     IN      A       192.168.11.12

スレイブ(slave)の構築

named.confの準備

修正した箇所は、太字の★マークでコメントを付けておく。 スレイブ側はマスタからゾーンファイを受信する設定のみで、個別に作成は不要。

# vi /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 port 53 { 192.168.11.12; }; ← ★自分の環境に合わせてスレイブのIP
//      listen-on-v6 port 53 { ::1; }; ← ★v6はコメントアウト
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
//      allow-query     { localhost; }; ← ★コメントアウト
        allow-query     { 192.168.11.0/24; localhost; }; ←★自ネットワークのみクエリ許可

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;
        forwarders { 8.8.8.8; }; ← ★構築したDNSサーバで名前解決できない場合、8.8.8.8へ問い合わせ
        forward only; ← ★8.8.8.8へ問い合わせ回答が来なければエラーで返す

        dnssec-enable yes;
        dnssec-validation yes;

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

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

//zone "." IN { ← ★rootのサーバには問い合わせ不要のため一式コメントアウト
//      type hint;
//      file "named.ca";
//};

zone "test.local" IN { ← ★test.localゾーンの保存場所を指定
        type slave;
        file "slaves/test.local.slave";
        masters {
            192.168.11.11; ← ★マスタサーバのIPを指定
        };
};

zone "11.168.192.in-addr.arpa" IN { ★192~ゾーンの保存場所を指定
        type slave;
        file "slaves/192.168.11.rev.slave";
        masters {
            192.168.11.11; ★マスタサーバのIPを指定
        };
};

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

動作確認(マスタ)

簡易動作確認で起動済みのため、restartで設定を読み込みなおす。

//サービス再起動
# systemctl restart named.service

//ステータス確認
# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 22:06:27 JST; 42min ago
  Process: 5682 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 5699 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 5695 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Check>
 Main PID: 5700 (named)
    Tasks: 11 (limit: 49318)
   Memory: 63.7M
   CGroup: /system.slice/named.service
           mq5700 /usr/sbin/named -u named -c /etc/named.conf

作成した正引き(test.local)、逆引き(192~)のゾーンに対する動作確認を、スレイブ側から実施しておくとよい。

dig実行後は、ANSWERセクションに想定した結果が出力されていることを確認。

//test.localゾーンのnsレコードを、スレイブ側からマスタのIPを指定して確認
# dig @192.168.11.11 test.local ns

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @192.168.11.11 test.local ns
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60768
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 059509cacd3f32a540de53aa61e2d18d589ce56eaf81ebf1 (good)
;; QUESTION SECTION:
;test.local.                    IN      NS

;; ANSWER SECTION:
test.local.             900     IN      NS      ns2.test.local.
test.local.             900     IN      NS      ns1.test.local.

;; ADDITIONAL SECTION:
ns1.test.local.         900     IN      A       192.168.11.11
ns2.test.local.         900     IN      A       192.168.11.12

;; Query time: 1 msec
;; SERVER: 192.168.11.11#53(192.168.11.11)
;; WHEN: 土  1月 15 22:52:12 JST 2022
;; MSG SIZE  rcvd: 135


//soaレコード確認
# dig @192.168.11.11 test.local soa

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @192.168.11.11 test.local soa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20707
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: c4597f7077233ba30011ce5361e2d1ea7c32fab3e519cbb4 (good)
;; QUESTION SECTION:
;test.local.                    IN      SOA

;; ANSWER SECTION:
test.local.             900     IN      SOA     ns1.test.local. root.ns1.test.local. 2022011501 7200 3600 86400 900

;; AUTHORITY SECTION:
test.local.             900     IN      NS      ns2.test.local.
test.local.             900     IN      NS      ns1.test.local.

;; ADDITIONAL SECTION:
ns1.test.local.         900     IN      A       192.168.11.11
ns2.test.local.         900     IN      A       192.168.11.12

;; Query time: 0 msec
;; SERVER: 192.168.11.11#53(192.168.11.11)
;; WHEN: 土  1月 15 22:53:46 JST 2022
;; MSG SIZE  rcvd: 176



//作成した正引きのAレコードを確認
# dig @192.168.11.11 ns1.test.local

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @192.168.11.11 ns1.test.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53894
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 541a2ac66221ef4675bf287261e2d24b3dba3fc020462f1e (good)
;; QUESTION SECTION:
;ns1.test.local.                        IN      A

;; ANSWER SECTION:
ns1.test.local.         900     IN      A       192.168.11.11

;; AUTHORITY SECTION:
test.local.             900     IN      NS      ns2.test.local.
test.local.             900     IN      NS      ns1.test.local.

;; ADDITIONAL SECTION:
ns2.test.local.         900     IN      A       192.168.11.12

;; Query time: 1 msec
;; SERVER: 192.168.11.11#53(192.168.11.11)
;; WHEN: 土  1月 15 22:55:23 JST 2022
;; MSG SIZE  rcvd: 135



//ns2のAレコード確認
# dig @192.168.11.11 ns2.test.local

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @192.168.11.11 ns2.test.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29778
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: cbf49af4788d0c870286137a61e2d24e5b2230f24881c533 (good)
;; QUESTION SECTION:
;ns2.test.local.                        IN      A

;; ANSWER SECTION:
ns2.test.local.         900     IN      A       192.168.11.12

;; AUTHORITY SECTION:
test.local.             900     IN      NS      ns2.test.local.
test.local.             900     IN      NS      ns1.test.local.

;; ADDITIONAL SECTION:
ns1.test.local.         900     IN      A       192.168.11.11

;; Query time: 0 msec
;; SERVER: 192.168.11.11#53(192.168.11.11)
;; WHEN: 土  1月 15 22:55:26 JST 2022
;; MSG SIZE  rcvd: 135

所持していないゾーン以外のレコードを、8.8.8.8へ問い合わせしているか確認

//名前解決できていることを確認
# dig @192.168.11.11 www.yahoo.co.jp

; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> @192.168.11.11 www.yahoo.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44466
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: f513dbbc172da2c766661a1061e2d30436adec08c6344fba (good)
;; QUESTION SECTION:
;www.yahoo.co.jp.               IN      A

;; ANSWER SECTION:
www.yahoo.co.jp.        610     IN      CNAME   edge12.g.yimg.jp.
edge12.g.yimg.jp.       36      IN      A       182.22.28.252

;; Query time: 22 msec
;; SERVER: 192.168.11.11#53(192.168.11.11)
;; WHEN: 土  1月 15 22:58:28 JST 2022
;; MSG SIZE  rcvd: 116


//上記だけの内容では、信用できないため、マスタ側でパケットをキャプチャしてみる。
# tcpdump port 53 -n

//キャプチャした結果、8.8.8.8とクエリのやりとをしているため想定通り
23:00:55.885640 IP 192.168.11.12.56413 > 192.168.11.11.domain: 44959+ [1au] A? www.yahoo.co.jp. (56)
23:00:55.886331 IP 192.168.11.11.50546 > 8.8.8.8.domain: 47538+% [1au] A? edge12.g.yimg.jp. (57)
23:00:55.890887 IP 8.8.8.8.domain > 192.168.11.11.50546: 47538 1/0/1 A 182.22.25.124 (61)
23:00:55.891430 IP 192.168.11.11.domain > 192.168.11.12.56413: 44959 2/0/1 CNAME edge12.g.yimg.jp., A 182.22.25.124 (116)

逆引きのsoa、ns、ptrの動作確認ログは、一部のみ抜粋とする。

# dig @192.168.11.11 11.168.192.in-addr.arpa. soa
;; ANSWER SECTION:
11.168.192.in-addr.arpa. 900    IN      SOA     ns1.test.local. root.ns1.test.local. 2022011501 7200 3600 86400 900

# dig @192.168.11.11 11.168.192.in-addr.arpa. ns
;; ANSWER SECTION:
11.168.192.in-addr.arpa. 900    IN      NS      ns1.test.local.
11.168.192.in-addr.arpa. 900    IN      NS      ns2.test.local.

# dig @192.168.11.11 -x 192.168.11.11 ★逆引きのns1
;; ANSWER SECTION:
11.11.168.192.in-addr.arpa. 900 IN      PTR     ns1.test.local.

# dig @192.168.11.11 -x 192.168.11.12 ★逆引きのns2
;; ANSWER SECTION:
12.11.168.192.in-addr.arpa. 900 IN      PTR     ns2.test.local.

動作確認(スレイブ)

マスタ同様、サービスを再起動しステータスを確認する。スレイブは再起動したタイミングでゾーンファイルをマスタより受信する。

//サービス再起動
# systemctl restart named.service

//マスタから正引き、逆引きのゾーンを受信していること
# systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 22:16:45 JST; 52min ago
  Process: 8186 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 8201 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 8198 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else ec>
 Main PID: 8203 (named)
    Tasks: 4 (limit: 11228)
   Memory: 53.0M
   CGroup: /system.slice/named.service
           mq8203 /usr/sbin/named -u named -c /etc/named.conf

 1月 15 22:16:45 pop named[8203]: transfer of 'test.local/IN' from 192.168.11.11#53: Transfer status: success
 1月 15 22:16:45 pop named[8203]: transfer of 'test.local/IN' from 192.168.11.11#53: Transfer completed: 1 messages, 6 records, 173 bytes, 0.>
 1月 15 22:16:45 pop named[8203]: zone test.local/IN: sending notifies (serial 2022011501)
 1月 15 22:16:45 pop named[8203]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
 1月 15 22:16:45 pop named[8203]: zone 11.168.192.in-addr.arpa/IN: Transfer started.
 1月 15 22:16:45 pop named[8203]: transfer of '11.168.192.in-addr.arpa/IN' from 192.168.11.11#53: connected using 192.168.11.12#48311
 1月 15 22:16:45 pop named[8203]: zone 11.168.192.in-addr.arpa/IN: transferred serial 2022011501
 1月 15 22:16:45 pop named[8203]: transfer of '11.168.192.in-addr.arpa/IN' from 192.168.11.11#53: Transfer status: success
 1月 15 22:16:45 pop named[8203]: transfer of '11.168.192.in-addr.arpa/IN' from 192.168.11.11#53: Transfer completed: 1 messages, 6 records, >
 1月 15 22:16:45 pop named[8203]: zone 11.168.192.in-addr.arpa/IN: sending notifies (serial 2022011501)

# ll /var/named/slaves/* ★slave側にゾーンファイルが保存されたこと確認
-rw-r--r--. 1 named named 341  1月 15 22:16 /var/named/slaves/192.168.11.rev.slave
-rw-r--r--. 1 named named 267  1月 15 22:16 /var/named/slaves/test.local.slave

スレイブ側の動作確認は、マスタ側と同じ内容で正引き、逆引き、再帰問い合わせを確認すればよいため割愛する。

マスタ側から「dig@192.168.11.12 ~~~~」で動作確認すれば、おそらく同じ結果になる。

タイトルとURLをコピーしました