DNS-Abfrage spezifischer Nameserver in Python
English
Deutsch
Im Netzwerkbereich muss manchmal ein Hostname über einen spezifischen Nameserver aufgelöst werden, sei es zu Testzwecken oder weil einige Hostnamen nur intern auflösbar sind.
Dies kann mit dnspython erreicht werden, das mit pip install -U dnspython installiert werden kann.
Das folgende Beispiel veranschaulicht die einfachste Methode für eine Abfrage.
how-to-dns-query-specific-nameservers-in-python.py
import dns.resolver
def dns_query_specific_nameserver(query="techoverflow.net", nameserver="1.1.1.1", qtype="A"):
"""
Query a specific nameserver for:
- An IPv4 address for a given hostname (qtype="A")
- An IPv6 address for a given hostname (qtype="AAAA")
Returns the IP address as a string
"""
resolver = dns.resolver.Resolver(configure=False)
resolver.nameservers = [nameserver]
answer = resolver.resolve(query, qtype)
if len(answer) == 0:
return None
else:
return str(answer[0])
# NOTE: May throw dns.resolver.NXDOMAIN, dns.resolver.NoAnswer or similar
# IPv4 Usage example
dns_query_specific_nameserver(qtype="A") # e.g. '172.67.166.211'
# IPv6 usage example
dns_query_specific_nameserver(qtype="AAAA") # e.g. '2606:4700:3035::ac43:a6d3'Check out similar posts by category:
Networking, Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow