我有使用 Ruby 的内置Resolve::DNS
功能执行 DNS 查找的代码,它可以完美地将 IP 地址解析为名称(或任何其他类型的适用 DNS 查找)。
它对我们的内部域名服务器起作用,但偶尔我想看看外部 DNS 报告了什么。
例如,为了针对 Google 的公共 DNS (8.8.8.8 / https://dns.google.com/ ) 反弹 IP 地址,我需要能够通过我们经过身份验证的代理发出请求。
我已经尝试在命令行中设置http_proxy
和(使用在.HTTPS_PROXY
Resolv::DNS
ENV['http_proxy'] = 'http://username:password@hostname:port'
有谁知道如何通过代理发出请求Resolv::DNS
?
请注意,我还有其他代码依赖于使用Resolv::DNS
,因此我不是在寻找试图利用其他 Ruby gems/libraries 来完成此任务的答案。
这是我在查询内部 DNS 名称服务器时有效的代码,但它不适用于 Google DNS(它会在很长一段时间后超时):
dns = Resolv::DNS.new(:nameserver => '8.8.8.8')
dns_ptr = dns.getnames('107.23.199.237') # logitech.com
p dns_ptr
预期输出:
[#<Resolv::DNS::Name: ec2-ip-address-and-name-of-logitech.com-in-aws.com.>]