2019年 11月 09日
SUSE Linux DNS の動作チェック、ゾーンのメンテナンス
「ネットワークの調子が悪い」
SLE12 以降は、従来の initd の代わりに systemd が使われています。rcnamed は /etc/init.d/named スクリプトのシンボリックリンクです。
dns2:~ # whereis rcnamedrcnamed: /usr/sbin/rcnameddns2:~ # ls /usr/sbin/rcnamed -allrwxrwxrwx 1 root root 17 Jun 18 2018 /usr/sbin/rcnamed -> /etc/init.d/nameddns2:~ #dns2:~ # ls /etc/init.d/named -l-rwxr-xr-- 1 root root 10590 Jun 29 2017 /etc/init.d/nameddns2:~ #SLES12より init から systemd に置き換わりました。dns2:~ # rcnamed restartredirecting to systemctl restart named.servicedns2:~ # tail -n10 /var/log/messages2019-11-08T14:19:33.172180+09:00 dns2 named[10386]: couldn't add command channel ::1#953: address not available2019-11-08T14:19:33.172264+09:00 dns2 named[10386]: managed-keys-zone: loaded serial 02019-11-08T14:19:33.172348+09:00 dns2 named[10386]: zone intra/IN: loaded serial 20180618002019-11-08T14:19:33.172521+09:00 dns2 named[10386]: zone i.islandcenter.jp/IN: loaded serial 20190725032019-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 422019-11-08T14:19:33.172689+09:00 dns2 named[10386]: zone localhost/IN: loaded serial 422019-11-08T14:19:33.172773+09:00 dns2 named[10386]: zone 0.0.127.in-addr.arpa/IN: loaded serial 422019-11-08T14:19:33.172857+09:00 dns2 named[10386]: all zones loaded2019-11-08T14:19:33.172940+09:00 dns2 named[10386]: running2019-11-08T14:19:33.173030+09:00 dns2 named[10333]: Starting name server BIND ..donedns2:~ #
YaST(yast2) では System > Service Manager より "named" の自動起動、停止、再起動、ログの確認がマウス操作だけでできます。キーボードをほとんど使わないので、どうしても SUSE Linux 管理者はモノグサになります。
SLE11までは、古い initd で制御されています。
dns3:~ # rcnamed restartShutting down name server BIND waiting for named to shut down (28s) doneStarting name server BIND donedns3:~ #dns3:~ # ↓ 正しく動いているかどうか、エラーがないか /var/log/messages の tail を確認dns3:~ #dns3:~ # tail /var/log/messagesNov 8 16:09:41 dns3 named[27596]: automatic empty zone: A.E.F.IP6.ARPANov 8 16:09:41 dns3 named[27596]: automatic empty zone: B.E.F.IP6.ARPANov 8 16:09:41 dns3 named[27596]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPANov 8 16:09:41 dns3 named[27596]: command channel listening on 127.0.0.1#953Nov 8 16:09:41 dns3 named[27596]: the working directory is not writableNov 8 16:09:41 dns3 named[27596]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42Nov 8 16:09:41 dns3 named[27596]: zone intra/IN: loaded serial 2016051901Nov 8 16:09:41 dns3 named[27596]: zone i.islandcenter.jp/IN: loaded serial 2019072503Nov 8 16:09:41 dns3 named[27596]: zone localhost/IN: loaded serial 42Nov 8 16:09:41 dns3 named[27596]: runningdns3:~ #
dig は bind の推奨標準ツールです。 Windows で使う場合、dig コマンドは https://www.isc.org/ よりパッケージのバイナリがダウンロードできます。Windowsでnslookupの代わりにdigコマンドでDNSを調べる(BIND編)
[構文]# 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: 855sle15:~ #
[構文] # 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.2dns3.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: 139sle15:~ #
外部にむき出しの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: 88sle15:~ #
この様にバージョンがバレバレにならない様、yast > Network Services > DNS Server の ”Basic Options” の Option の項目に "Version" を空欄にするか、"unknown" の様な ”任意の文字列” を追加(Add)しておきます。あまり過激な文字列を書いておくと、ある種の「ヤル気」を起こす輩がいますから、穏当にしておくのが無難です。
※ 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: 88sle15:~ #
SUSE Linux (SLES/openSUSE) では yast を使って、ゾーンとレコードのメンテナンスをします。Bind DNSのインストールから初期設定、僅かな変更などのメンテナンスには間違えがなく便利です。
dns2:~ # yast
テキスト版 yast > Network Services > DNS server へ TAB キーで移動し、DNS Zones から、ゾーンファイルを Edit します。GUI版はこのような感じです。
dns2:~ # yast2 &
GUI版 yast2 > Network Services > DNS serverOK ボタンを押すと、自動的に named がリスタートします。ただし、構文や設定、 /etc/resolve.conf に問題があると、保存して再起動は行われません。設定内容を確認して、再設定します。
yastでイチイチ、レコードのメンテなんてやってられねぇよ、LibreOFfice Calc で作った100 レコード位、csv で一発で追加したいんだ、という時はテキストエディタで、ゾーンファイルを編集すると良いでしょう。
# vi /var/lib/named/master/MYZONE
か
# gedit /var/lib/named/master/MYZONE &
でまとめて、ゾーンの変更、シリアル番号のメンテナンスを行います。ゾーンファイルを保存したら
# rndc reload
を実行するか、影響が小さい場合 # rcnamed restart します。
dns2:~ # rndc reloadserver reload successfuldns2:~ #
dns2:~ # rndc dumpdbdns2:~ # grep suse.com /var/lib/named/log/named_dump.db3090 PTR suse.com.gr.3090 PTR suse.com.pl.3090 PTR suse.com.tr.suse.com. 552 A 130.57.66.19dns2:~ #