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