Resolv 클래스

Resolv 클래스

Resolv는 Ruby로 작성된, 스레드 인지(thread-aware) DNS 리졸버(resolver) 라이브러리예요. Resolv는 여러 DNS 요청을 전체 Ruby 인터프리터를 막지 않고(blocking) 동시에 처리할 수 있어요.

출처: Ruby 4.0 API

본문

libc의 리졸버를 Resolv로 바꾸려면 resolv-replace.rb를 함께 참고하세요. DNS 모듈을 직접 사용하면 다양한 DNS 리소스를 조회할 수 있어요.

예시를 볼게요:

p Resolv.getaddress "www.ruby-lang.org"
p Resolv.getname "210.251.121.214"

Resolv::DNS.open do |dns|
  ress = dns.getresources "www.ruby-lang.org", Resolv::DNS::Resource::IN::A
  p ress.map(&:address)
  ress = dns.getresources "ruby-lang.org", Resolv::DNS::Resource::IN::MX
  p ress.map { |r| [r.exchange.to_s, r.preference] }
end

알려진 문제 (Bugs)

  • NIS는 지원되지 않아요.
  • /etc/nsswitch.conf는 지원되지 않아요.

상수 (Constants)

  • AddressRegex
  • DefaultResolver
  • VERSION

Public Class Methods

each_address(name, &block)

name에 대한 모든 IP 주소를 반복(iterate)해요.

each_name(address, &proc)

address에 대한 모든 호스트 이름을 반복해요.

getaddress(name)

name에 대한 첫 번째 IP 주소를 조회해요.

getaddresses(name)

name에 대한 모든 IP 주소를 조회해요.

getname(address)

address의 호스트 이름을 조회해요.

getnames(address)

address에 대한 모든 호스트 이름을 조회해요.

new(resolvers = nil, use_ipv6: nil)

resolvers를 사용해 새 Resolv를 만들어요. resolvers가 주어지지 않거나 해시 또는 nil이면 Hosts 리졸버와 DNS 리졸버를 사용해요. resolvers가 해시면 그 해시를 DNS 리졸버의 설정으로 사용해요.

Public Instance Methods

each_address(name) { |name| ... }

name에 대한 모든 IP 주소를 반복해요.

each_name(address) { |name| ... }

address에 대한 모든 호스트 이름을 반복해요.

getaddress(name)

name에 대한 첫 번째 IP 주소를 조회해요.

getaddresses(name)

name에 대한 모든 IP 주소를 조회해요.

getname(address)

address의 호스트 이름을 조회해요.

getnames(address)

address에 대한 모든 호스트 이름을 조회해요.