Ruby - Использование Resolv::DNS для поиска записей DNS через аутентифицированный прокси
У меня есть код, который выполняет поиск DNS с помощью встроенного в Ruby Resolve::DNS
функциональность, и она отлично работает для разрешения IP-адресов в имена (или любой другой тип применимого поиска DNS).
Он работает против наших внутренних серверов имен, однако иногда мне хотелось бы посмотреть, что сообщает внешний DNS.
Например, чтобы сопоставить IP-адрес с общедоступным DNS Google (8.8.8.8 / https://dns.google.com/), мне нужно иметь возможность отправлять запросы через наш аутентифицированный прокси-сервер.
Я пробовал настройку http_proxy
а также HTTPS_PROXY
в командной строке (используя известный хороший синтаксис, который работает за пределами Resolv::DNS
, Я также пытался специально с помощью ENV['http_proxy'] = 'http://username:password@hostname:port'
(с обеими заглавными буквами для переменной среды, конечно).
Кто-нибудь знает, как делать запросы через прокси с Resolv::DNS
?
Обратите внимание, что у меня есть другой код, который зависит от использования Resolv::DNS
поэтому я не ищу ответы, которые пытаются использовать другие гемы / библиотеки Ruby для этой задачи.
Вот мой код, который работает при запросе внутренних 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.>]