Установить конкретный DNS-сервер с помощью dns.resolver (pythondns) - PullRequest
31 голосов
/ 10 октября 2010

Я использую dns.resolver из dnspython .

Можно ли установить IP-адрес сервера, который будет использоваться для запросов?

Ответы [ 3 ]

70 голосов
/ 04 августа 2011

Несмотря на то, что это что-то вроде старой темы, я начну. Я столкнулся с той же проблемой и подумал, что поделюсь решением.Таким образом, в основном файл конфигурации будет заполнять переменную экземпляра 'nameservers' используемого вами dns.resolver.Resolver.Следовательно, если вы хотите заставить свой Resolver использовать определенный сервер имен, вы можете сделать это прямо так:

import dns.resolver

my_resolver = dns.resolver.Resolver()

# 8.8.8.8 is Google's public DNS server
my_resolver.nameservers = ['8.8.8.8']

answer = my_resolver.query('google.com')

Надеюсь, кто-то найдет это полезным.

3 голосов
/ 05 ноября 2016

Да, это так.

Если вы используете вспомогательную функцию dns.resolver.query(), как это

import dns.resolver
r = dns.resolver.query('example.org', 'a')

вы можете повторно инициализировать распознаватель по умолчанию, например, такой конкретный сервер имен (или список), например:

import dns.resolver
dns.resolver.default_resolver = dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers = ['8.8.8.8', '2001:4860:4860::8888',
                                             '8.8.4.4', '2001:4860:4860::8844' ]
r = dns.resolver.query('example.org', 'a')

Или вы можете использовать отдельный объект для разрешения только для некоторых запросов:

import dns.resolver
res = dns.resolver.Resolver(configure=False)
res.nameservers = [ '8.8.8.8', '2001:4860:4860::8888',
                    '8.8.4.4', '2001:4860:4860::8844' ]
r = res.query('example.org', 'a')
0 голосов
/ 10 октября 2010

Вы не указываете в своем вопросе, но, если вы используете распознаватель с dnspython.org , в документации указано, что вы хотите установить атрибут nameservers в объект резольвера.

Хотя может быть проще предоставить файл /etc/resolv.conf-style для передачи в аргумент filename конструктора *1009* .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...