Seite 1 von 1

Reverse DNS Abfrage mit vorgegebenem DNS Server

Verfasst: Donnerstag 12. August 2021, 13:32
von KusiE
Hallo allerseits

In unserem Umfeld haben wir seit einer Weile mehrere DNS Domänen. Dies führt nun dazu, dass meine Prüfscrips bei der reverse Namensauflösung nur noch bei den IP's funktionieren, welche in der gleichen DNS Domäne sind, wie der Rechner auf dem das Script läuft. Daher wollte ich meine Scripts so anpassen, dass ich den abzufragenden DNS Server angeben kann. Dies scheint die socket Bibliothek nicht zu bieten. Ich bin beim Suchen im Netz auf dnspython gestossen. Denke damit müsste ich so etwas programmieren können. Aber anscheinend bin ich zu doof dazu.

Wenn es wirklich machbar ist, wäre ich extrem dankbar für ein Codebeispiel.

Und damit es keine Missverständnisse gibt. Ich möchte in Python das machen was in der Windows Eingabeaufforderung so aussieht:
nslookup <aufzulösende IP Adresse> <verwendeter DNS Server>

Bedanke mich schon im Voraus für Eure Lösungsvorschläge. :)

Re: Reverse DNS Abfrage mit vorgegebenem DNS Server

Verfasst: Donnerstag 12. August 2021, 16:59
von AlexL
KusiE hat geschrieben: Donnerstag 12. August 2021, 13:32 Hallo allerseits

In unserem Umfeld haben wir seit einer Weile mehrere DNS Domänen. Dies führt nun dazu, dass meine Prüfscrips bei der reverse Namensauflösung nur noch bei den IP's funktionieren, welche in der gleichen DNS Domäne sind, wie der Rechner auf dem das Script läuft. Daher wollte ich meine Scripts so anpassen, dass ich den abzufragenden DNS Server angeben kann. Dies scheint die socket Bibliothek nicht zu bieten. Ich bin beim Suchen im Netz auf dnspython gestossen. Denke damit müsste ich so etwas programmieren können.
Hallo ebenfalls.
Ich habe erst mal 3 Fragen:
1. Was bedeutet "Umfeld" konkret?
2. Wie sieht dein bisheriges Skript aus?
3. Wozu brauchst du für nslookup ein Skript? - Btw. - meiner Unkenntnis geschuldet: das letzte Mal, dass ich ein nslookup gemacht hatte, liegt mindestens 20 Jahre zurück. Klar, ich betreibe auch keine Nameserver.

Re: Reverse DNS Abfrage mit vorgegebenem DNS Server

Verfasst: Donnerstag 12. August 2021, 20:05
von frogi001
Hallo,
müsste irgendwie so gehen:

Code: Alles auswählen

import dns
from dns import resolver, reversename
  
# eigenen nameserver setzen
my_resolver = dns.resolver.Resolver()
my_resolver.nameservers = ['8.8.8.8']

revName = dns.reversename.from_address("172.217.22.227")
hostName = my_resolver.query(revName, "PTR")[0]

print(revName.to_text())
# 227.22.217.172.in-addr.arpa.
print(hostName)
# muc11s02-in-f3.1e100.net.


Re: Reverse DNS Abfrage mit vorgegebenem DNS Server

Verfasst: Donnerstag 12. August 2021, 20:36
von sparrow
Ich schlage die Verwendung von dnspython vor.

Re: Reverse DNS Abfrage mit vorgegebenem DNS Server

Verfasst: Freitag 13. August 2021, 08:28
von KusiE
AlexL hat geschrieben: Donnerstag 12. August 2021, 16:59
KusiE hat geschrieben: Donnerstag 12. August 2021, 13:32 Hallo allerseits

In unserem Umfeld haben wir seit einer Weile mehrere DNS Domänen. Dies führt nun dazu, dass meine Prüfscrips bei der reverse Namensauflösung nur noch bei den IP's funktionieren, welche in der gleichen DNS Domäne sind, wie der Rechner auf dem das Script läuft. Daher wollte ich meine Scripts so anpassen, dass ich den abzufragenden DNS Server angeben kann. Dies scheint die socket Bibliothek nicht zu bieten. Ich bin beim Suchen im Netz auf dnspython gestossen. Denke damit müsste ich so etwas programmieren können.
Hallo ebenfalls.
Ich habe erst mal 3 Fragen:
1. Was bedeutet "Umfeld" konkret?
2. Wie sieht dein bisheriges Skript aus?
3. Wozu brauchst du für nslookup ein Skript? - Btw. - meiner Unkenntnis geschuldet: das letzte Mal, dass ich ein nslookup gemacht hatte, liegt mindestens 20 Jahre zurück. Klar, ich betreibe auch keine Nameserver.
Merci für Dein Feedback. Ich hoffe mit den Zeilen unten kann ich Deine Fragen beantworten.

1. Umfeld
Firmennetzwerk (Zentrale/Aussenstandorte) mit einigen hundert VLANs. Diverse VLAN's werden seit einiger Zeit nicht mehr von unserem DNS, sondern vom DNS des übergeordneten Konzern verwaltet. Dies führt zu meinem Problem.

2. Skript (auf das Minimum reduziert, als Beispiel was ich machen will)
Beispiel 1:

Code: Alles auswählen

import socket

in_file = open("ips.csv","r")
out_file = open("ergenis.csv","w")

for ip in in_file:
    hostname = socket.getfqdn(ip.rstrip())
     
    out_file.write(ip.rstrip()+";"+hostname+"\n")

in_file.close()
out_file.close()
Beispiel2:

Code: Alles auswählen

import socket

in_file = open("hostnames.csv","r")
out_file = open("ergebis.csv","w")

for hostname in in_file:
    ip = socket.gethostbyname(hostname.rstrip())

    out_file.write(ip+";"+hostname+"\n")

in_file.close()
out_file.close()
Neu müsste ich dem getfqdn und dem gethostbyname den zu verwendenden DNS angeben können.

3. nslookup
Damit wollte ich nur verdeutlichen, was das Script rein von der Funktion her machen soll.

Re: Reverse DNS Abfrage mit vorgegebenem DNS Server

Verfasst: Freitag 13. August 2021, 08:42
von KusiE
frogi001 hat geschrieben: Donnerstag 12. August 2021, 20:05 Hallo,
müsste irgendwie so gehen:

Code: Alles auswählen

import dns
from dns import resolver, reversename
  
# eigenen nameserver setzen
my_resolver = dns.resolver.Resolver()
my_resolver.nameservers = ['8.8.8.8']

revName = dns.reversename.from_address("172.217.22.227")
hostName = my_resolver.query(revName, "PTR")[0]

print(revName.to_text())
# 227.22.217.172.in-addr.arpa.
print(hostName)
# muc11s02-in-f3.1e100.net.

Super, besten Dank. Hab es mit Deinem Beispielcode hinbekommen!