Why does Ruby Resolv::DNS return truncated dns replies?

Solution Verified - Updated -

Issue

  • Ruby Resolv::DNS silently returns truncated dns replies when the dns response does not fit into the hardcoded 512 byte limit.
  • For example: In larger MS AD domains, the KDC list may contain a larger set of servers which requires upgrading the dns connection to tcp.
  • dig upgrades to TCP:
#  dig _kerberos._tcp.$(domainname) SRV +short
;; Truncated, retrying in TCP mode.
  • Whereas this code only returns an incomplete list:
ruby
require 'resolv'
domain = 'domainname'
query_record = "_kerberos._tcp." + domain

kdclist = Array.new
records = Resolv::DNS::new.getresources(
  query_record,
  Resolv::DNS::Resource::IN::SRV
)

if !records.empty?
  kdclist = records.map { |record| record.target.to_s }
  puts kdclist
end

Environment

  • Red Hat Enterprise Linux 6.

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.