ルートゾーンサーバが返すルートサーバのA/AAAAのTTLがルートのNSよりも長い場合があることに気付いた。なんでそうなっているのかはわからない。
#!/bin/sh for s in $(dig | awk '$1=="." && $4 == "NS" { print $5 }' | sort); do echo "======================================== $s" dig @$s . ns +norec +edn=0 dig @$s root-servers.net. soa +norec +edn=0 dig @$s version.bind txt chaos +norec +edn=0 done
TTLを調べた結果
. NS | . A | *.root-servers.net. NS/A | version.bind TXT | |
---|---|---|---|---|
a | 518400 | 518400 or 3600000 | 3600000 | This space intentionally left blank. |
b | 518400 | 3600000 | 3600000 | 4.8.1 |
c | 518400 | 3600000 | 3600000 | c-root |
d | 518400 | 3600000 | 3600000 | BIND 9.8 |
e | 518400 | 518400 | 3600000 | REFUSED |
f | 518400 | 3600000 | 3600000 | 9.9.6-P1 |
g | 518400 | 3600000 | 3600000 | REFUSED |
h | 518400 | 518400 | 3600000 | NSD 4.1.0 |
i | 518400 | 3600000 | 3600000 | contact info@netnod.se |
j | 518400 | 3600000 | 3600000 | This space intentionally left blank |
k | 518400 | 518400 | 3600000 | NSD 3.2.14 |
l | 518400 | 518400 | 3600000 | NSD 4.1.0 |
m | 518400 | 3600000 | 3600000 | 9.9.4-P2 |
さすがに ". NS" のTTLや "*.root-servers.net. NS/A/AAAA" のTTLはゾーン転送で同期が取れていてどれも同じだった。
そもそも . NS? の問い合わせでADDITIONALセクションに *.root-servers.net. の A が入って返ってくるということは、 . と root-servers.net. の両方の権威になっているということである。ルートゾーンはnet.を委譲しているのでAのゾーンデータをもっていないはずなのに答えられるとうことはroot-server.net.のゾーンデータをもっているはずだ、という理屈。であれば [a-m].root-servers.net. . A? の問い合わせで返ってくる A は同じじゃないとおかしい。
あと a.root-servers.net. は2種類TTLを返してくる。anycastになっているんだろうか。