ip アドレスを逆引きして、名前解決ができないときに、SOAを取得したいのです。言語は、ruby がいいです。どうするのがいいのでしょうか? Resolv を使うとできそうなのですが、記法がよくわかりません。

回答の条件
  • URL必須
  • 1人3回まで
  • 13歳以上
  • 登録:2011/07/13 16:22:55
  • 終了:2011/07/20 16:07:59

回答(2件)

id:iwadon No.1

いわどん回答回数60ベストアンサー獲得回数132011/07/13 18:52:55

ポイント50pt

こういうことですか?

require 'resolv'

soa = Resolv::DNS.new.getresources("google.co.jp", Resolv::DNS::Resource::IN::SOA)
p soa

http://doc.okkez.net/192/view/library/resolv

http://doc.okkez.net/192/view/method/Resolv=DNS/i/getresources

id:kaiketsu

google.co.jp のところに IPアドレスをいれてもうまくいくのでしょうか

2011/07/14 14:50:43
id:iwadon No.2

いわどん回答回数60ベストアンサー獲得回数132011/07/14 16:55:46

ポイント50pt

google.co.jp のところに IPアドレスをいれてもうまくいくのでしょうか

うまくいかないですね。digコマンドを使ってもIPアドレスから素直にSOAを得る方法はわかりませんでした。ただしその場合でもAUTHORITY SECTIONにSOAが含まれているならばそこから拾えば良いのではないかと考えました。

resolvではうまくできませんでしたので、pNet-DNSというgemを使った方法で試しました。

ただし、この方法は逆引きできるIPアドレス(例えばgoogle.co.jp)ではうまくうごかない(SOAを得られない)ので、実際に逆引きできないIPアドレスで試しました。

require 'rubygems'
require 'Net/DNS'
Net::DNS::Resolver.new.query("210.219.133.212", "SOA").answer
# => []
Net::DNS::Resolver.new.query("210.219.133.212", "SOA").authority
#=> [133.219.210.in-addr.arpa.	9756	IN	SOA	nsm.hananet.net. dnsmaster.hanaro.com. (
#					2006010111	; Serial
#					86400	; Refresh
#					3600	; Retry
#					604800	; Expire
#					86400 )	; Minimum TTL]

なお、pNet-DNSのドキュメントは http://pnet-dns.rubyforge.org/ にあります。

また、上記逆引きできないIPアドレスは http://www.hart.co.jp/spam/rejiponly.html に書かれていた例から流用したものです。

id:kaiketsu

うーんやっぱり面倒のようですね。

2011/07/20 16:07:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません