module Ronin::Support::Network::DNS::Mixin
Provides helper methods for performing DNS
queries.
@api public
Public Instance Methods
Queries the first IPv4 address belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The first IPv4 address belonging to the host name.
# File lib/ronin/support/network/dns/mixin.rb, line 383 def dns_get_a_address(name,**kwargs) dns_resolver(**kwargs).get_a_address(name.to_s) end
Queries all IPv4 addresses belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
All of the IPv4 addresses belonging to the host name.
# File lib/ronin/support/network/dns/mixin.rb, line 429 def dns_get_a_addresses(name,**kwargs) dns_resolver(**kwargs).get_a_addresses(name.to_s) end
Queries the first ‘A` record belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::IN::A, nil]
The first `A` DNS record or `nil` if the host name has no `A` records.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/A
# File lib/ronin/support/network/dns/mixin.rb, line 361 def dns_get_a_record(name,**kwargs) dns_resolver(**kwargs).get_a_record(name.to_s) end
Queries all ‘A` records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::IN::A>]
All of the `A` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/A
# File lib/ronin/support/network/dns/mixin.rb, line 407 def dns_get_a_records(name,**kwargs) dns_resolver(**kwargs).get_a_records(name.to_s) end
Queries the first IPv6 address belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The first IPv6 address or `nil` if the host name has no IPv6 addresses.
# File lib/ronin/support/network/dns/mixin.rb, line 477 def dns_get_aaaa_address(name,**kwargs) dns_resolver(**kwargs).get_aaaa_address(name.to_s) end
Queries all IPv6 addresses belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
All IPv6 addresses belonging to the host name.
# File lib/ronin/support/network/dns/mixin.rb, line 523 def dns_get_aaaa_addresses(name,**kwargs) dns_resolver(**kwargs).get_aaaa_addresses(name.to_s) end
Queries the first ‘AAAA` DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::IN::AAAA, nil]
The first `AAAA` DNS record or `nil` if the host name has no `AAAA` records.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/AAAA
# File lib/ronin/support/network/dns/mixin.rb, line 454 def dns_get_aaaa_record(name,**kwargs) dns_resolver(**kwargs).get_aaaa_record(name.to_s) end
Queries all ‘AAAA` DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::IN::AAAA>]
All of the `AAAA` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/AAAA
# File lib/ronin/support/network/dns/mixin.rb, line 501 def dns_get_aaaa_records(name,**kwargs) dns_resolver(**kwargs).get_aaaa_records(name.to_s) end
Looks up the address of a hostname.
@param [String] host
The hostname to lookup.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The address of the hostname.
# File lib/ronin/support/network/dns/mixin.rb, line 114 def dns_get_address(host,**kwargs) dns_resolver(**kwargs).get_address(host.to_s) end
Looks up all addresses of a hostname.
@param [String] host
The hostname to lookup.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
The addresses of the hostname.
# File lib/ronin/support/network/dns/mixin.rb, line 138 def dns_get_addresses(host,**kwargs) dns_resolver(**kwargs).get_addresses(host.to_s) end
Queries all records of the host name using the ‘ANY` DNS
query.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource>]
All of the DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/ANY
# File lib/ronin/support/network/dns/mixin.rb, line 263 def dns_get_any_records(name,**kwargs) dns_resolver(**kwargs).get_any_records(name.to_s) end
Queries the canonical name for the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The canonical name for the host or `nil` if the host has no `CNAME` record.
# File lib/ronin/support/network/dns/mixin.rb, line 311 def dns_get_cname(name,**kwargs) dns_resolver(**kwargs).get_cname(name.to_s) end
Queries the ‘CNAME` record for the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::IN::CNAME, nil]
The `CNAME` record or `nil` if the host name has no `CNAME` record.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/CNAME
# File lib/ronin/support/network/dns/mixin.rb, line 288 def dns_get_cname_record(name,**kwargs) dns_resolver(**kwargs).get_cname_record(name.to_s) end
Queries the ‘HINFO` record for the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::IN::HINFO, nil]
The `HINFO` DNS record or `nil` if the host name has no `HINFO` record.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/HINFO
# File lib/ronin/support/network/dns/mixin.rb, line 336 def dns_get_hinfo_record(name,**kwargs) dns_resolver(**kwargs).get_hinfo_record(name.to_s) end
Queries the ‘LOC` (Location) DNS
record of the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::LOC, nil]
The `LOC` DNS record of the host name or `nil` if the host name has no `LOC` record.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/LOC
# File lib/ronin/support/network/dns/mixin.rb, line 597 def dns_get_loc_record(name,**kwargs) dns_resolver(**kwargs).get_loc_record(name.to_s) end
Queries the mailservers for the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
The host names of the mailservers serving the given host name.
# File lib/ronin/support/network/dns/mixin.rb, line 668 def dns_get_mailservers(name,**kwargs) dns_resolver(**kwargs).get_mailservers(name.to_s) end
Queries the ‘MINFO` (Machine-Info) DNS
record of the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::MINFO, nil]
The `MINFO` DNS record of the host name or `nil` if the host name has no `MINFO` record.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/MINFO
# File lib/ronin/support/network/dns/mixin.rb, line 622 def dns_get_minfo_record(name,**kwargs) dns_resolver(**kwargs).get_minfo_record(name.to_s) end
Queries all ‘MX` DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::MX>]
All `MX` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/MX
# File lib/ronin/support/network/dns/mixin.rb, line 646 def dns_get_mx_records(name,**kwargs) dns_resolver(**kwargs).get_mx_records(name.to_s) end
Looks up the hostname of the address.
@param [String] ip
The IP address to lookup.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The hostname of the address.
# File lib/ronin/support/network/dns/mixin.rb, line 160 def dns_get_name(ip,**kwargs) dns_resolver(**kwargs).get_name(ip.to_s) end
Looks up all hostnames associated with the address.
@param [String] ip
The IP address to lookup.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
The hostnames of the address.
# File lib/ronin/support/network/dns/mixin.rb, line 184 def dns_get_names(ip,**kwargs) dns_resolver(**kwargs).get_names(ip.to_s) end
Queries the nameservers for the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
The host names of the nameservers serving the given host name.
# File lib/ronin/support/network/dns/mixin.rb, line 714 def dns_get_nameservers(name,**kwargs) dns_resolver(**kwargs).get_nameservers(name.to_s) end
Queries all ‘NS` DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::NS>]
All `NS` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/NS
# File lib/ronin/support/network/dns/mixin.rb, line 692 def dns_get_ns_records(name,**kwargs) dns_resolver(**kwargs).get_ns_records(name.to_s) end
Queries the ‘PTR` host name for the IP
address.
@param [String] ip
The IP address to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The host name that points to the given IP.
# File lib/ronin/support/network/dns/mixin.rb, line 761 def dns_get_ptr_name(ip,**kwargs) dns_resolver(**kwargs).get_ptr_name(ip.to_s) end
Queries all ‘PTR` names for the IP
address.
@param [String] ip
The IP address to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
The `PTR` names for the given IP.
# File lib/ronin/support/network/dns/mixin.rb, line 807 def dns_get_ptr_names(ip,**kwargs) dns_resolver(**kwargs).get_ptr_names(ip.to_s) end
Queries the first ‘PTR` DNS
record for the IP
address.
@param [String] ip
The IP address to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::PTR, nil]
The first `PTR` DNS record of the host name or `nil` if the host name has no `PTR` records.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/PTR
# File lib/ronin/support/network/dns/mixin.rb, line 739 def dns_get_ptr_record(ip,**kwargs) dns_resolver(**kwargs).get_ptr_record(ip.to_s) end
Queries all ‘PTR` DNS
records for the IP
address.
@param [String] ip
The IP address to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::PTR>]
All `PTR` DNS records for the given IP.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/PTR
# File lib/ronin/support/network/dns/mixin.rb, line 785 def dns_get_ptr_records(ip,**kwargs) dns_resolver(**kwargs).get_ptr_records(ip.to_s) end
Queries a single matching DNS
record for the host name.
@param [String] name
The host name to query.
@param [:a, :aaaa, :any, :cname, :hinfo, :loc, :minfo, :mx, :ns, :ptr, :soa, :srv, :txt, :wks] record_type
The record type.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource, nil]
The matching DNS records or `nil` if no matching DNS records could be found.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource
# File lib/ronin/support/network/dns/mixin.rb, line 212 def dns_get_record(name,record_type,**kwargs) dns_resolver(**kwargs).get_record(name.to_s,record_type) end
Queries all matching DNS
records for the host name.
@param [String] name
The host name to query.
@param [:a, :aaaa, :any, :cname, :hinfo, :loc, :minfo, :mx, :ns, :ptr, :soa, :srv, :txt, :wks] record_type
The record type.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource>]
All matching DNS records.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource
# File lib/ronin/support/network/dns/mixin.rb, line 239 def dns_get_records(name,record_type,**kwargs) dns_resolver(**kwargs).get_records(name.to_s,record_type) end
Queries the first ‘SOA` DNS
record belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::SOA, nil]
The first `SOA` DNS record for the host name or `nil` if the host name has no `SOA` records.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/SOA
# File lib/ronin/support/network/dns/mixin.rb, line 832 def dns_get_soa_record(name,**kwargs) dns_resolver(**kwargs).get_soa_record(name.to_s) end
Queries all ‘SRV` DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::IN::SRV>]
All `SRV` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/SRV
# File lib/ronin/support/network/dns/mixin.rb, line 547 def dns_get_srv_records(name,**kwargs) dns_resolver(**kwargs).get_srv_records(name.to_s) end
Queiries the first ‘TXT` DNS
record belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Resolv::DNS::Resource::TXT, nil]
The first `TXT` DNS record for the host name or `nil` if the host name has no `TXT` records.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/TXT
# File lib/ronin/support/network/dns/mixin.rb, line 857 def dns_get_txt_record(name,**kwargs) dns_resolver(**kwargs).get_txt_record(name.to_s) end
Queries all ‘TXT` DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::TXT>]
All of the `TXT` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/TXT
# File lib/ronin/support/network/dns/mixin.rb, line 904 def dns_get_txt_records(name,**kwargs) dns_resolver(**kwargs).get_txt_records(name.to_s) end
Queries the first ‘TXT` string belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [String, nil]
The first `TXT` string belonging to the host name or `nil` if the host name has no `TXT` records.
# File lib/ronin/support/network/dns/mixin.rb, line 880 def dns_get_txt_string(name,**kwargs) dns_resolver(**kwargs).get_txt_string(name.to_s) end
Queries all of the ‘TXT` string values of the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<String>]
All `TXT` string values belonging of the host name.
# File lib/ronin/support/network/dns/mixin.rb, line 926 def dns_get_txt_strings(name,**kwargs) dns_resolver(**kwargs).get_txt_strings(name.to_s) end
Queries all ‘WKS` (Well-Known-Service) DNS
records belonging to the host name.
@param [String] name
The host name to query.
@param [Hash{Symbol => Object}] kwargs
Additional keyword arguments.
@option [Array<String>, String
, nil] :nameservers
Optional DNS nameserver(s) to query.
@option [String, nil] :nameserver
Optional DNS nameserver to query.
@return [Array<Resolv::DNS::Resource::IN::WKS>]
All `WKS` DNS records belonging to the host name.
@see rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/WKS
# File lib/ronin/support/network/dns/mixin.rb, line 572 def dns_get_wks_records(name,**kwargs) dns_resolver(**kwargs).get_wks_records(name.to_s) end
Sets the primary DNS
nameserver to query.
@param [String] new_nameserver
The address of the new primary DNS nameserver to query.
@return [String]
The address of the new primary DNS nameserver to query.
# File lib/ronin/support/network/dns/mixin.rb, line 67 def dns_nameserver=(new_nameserver) self.dns_nameservers = [new_nameserver] return new_nameserver end
The default DNS
nameserver(s) to query.
@return [Array<String>]
The addresses of the DNS nameserver(s) to query.
# File lib/ronin/support/network/dns/mixin.rb, line 54 def dns_nameservers @dns_nameservers ||= Network::DNS.nameservers end
Sets the DNS
nameservers to query.
@param [Array<String>] new_nameservers
The new DNS nameserver addresses to query.
@return [Array<String>]
The new DNS nameserver addresses to query.
# File lib/ronin/support/network/dns/mixin.rb, line 40 def dns_nameservers=(new_nameservers) @dns_nameservers = new_nameservers.map(&:to_s) @dns_resolver = Network::DNS.resolver( nameservers: @dns_nameservers ) return new_nameservers end
Creates a DNS
Resolver
for the nameserver.
@param [Array<String>, String
, nil] nameservers
Optional DNS nameserver(s) to query.
@param [String, nil] nameserver
Optional DNS nameserver to query.
@return [Resolv, Resolv::DNS]
The DNS Resolver.
# File lib/ronin/support/network/dns/mixin.rb, line 84 def dns_resolver(nameservers: nil, nameserver: nil) if nameserver Network::DNS.resolver(nameserver: nameserver) elsif nameservers Network::DNS.resolver(nameservers: nameservers) else @dns_resolver ||= Network::DNS.resolver( nameservers: dns_nameservers ) end end