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)
AddressRegexDefaultResolverVERSION
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에 대한 모든 호스트 이름을 조회해요.