DNS Records updaten

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
TheGrudge
User
Beiträge: 96
Registriert: Donnerstag 4. Mai 2006, 18:39

Hi,

ich versuche schon den ganzen Tag, eine gute Anleitung zum Ändern von A-Records auf einem DNS-Server zu finden, aber irgendwie komme ich nicht weiter.

Ich habe im Moment dnspython im Auge, aber ich komme damit nicht zurecht.

Hat da jemand mal eine knappe Anleitung wie man sowas am besten realisieren kann?
Benutzeravatar
TheGrudge
User
Beiträge: 96
Registriert: Donnerstag 4. Mai 2006, 18:39

Ich will aus einer Datenbank IP-Adressen auslesen, die dann per SNMP abgefragt werden, um deren outbound Adresse zu finden.
Diese outbound soll dann im DNS eingetragen werden.
Benutzeravatar
TheGrudge
User
Beiträge: 96
Registriert: Donnerstag 4. Mai 2006, 18:39

Hmmm bin mittlerweile bei twisted, das wohl mittels twisted.names auch DNS requests durchführen kann. Aber leider keine gescheite Anleitung vorhanden.
Hat damit schon mal jemand gearbeitet?

Ich will eigentlich nur ein einem bestimmten DNS-Server verbinden, den A-Record lesen und eventuell verändern.
Mephisto
User
Beiträge: 28
Registriert: Mittwoch 17. Januar 2007, 15:52

Hi,

Wie toll twisted.names dokumentiert ist durfte ich auch schon feststellen :D. Hab auf meiner Festplatte ein kleines Snippet gefunden, vielleicht hilft dir das ja etwas weiter.
client.Resolver kann man auch eine Liste von DNS-Servern im Konstruktor übergeben, ausprobiert habe ich das allerdings noch nicht 8)

Code: Alles auswählen

from twisted.internet import reactor
from twisted.names import client, dns

def dnscb(records):
    if (len(records[0])):
        record = records[0][0]
        if (isinstance(record.payload, dns.Record_PTR)):
            print "Reverse is PTR", record.payload.name.name

def lookup_reverse(host):
    resolver = client.Resolver('/etc/resolv.conf')

    dnsname = '.'.join(reversed(host.split('.'))) + '.in-addr.arpa'
    dnsqry = client.dns.Query(dnsname, client.dns.PTR)
    resolver.query(dnsqry).addCallback(dnscb)
    
lookup_reverse("82.94.237.218")

reactor.run()
Grüße, Mephisto
Benutzeravatar
TheGrudge
User
Beiträge: 96
Registriert: Donnerstag 4. Mai 2006, 18:39

Ich hatte das damals hinbekommen, nur jetzt wurden die DNS Server so umgestellt, das nur noch Server in der Windowsdomain die Einträge updaten dürfen.
So sieht die Funktion bisher aus:

Code: Alles auswählen

import dns.update
import dns.query

def make_dns_entry(host, outbound):
    update = dns.update.Update(_DOMAIN)
    update.replace(host.name, 3600, 'a', outbound)
    response = dns.query.tcp(update, _NAMESERVER)
    return response
Meine Kiste, von der ich die Updates losschicke, ist aber ein Linuxserver. Jetzt habe ich gesehen das dns.update.Update auch einen TSID-Keyring entgegen nimmt, der wohl zur Authentifizierung bei DNS genutzt werden kann.
Hat jemand damit Erfahrung? Wie kann man solch einen Key generieren?
Antworten