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 ~~~~」で動作確認すれば、おそらく同じ結果になる。