自分のBlogを自宅サーバに移転していてDNSのゾーンファイルを弄っていたのですが変な挙動をしたのでメモします。
バージョンはUbuntuのパッケージ最新版の
sakura# named -v
BIND 9.7.0-P1
sakura#
です。
IPv6ユーザとしてはAレコードよりAAAAレコードが好きなので以下のようにゾーンを定義しました。
ゾーンファイル(Before)
sakura# cat yutarommx.com.zone
$TTL 180
@ IN SOA yutarommx.com. yutaro.mykw.jp. (
2012041506 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
15M) ; minimum
IN NS ns0.mykw.jp.
IN NS ns1.mykw.jp.
IN AAAA 240f:1:33f2:1::beef
www IN AAAA 240f:1:33f2:1::beef
IN A 124.214.243.203
www IN A 124.214.243.203
tumblr IN A 72.32.231.8
そうしたところ、家のPCからはBlogが見えるのですが、リモートで繋いでいた会社(IPv4)から閲覧ができないorz
何だろなとおもい、自宅サーバから dig してみたところ、以下のような結果が。
AAAAレコードの結果(Before)
micro# dig @ns0.mykw.jp yutarommx.com aaaa
; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com aaaa
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51434
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;yutarommx.com. IN AAAA
;; ANSWER SECTION:
yutarommx.com. 180 IN AAAA 240f:1:33f2:1::beef
;; AUTHORITY SECTION:
yutarommx.com. 180 IN NS ns1.mykw.jp.
yutarommx.com. 180 IN NS ns0.mykw.jp.
;; ADDITIONAL SECTION:
ns0.mykw.jp. 180 IN A 49.212.22.200
ns0.mykw.jp. 180 IN AAAA 2001:e41:31d4:16c8::1
ns1.mykw.jp. 180 IN A 183.181.172.61
ns1.mykw.jp. 180 IN AAAA 2001:2e8:603:0:2:1:0:3d
;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:08:35 2012
;; MSG SIZE rcvd: 190
Aレコードの結果(Before)
micro# dig @ns0.mykw.jp yutarommx.com a
; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com a
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50777
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;yutarommx.com. IN A
;; AUTHORITY SECTION:
yutarommx.com. 180 IN SOA yutarommx.com. yutaro.mykw.jp. 2012041509 10800 900 604800 900
;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:08:30 2012
;; MSG SIZE rcvd: 81
むむ!!?
Aレコードが引けてない・・・・
ということで以下のように書き換えてみたところ・・・
ゾーンファイル(Before2)
sakura# cat yutarommx.com.zone
$TTL 180
@ IN SOA yutarommx.com. yutaro.mykw.jp. (
2012041510 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
15M) ; minimum
IN NS ns0.mykw.jp.
IN NS ns1.mykw.jp.
IN A 124.214.243.203
www IN A 124.214.243.203
IN AAAA 240f:1:33f2:1::beef
www IN AAAA 240f:1:33f2:1::beef
tumblr IN A 72.32.231.8
AAAAレコードの結果(Before2)
micro# dig @ns0.mykw.jp yutarommx.com aaaa
; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com aaaa
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;yutarommx.com. IN AAAA
;; AUTHORITY SECTION:
yutarommx.com. 180 IN SOA yutarommx.com. yutaro.mykw.jp. 2012041510 10800 900 604800 900
;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:29:57 2012
;; MSG SIZE rcvd: 81
Aレコードの結果(Before2)
micro# dig @ns0.mykw.jp yutarommx.com a
; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com a
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37995
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;yutarommx.com. IN A
;; ANSWER SECTION:
yutarommx.com. 180 IN A 124.214.243.203
;; AUTHORITY SECTION:
yutarommx.com. 180 IN NS ns0.mykw.jp.
yutarommx.com. 180 IN NS ns1.mykw.jp.
;; ADDITIONAL SECTION:
ns0.mykw.jp. 180 IN A 49.212.22.200
ns0.mykw.jp. 180 IN AAAA 2001:e41:31d4:16c8::1
ns1.mykw.jp. 180 IN A 183.181.172.61
ns1.mykw.jp. 180 IN AAAA 2001:2e8:603:0:2:1:0:3d
;; Query time: 15 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:29:41 2012
;; MSG SIZE rcvd: 178
今度はAAAAレコードが返ってこない・・・
次にサブドメイン(FQDN)を揃えつつAレコードを優先して定義してみた。
ゾーンファイル(After)
sakura# cat yutarommx.com.zone
$TTL 180
@ IN SOA yutarommx.com. yutaro.mykw.jp. (
2012041507 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
15M) ; minimum
IN NS ns0.mykw.jp.
IN NS ns1.mykw.jp.
IN A 124.214.243.203
IN AAAA 240f:1:33f2:1::beef
www IN A 124.214.243.203
www IN AAAA 240f:1:33f2:1::beef
tumblr IN A 72.32.231.8
AAAAレコードの結果(After)
micro# dig @ns0.mykw.jp yutarommx.com a
; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62064
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;yutarommx.com. IN A
;; ANSWER SECTION:
yutarommx.com. 180 IN A 124.214.243.203
;; AUTHORITY SECTION:
yutarommx.com. 180 IN NS ns1.mykw.jp.
yutarommx.com. 180 IN NS ns0.mykw.jp.
;; ADDITIONAL SECTION:
ns0.mykw.jp. 180 IN A 49.212.22.200
ns0.mykw.jp. 180 IN AAAA 2001:e41:31d4:16c8::1
ns1.mykw.jp. 180 IN A 183.181.172.61
ns1.mykw.jp. 180 IN AAAA 2001:2e8:603:0:2:1:0:3d
;; Query time: 16 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:39:01 2012
;; MSG SIZE rcvd: 178
Aレコードの結果(After)
micro# dig @ns0.mykw.jp yutarommx.com aaaa
; <<>> DiG 9.7.0-P1 <<>> @ns0.mykw.jp yutarommx.com aaaa
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64265
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;yutarommx.com. IN AAAA
;; ANSWER SECTION:
yutarommx.com. 180 IN AAAA 240f:1:33f2:1::beef
;; AUTHORITY SECTION:
yutarommx.com. 180 IN NS ns1.mykw.jp.
yutarommx.com. 180 IN NS ns0.mykw.jp.
;; ADDITIONAL SECTION:
ns0.mykw.jp. 180 IN A 49.212.22.200
ns0.mykw.jp. 180 IN AAAA 2001:e41:31d4:16c8::1
ns1.mykw.jp. 180 IN A 183.181.172.61
ns1.mykw.jp. 180 IN AAAA 2001:2e8:603:0:2:1:0:3d
;; Query time: 16 msec
;; SERVER: 2001:e41:31d4:16c8::1#53(2001:e41:31d4:16c8::1)
;; WHEN: Sun Apr 15 12:39:21 2012
;; MSG SIZE rcvd: 190
micro#
今度はちゃんと返ってきた。
教訓:FQDNはソートしてAAAAレコードはAレコードより後に書こう!(Aレコードを併記する場合)
これって昔の公務員より融通が利かないなw
この辺の挙動はバンディー君に期待しましょう。

追記
ブログを投稿した後に某JP〇〇の @OrangeMorishita 氏からご指摘がございました。
以下、引用文
これ、正しい動作なんじゃないかな。INの前の名前を省略した場合、*直前の行の*継続行になります。
なので、beforeの例ではIN A 124.214.243.203はwwwの継続行だし、before2の例ではIN AAAA 240f:1:33f2:1::beefはwwwの継続行になります。
なるほど、INの前を省略すると勝手にOriginのドメインが補完されると思っていたのですが、
そうではなく空白の場合は前の行の内容を引き継ぐとのことだそうです。
ということは、こんな書き方もできるということですね!
sakura# cat yutarommx.com.zone
$TTL 180
@ IN SOA yutarommx.com. yutaro.mykw.jp. (
2012041513 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
15M) ; minimum
IN NS ns0.mykw.jp.
IN NS ns1.mykw.jp.
IN AAAA 240f:1:33f2:1::beef
IN A 124.214.243.203
www IN A 124.214.243.203
IN AAAA 240f:1:33f2:1::beef
tumblr IN A 72.32.231.8
sakura#
ほんとにこんなんで大丈夫なのかなと思いながら dig してみると。
wktk# dig @ns0.mykw.jp yutarommx.com a +short
124.214.243.203
wktk# dig @ns0.mykw.jp yutarommx.com aaaa +short
240f:1:33f2:1::beef
wktk# dig @ns0.mykw.jp http://www.yutarommx.com a +short
124.214.243.203
wktk# dig @ns0.mykw.jp http://www.yutarommx.com aaaa +short
240f:1:33f2:1::beef
お!ちゃんと引けているではないですか!
ゾーンファイルの内容がわかりづらいのでわかってないと気持ち悪いけど、
ルールがわかってすっきりしました。
森下氏 ありがとうございました!