SUSE Linux DNS の動作チェック、ゾーンのメンテナンス

今回説明するのは SUSE Linux (SLES12sp3) で動作する Bind9 です。

「ネットワークの調子が悪い」

とか言われると真っ先に疑われるのが DNS serviceです。ここでは SUSE Linux Enterprise 11/12 Bind の再起動dig での調査方法について説明します。




- SUSE Linux SLES12 での Bind DNS のサービスの再起動 -

SLE12 以降は、従来の initd の代わりに systemd が使われています。

rcnamed は /etc/init.d/named スクリプトのシンボリックリンクです。

dns2:~ # whereis rcnamed
rcnamed: /usr/sbin/rcnamed
dns2:~ # ls /usr/sbin/rcnamed -al
lrwxrwxrwx 1 root root 17 Jun 18 2018 /usr/sbin/rcnamed -> /etc/init.d/named
dns2:~ #
dns2:~ # ls /etc/init.d/named -l
-rwxr-xr-- 1 root root 10590 Jun 29 2017 /etc/init.d/named
dns2:~ #


SLES12より init から systemd に置き換わりました。

dns2:~ # rcnamed restart
redirecting to systemctl restart named.service

dns2:~ # tail -n10 /var/log/messages
2019-11-08T14:19:33.172180+09:00 dns2 named[10386]: couldn't add command channel ::1#953: address not available
2019-11-08T14:19:33.172264+09:00 dns2 named[10386]: managed-keys-zone: loaded serial 0
2019-11-08T14:19:33.172348+09:00 dns2 named[10386]: zone intra/IN: loaded serial 2018061800
2019-11-08T14:19:33.172521+09:00 dns2 named[10386]: zone i.islandcenter.jp/IN: loaded serial 2019072503
2019-11-08T14:19:33.172606+09:00 dns2 named[10386]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 42
2019-11-08T14:19:33.172689+09:00 dns2 named[10386]: zone localhost/IN: loaded serial 42
2019-11-08T14:19:33.172773+09:00 dns2 named[10386]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
2019-11-08T14:19:33.172857+09:00 dns2 named[10386]: all zones loaded
2019-11-08T14:19:33.172940+09:00 dns2 named[10386]: running
2019-11-08T14:19:33.173030+09:00 dns2 named[10333]: Starting name server BIND ..done
dns2:~ #


YaST(yast2) では System > Service Manager より "named"自動起動停止再起動ログの確認がマウス操作だけでできます。キーボードをほとんど使わないので、どうしても SUSE Linux 管理者はモノグサになります。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_15395446.png

- SUSE Linux SLES11 での Bind DNS のサービスの再起動 -

SLE11までは、古い initd で制御されています。

dns3:~ # rcnamed restart
Shutting down name server BIND waiting for named to shut down (28s) done
Starting name server BIND done
dns3:~ #
dns3:~ # ↓ 正しく動いているかどうか、エラーがないか /var/log/messages の tail を確認
dns3:~ #
dns3:~ # tail /var/log/messages
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: A.E.F.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: B.E.F.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: command channel listening on 127.0.0.1#953
Nov 8 16:09:41 dns3 named[27596]: the working directory is not writable
Nov 8 16:09:41 dns3 named[27596]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
Nov 8 16:09:41 dns3 named[27596]: zone intra/IN: loaded serial 2016051901
Nov 8 16:09:41 dns3 named[27596]: zone i.islandcenter.jp/IN: loaded serial 2019072503
Nov 8 16:09:41 dns3 named[27596]: zone localhost/IN: loaded serial 42
Nov 8 16:09:41 dns3 named[27596]: running
dns3:~ #



- dig の基本的な使い方 -

dig は bind の推奨標準ツールです。 Windows で使う場合、dig コマンドは https://www.isc.org/ よりパッケージのバイナリがダウンロードできます。

Windowsでnslookupの代わりにdigコマンドでDNSを調べる(BIND編)


- デフォルトで指定しているDNSがインターネットの host.another.com の名前解決をしているか -

[構文]# dig host.another.com

サンプル

sle15:~ # dig www.google.com
; <<>> DiG 9.11.2 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35459
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  <---- 問い合わせ内容
;www.google.com. IN A
;; ANSWER SECTION: <---- 回答内容
www.google.com. 25 IN A 172.217.27.68
;; AUTHORITY SECTION:
google.com. 167592 IN NS ns2.google.com.
google.com. 167592 IN NS ns4.google.com.
google.com. 167592 IN NS ns3.google.com.
google.com. 167592 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 167592 IN A 216.239.32.10
ns2.google.com. 167592 IN A 216.239.34.10
ns3.google.com. 167592 IN A 216.239.36.10
ns4.google.com. 167592 IN A 216.239.38.10
ns1.google.com. 167592 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 167592 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 167592 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 167592 IN AAAA 2001:4860:4802:38::a
;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Fri Nov 08 15:47:17 JST 2019
;; MSG SIZE rcvd: 307
sle15:~ #

- 明示的にDNSを指定してそのDNSサーバーが正しく動いているか -

原因が、自LANのDNSではなく、大元の ISP の DNS の場合もあります。

[構文]# dig @MyISPsDNS host.another.com

サンプル

sle15~ # dig @192.168.1.3 www.google.com
; <<>> DiG 9.11.2 <<>> @192.168.1.3 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18969
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 27
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  <---- 問い合わせ内容
;www.google.com. IN A
;; ANSWER SECTION: <---- 回答内容
www.google.com. 80 IN A 172.217.25.196
;; AUTHORITY SECTION: <----- ゾーンのマスターは?
com. 172795 IN NS h.gtld-servers.net.
com. 172795 IN NS k.gtld-servers.net.
com. 172795 IN NS m.gtld-servers.net.
com. 172795 IN NS a.gtld-servers.net.
com. 172795 IN NS i.gtld-servers.net.
com. 172795 IN NS c.gtld-servers.net.
com. 172795 IN NS j.gtld-servers.net.
com. 172795 IN NS g.gtld-servers.net.
com. 172795 IN NS d.gtld-servers.net.
com. 172795 IN NS b.gtld-servers.net.
com. 172795 IN NS e.gtld-servers.net.
com. 172795 IN NS l.gtld-servers.net.
com. 172795 IN NS f.gtld-servers.net.
;; ADDITIONAL SECTION:   <---- ゾーンマスターの IP アドレス
a.gtld-servers.net. 172795 IN A 192.5.6.30 <-- A は IpV4
a.gtld-servers.net. 172795 IN AAAA 2001:503:a83e::2:30 <--- AAAA はIpV6
b.gtld-servers.net. 172795 IN A 192.33.14.30
b.gtld-servers.net. 172795 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 172795 IN A 192.26.92.30
c.gtld-servers.net. 172795 IN AAAA 2001:503:83eb::30
d.gtld-servers.net. 172795 IN A 192.31.80.30
d.gtld-servers.net. 172795 IN AAAA 2001:500:856e::30
e.gtld-servers.net. 172795 IN A 192.12.94.30
e.gtld-servers.net. 172795 IN AAAA 2001:502:1ca1::30
f.gtld-servers.net. 172795 IN A 192.35.51.30
f.gtld-servers.net. 172795 IN AAAA 2001:503:d414::30
g.gtld-servers.net. 172795 IN A 192.42.93.30
g.gtld-servers.net. 172795 IN AAAA 2001:503:eea3::30
h.gtld-servers.net. 172795 IN A 192.54.112.30
h.gtld-servers.net. 172795 IN AAAA 2001:502:8cc::30
i.gtld-servers.net. 172795 IN A 192.43.172.30
i.gtld-servers.net. 172795 IN AAAA 2001:503:39c1::30
j.gtld-servers.net. 172795 IN A 192.48.79.30
j.gtld-servers.net. 172795 IN AAAA 2001:502:7094::30
k.gtld-servers.net. 172795 IN A 192.52.178.30
k.gtld-servers.net. 172795 IN AAAA 2001:503:d2d::30
l.gtld-servers.net. 172795 IN A 192.41.162.30
l.gtld-servers.net. 172795 IN AAAA 2001:500:d937::30
m.gtld-servers.net. 172795 IN A 192.55.83.30
m.gtld-servers.net. 172795 IN AAAA 2001:501:b1f9::30
;; Query time: 381 msec
;; SERVER: 192.168.1.3#53(192.168.1.3)
;; WHEN: Fri Nov 08 15:56:02 JST 2019
;; MSG SIZE rcvd: 855
sle15:~ #



- イントラネット向けDNSは正しく LAN 機器のIPアドレスを返すか -

[構文] # dig @DnsIPorDnsHostName myhost.mynet.com

サンプル

sle15:~ # dig @dns2 quanbe.i.islandcenter.jp

; <<>> DiG 9.11.2 <<>> @dns2 quanbe.i.islandcenter.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20621
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;quanbe.i.islandcenter.jp. IN A

;; ANSWER SECTION:         <---- 回答 ↓
quanbe.i.islandcenter.jp. 172800 IN A 192.168.1.237

;; AUTHORITY SECTION: <--- ゾーンマスター↓
i.islandcenter.jp. 172800 IN NS dns3.i.islandcenter.jp.
i.islandcenter.jp. 172800 IN NS dns2.i.islandcenter.jp.

;; ADDITIONAL SECTION:
dns2.i.islandcenter.jp. 172800 IN A 192.168.1.2
dns3.i.islandcenter.jp. 172800 IN A 192.168.1.3

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Fri Nov 08 16:18:35 JST 2019
;; MSG SIZE rcvd: 139

sle15:~ #

- DNS のバージョンがバレていないか -

外部にむき出しのDNSは、バージョン固有のバグで悪さをされない様、バージョンを隠しておきます。

[構文] # dig @dns  CHAOS VERSION.BIND TXT

サンプル


sle15:~ # dig @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT

; <<>> DiG 9.11.2 <<>> @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46470
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;VERSION.BIND. CH TXT

;; ANSWER SECTION:       <---- バレバレ ↓
VERSION.BIND. 0 CH TXT "9.9.9-P1"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Nov 18 14:14:53 JST 2019
;; MSG SIZE rcvd: 88

sle15:~ #

この様にバージョンがバレバレにならない様、yast > Network Services > DNS Server の ”Basic Options” の Option の項目に "Version" を空欄にするか、"unknown" の様な ”任意の文字列” を追加(Add)しておきます。あまり過激な文字列を書いておくと、ある種の「ヤル気」を起こす輩がいますから、穏当にしておくのが無難です。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_14380201.png
※ SUSE Linux で DNS を YaST で設定した場合、named.conf は /var/lib/named/etc の下に作られます。細かなパラメータの設定は必ず YaST を使う事をお勧めします。

dns2:~ # grep 99 /var/lib/named/etc/named.conf
version "99.99.99";
dns2:~ #


dig を実行するとこんな感じになりました。

sle15:~ # dig @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT

; <<>> DiG 9.11.2 <<>> @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18773
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;VERSION.BIND. CH TXT

;; ANSWER SECTION  <---- バージョンを誤魔化した ↓
VERSION.BIND. 0 CH TXT "99.99.99"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Nov 18 14:31:52 JST 2019
;; MSG SIZE rcvd: 88

sle15:~ #





- SUSE Linux での DNS ゾーンのレコードメンテナンス -

SUSE Linux (SLES/openSUSE) では yast を使って、ゾーンとレコードのメンテナンスをします。Bind DNSのインストールから初期設定、僅かな変更などのメンテナンスには間違えがなく便利です。

dns2:~ # yast

テキスト版 yast > Network Services > DNS server へ TAB キーで移動し、DNS Zones から、ゾーンファイルを Edit します。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_17311881.png

GUI版はこのような感じです。

dns2:~ # yast2 &

GUI版 yast2 > Network Services > DNS server

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_17315679.png

OK ボタンを押すと、自動的に named がリスタートします。

ただし、構文や設定、 /etc/resolve.conf に問題があると、保存して再起動は行われません。設定内容を確認して、再設定します。


- メンドクサイのでゾーンファイルをまとめてテキストエディタで書き換える -

yastでイチイチ、レコードのメンテなんてやってられねぇよ、LibreOFfice Calc で作った100 レコード位、csv で一発で追加したいんだ、という時はテキストエディタで、ゾーンファイルを編集すると良いでしょう。

# vi /var/lib/named/master/MYZONE


# gedit /var/lib/named/master/MYZONE &

でまとめて、ゾーンの変更、シリアル番号のメンテナンスを行います。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_18071518.png

ゾーンファイルを保存したら

# rndc reload

を実行するか、影響が小さい場合 # rcnamed restart します。

dns2:~ # rndc reload
server reload successful
dns2:~ #


- そのIPはキャッシュされてる? -

DNSが正しくホスト情報をキャッシュしているかどうかは rndc dumpdb コマンドでダンプして確認できます。キャッシュをダンプした後、/var/lib/named/log/named_dump.db の内容を確認します。


dns2:~ # rndc dumpdb
dns2:~ # grep suse.com /var/lib/named/log/named_dump.db
3090 PTR suse.com.gr.
3090 PTR suse.com.pl.
3090 PTR suse.com.tr.
suse.com. 552 A 130.57.66.19
dns2:~ #


--
速攻 1分で DNS on SUSE12 by YaST(YaST で DNS のインストール)

SUSE Linux 10 : YaST で イントラネットDNS サーバを設定

SUSE Linux で Dynamic DNS(DDNS) を作る








by islandcenter | 2019-11-09 18:00 | SUSE | Comments(0)