Querying DNS

Tags:

DNS에 Recursive query가 가능한지 체크하는 도구입니다.

#!/usr/local/bin/ruby -w

# == Synopsis
# Test whether a given DNS supports DNS query. If the result is
# "Yes", then you should modify DNS server setting ASAP.
#
# == Usage
# recursive_dns.rb [dns server ip]
#  - ex> ./recursive_dns.rb 123.456.789.012
#
# == Author
# h4q0

require "resolv"
require "rdoc/usage"

if ARGV.length != 1
    RDoc::usage
end

name = "123.456.789.012"
nameserver = ARGV[0]

puts "Querying nameserver:#{nameserver} for ip:#{name}"

config = Resolv::DNS::Config.new
msg = Resolv::DNS::Message.new
msg.add_question(name, Resolv::DNS::Resource::IN::A)
requester = Resolv::DNS::Requester::ConnectedUDP.new(nameserver)
q = Queue.new
sender = requester.sender(msg, name, q, nameserver)
sender.send

reply = reply_name = nil

timeout(1, RuntimeError.new("Timeout")) { reply, reply_name = q.pop }

requester.close

puts "Recursive query turned on? #{reply.ra == 1 ? "Yes": "No"}"

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *