wake-up-neo.net

Festlegen eines bestimmten DNS-Servers mit dns.resolver (pythondns)

Ich benutze dns.resolver von dnspython .

Kann die IP-Adresse des Servers für Abfragen festgelegt werden?

28
Massimo

Obwohl dies ein ziemlich alter Thread ist, werde ich reinspringen. Ich bin gegen dieselbe Herausforderung gestoßen und dachte, ich würde die Lösung teilen. Im Grunde würde die Konfigurationsdatei also die Instanzvariable 'nameservers' des verwendeten dns.resolver.Resolver auffüllen. Wenn Sie Ihren Resolver dazu zwingen möchten, einen bestimmten Nameserver zu verwenden, können Sie dies direkt wie folgt tun:

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')

Hoffe, jemand findet es nützlich.

66

Ja, so ist es.

Wenn Sie die Komfortfunktion dns.resolver.query() so verwenden

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

sie können den Standard-Resolver neu initialisieren, indem Sie einen solchen Nameserver (oder eine Liste) verwenden, z.

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')

Oder Sie können ein separates Resolver-Objekt nur für einige Abfragen verwenden:

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')
2
maxschlepzig

Sie geben nicht in Ihrer Frage an, aber wenn Sie den Resolver von dnspython.org verwenden, gibt die Dokumentation an, dass Sie das nameservers -Attribut für das Resolver-Objekt festlegen möchten.

Es kann jedoch einfacher sein, eine /etc/resolv.conf-style -Datei bereitzustellen, die an das Argument filename des constructor übergeben wird.

0
bstpierre