Resolv 클래스

Resolv 클래스

Resolv는 Ruby로 작성된 스레드 인지(thread-aware) DNS 해석기(resolver) 라이브러리예요. Resolv는 Ruby 인터프리터 전체를 막지 않으면서 여러 DNS 요청을 동시에 처리할 수 있어요. libc 해석기를 Resolv로 대체하려면 resolv-replace.rb도 함께 참고해요.

출처: Ruby 3.3 API

본문

ResolvDNS 모듈을 직접 사용해서 다양한 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: IP 주소를 매칭하는 데 사용하는 주소용 Regexp예요.
  • DefaultResolver: Resolv 클래스 메서드에 사용되는 기본 해석기예요.
  • VERSION: 버전 문자열이에요.

Public Class Methods

each_address(name, &block)

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

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를 만들어요.

Public Instance Methods

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

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

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

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

getaddress(name)

name에 대한 첫 번째 IP 주소를 조회해요. 주소가 없으면 ResolvError를 발생시켜요.

getaddresses(name)

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

getname(address)

address의 호스트 이름을 조회해요. 이름이 없으면 ResolvError를 발생시켜요.

getnames(address)

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