Estoy usando dns.resolver
desde dnspython.Establecer servidor DNS específico utilizando dns.resolver (pythondns)
¿Es posible establecer la dirección IP del servidor que se utilizará para las consultas?
Estoy usando dns.resolver
desde dnspython.Establecer servidor DNS específico utilizando dns.resolver (pythondns)
¿Es posible establecer la dirección IP del servidor que se utilizará para las consultas?
Aunque esto es algo así como un hilo viejo, voy a saltar. He chocado contra el mismo desafío y pensé que iba a compartir la solución. Entonces, básicamente, el archivo de configuración llenaría la variable de instancia 'nameservers' del dns.resolver.Resolver que está utilizando. Por lo tanto, si se quiere forzar a su Resolver utilizar un servidor de nombres en particular, puede hacerlo direcly así:
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')
espero que alguien le resulta útil.
No especifica en su pregunta, pero suponiendo que esté utilizando the resolver from dnspython.org, la documentación indica que desea establecer el atributo nameservers
en el objeto Resolver.
Aunque puede ser más fácil proporcionar un archivo /etc/resolv.conf-style para pasar al constructor's filename
argument.
'/etc/resolv.conf' no se usa en Windows. – jfs
Sí, lo es.
Si se utiliza la función de conveniencia dns.resolver.query()
como esto
import dns.resolver
r = dns.resolver.query('example.org', 'a')
puede volver a inicializar el almacenador por defecto tal servidor de nombres tan específico (o una lista) se utiliza, por ejemplo:
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')
O puede utilizar un objeto de resolución separado solo para algunas consultas:
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')
¿Puede agregar un enlace a la biblioteca que proporciona 'dns.resolver'? Además, ¿no estaría eso en los documentos 'dns.resolver'? – Wolph
@WoLpH En ubunty hay un paquete llamado 'python-dnspython' – UlfR