4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dnspythonのnameserversに複数のサーバを指定したときの挙動

Posted at

dnspythonというモジュールの使い方を調べている際に下記のようにfor文を使ってresponseを表示していて素朴な疑問が湧いたのでメモ。

タイトルの結論としては、一般的なプライマリDNS、セカンダリDNSを設定したときと同じような動作の「いずれかから返ってきたらよかろうなのだ」理論で、もし全部から返ってこなくても何度か問い合わせてくれる様子。
ただしSERVFAILというコードが返ってきた場合は再試行対象から外す模様。

以下実験のきっかけ

pythonでdigるための一部
resolver = dns.resolver.Resolver()
resolver.nameservers = [socket.gethostbyname(nameserver)]
for rdata in resolver.query('www.yahoo.com', 'A'):
    print rdata

短絡的にこう考えてしまった。

  • nameserversに複数入れたらresponseが複数になる? ←願望

しかしながら冷静に考えると

  • query結果は複数ある場合があり、それらを表示するため。

どっちがどうなのか分からなかったので試してみた&ソースも読んでみたところ動作的には

  1. nameserversは一般的なプライマリDNS、セカンダリDNSを設定したときと同じような動作
  2. 問い合わせ対象typeの結果が複数存在した場合はrdataに複数入ってくる

というDNSの挙動としては至極真っ当な結果でした。(そうだよな、今考えたらdefaultは既定のDNSの設定なんだし)

以下余談。
なぜ上のような願望があったかというと、特定のゾーンを設定したRoute53のDNSサーバ全てに対して本当にゾーンが設定されているのか確認する必要があり、for文入れたくなさのあまりの思考でした。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?