net.dig DNS-Informationen bei Nameservern abfragen

Grundlagen

Die dig-action aus dem Modul net ermöglicht es Ihnen, DNS-Informationen von beliebigen Nameservern abzufragen. Sie können damit überprüfen, ob und wie die entsprechenden Zonen für Domains / IPs gesetzt sind.

API-Anfrage

Um eine Nameserver-Abfrage zu starten, müssen Sie das Modul net, die action dig sowie den zu prüfenden Domainnamen domainname angeben. Zusätzlich können Sie einen Nameserver nameserver vorgeben.:

Übergeben Sie ein JSON-Objekt als String via POST oder GET aus Ihrer Software:

{
   "action" : "dig",
   "apikey" : "abcd1234",
   "data" : {
      "domainname" : "google.de"
   },
   "modul" : "net"
}

Nutzen Sie die Punktnotation, um die Daten per POST oder GET an die API zu übertragen:

action=dig
apikey=abcd1234
data.domainname=google.de
modul=net
https://nettz.de/api.cgi?action=dig&apikey=abcd1234&data.domainname=google.de&modul=net

Übertragen Sie die Parameter per XML an die API:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<opt action="dig" apikey="abcd1234" modul="net">
<data domainname="google.de" />
</opt>

Die API frägt dann entweder den angegebenen nameserver oder einen unserer Default-Nameserver nach dem Werten für die Domain domainname..

API-Anfrage-Optionen

Sie können folgende Optionen im data-Zweig bei der Anfrage angeben, um die Spezifikationen für die Berechnungen und die Ausgabe zu steuern:

domainname

Ein gültiger Domainname (ohne http oder andere Protokollangaben). Bsp.: "google.de".

nameserver

Der Hostname oder die IP-Adresse des Nameservers, der abgefragt werden soll. Wenn Sie keinen Nameserver angeben, wird ein interner nettz.de-Nameserver für die Abfrage genutzt.

API-Antwort

Wenn der domainname korrekt aufgelöst werden konnte, antwortet die API mit fünf verschiedenen Hashes im data-Objekt:

{
   "data" : {
      "authority" : [
         {
            "class" : "IN",
            "name" : "google.de.",
            "rdata" : [
               "ns1.google.com."
            ],
            "rdlen" : 16,
            "ttl" : 65812,
            "type" : "NS"
         },
         {
            "class" : "IN",
            "name" : "google.de.",
            "rdata" : [
               "ns2.google.com."
            ],
            "rdlen" : 6,
            "ttl" : 65812,
            "type" : "NS"
         },
         {
            "class" : "IN",
            "name" : "google.de.",
            "rdata" : [
               "ns3.google.com."
            ],
            "rdlen" : 6,
            "ttl" : 65812,
            "type" : "NS"
         },
         {
            "class" : "IN",
            "name" : "google.de.",
            "rdata" : [
               "ns4.google.com."
            ],
            "rdlen" : 6,
            "ttl" : 65812,
            "type" : "NS"
         }
      ],
      "environment" : {
         "bytes" : 109,
         "class" : "IN",
         "elapsed" : "41",
         "errno" : "",
         "nrecs" : 5,
         "peeraddr" : [
            "ns1.nettz.de"
         ],
         "peerport" : 53,
         "proto" : "UDP",
         "recursion" : 256,
         "server" : "ns1.nettz.de",
         "text" : "\n; <<>> Net::DNS::Dig 0.12 <<>> -t aaaa google.de.\n;;\n;; Got answer.\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39790\n;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0\n\n;; QUESTION SECTION:\n;google.de.\t\tIN\tAAAA\n\n;; AUTHORITY SECTION:\ngoogle.de.\t65812\tIN\tNS\t ns1.google.com.\ngoogle.de.\t65812\tIN\tNS\t ns2.google.com.\ngoogle.de.\t65812\tIN\tNS\t ns3.google.com.\ngoogle.de.\t65812\tIN\tNS\t ns4.google.com.\n\n;; Query time: 41 ms\n;; SERVER: 212.114.34.195# 53(ns1.nettz.de)\n;; WHEN: Mon Jul  8 21:51:40 2019\n;; MSG SIZE rcvd: 109 -- XFR size: 5 records\n",
         "timeout" : 15
      },
      "header" : {
         "aa" : 0,
         "ad" : 0,
         "ancount" : 0,
         "arcount" : 0,
         "cd" : 0,
         "id" : 39790,
         "mbz" : 0,
         "nscount" : 4,
         "opcode" : "QUERY",
         "qdcount" : 1,
         "qr" : 1,
         "ra" : 0,
         "rcode" : "NOERROR",
         "rd" : 1,
         "tc" : 0
      },
      "question" : [
         {
            "class" : "IN",
            "name" : "google.de.",
            "type" : "AAAA"
         }
      ]
   },
   "status" : 1,
   "timestamp" : 1562615500
}
data.authority:0.class=IN
data.authority:0.name=google.de.
data.authority:0.rdata:0=ns1.google.com.
data.authority:0.rdlen=16
data.authority:0.ttl=65812
data.authority:0.type=NS
data.authority:1.class=IN
data.authority:1.name=google.de.
data.authority:1.rdata:0=ns2.google.com.
data.authority:1.rdlen=6
data.authority:1.ttl=65812
data.authority:1.type=NS
data.authority:2.class=IN
data.authority:2.name=google.de.
data.authority:2.rdata:0=ns3.google.com.
data.authority:2.rdlen=6
data.authority:2.ttl=65812
data.authority:2.type=NS
data.authority:3.class=IN
data.authority:3.name=google.de.
data.authority:3.rdata:0=ns4.google.com.
data.authority:3.rdlen=6
data.authority:3.ttl=65812
data.authority:3.type=NS
data.environment.bytes=109
data.environment.class=IN
data.environment.elapsed=41
data.environment.errno=
data.environment.nrecs=5
data.environment.peeraddr:0=ns1.nettz.de
data.environment.peerport=53
data.environment.proto=UDP
data.environment.recursion=256
data.environment.server=ns1.nettz.de
data.environment.text=
; <<>> Net::DNS::Dig 0.12 <<>> -t aaaa google.de.
;;
;; Got answer.
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39790
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;google.de.		IN	AAAA

;; AUTHORITY SECTION:
google.de.	65812	IN	NS	 ns1.google.com.
google.de.	65812	IN	NS	 ns2.google.com.
google.de.	65812	IN	NS	 ns3.google.com.
google.de.	65812	IN	NS	 ns4.google.com.

;; Query time: 41 ms
;; SERVER: 212.114.34.195# 53(ns1.nettz.de)
;; WHEN: Mon Jul  8 21:51:40 2019
;; MSG SIZE rcvd: 109 -- XFR size: 5 records

data.environment.timeout=15
data.header.aa=0
data.header.ad=0
data.header.ancount=0
data.header.arcount=0
data.header.cd=0
data.header.id=39790
data.header.mbz=0
data.header.nscount=4
data.header.opcode=QUERY
data.header.qdcount=1
data.header.qr=1
data.header.ra=0
data.header.rcode=NOERROR
data.header.rd=1
data.header.tc=0
data.question:0.class=IN
data.question:0.name=google.de.
data.question:0.type=AAAA
status=1
timestamp=1562615500
data.authority:0.class=IN&data.authority:0.name=google.de.&data.authority:0.rdata:0=ns1.google.com.&data.authority:0.rdlen=16&data.authority:0.ttl=65812&data.authority:0.type=NS&data.authority:1.class=IN&data.authority:1.name=google.de.&data.authority:1.rdata:0=ns2.google.com.&data.authority:1.rdlen=6&data.authority:1.ttl=65812&data.authority:1.type=NS&data.authority:2.class=IN&data.authority:2.name=google.de.&data.authority:2.rdata:0=ns3.google.com.&data.authority:2.rdlen=6&data.authority:2.ttl=65812&data.authority:2.type=NS&data.authority:3.class=IN&data.authority:3.name=google.de.&data.authority:3.rdata:0=ns4.google.com.&data.authority:3.rdlen=6&data.authority:3.ttl=65812&data.authority:3.type=NS&data.environment.bytes=109&data.environment.class=IN&data.environment.elapsed=41&data.environment.errno=&data.environment.nrecs=5&data.environment.peeraddr:0=ns1.nettz.de&data.environment.peerport=53&data.environment.proto=UDP&data.environment.recursion=256&data.environment.server=ns1.nettz.de&data.environment.text=%0A;%20%3C%3C%3E%3E%20Net::DNS::Dig%200.12%20%3C%3C%3E%3E%20-t%20aaaa%20google.de.%0A;;%0A;;%20Got%20answer.%0A;;%20-%3E%3EHEADER%3C%3C-%20opcode:%20QUERY,%20status:%20NOERROR,%20id:%2039790%0A;;%20flags:%20qr%20rd;%20QUERY:%201,%20ANSWER:%200,%20AUTHORITY:%204,%20ADDITIONAL:%200%0A%0A;;%20QUESTION%20SECTION:%0A;google.de.%09%09IN%09AAAA%0A%0A;;%20AUTHORITY%20SECTION:%0Agoogle.de.%0965812%09IN%09NS%09%20ns1.google.com.%0Agoogle.de.%0965812%09IN%09NS%09%20ns2.google.com.%0Agoogle.de.%0965812%09IN%09NS%09%20ns3.google.com.%0Agoogle.de.%0965812%09IN%09NS%09%20ns4.google.com.%0A%0A;;%20Query%20time:%2041%20ms%0A;;%20SERVER:%20212.114.34.195#%2053(ns1.nettz.de)%0A;;%20WHEN:%20Mon%20Jul%20%208%2021:51:40%202019%0A;;%20MSG%20SIZE%20rcvd:%20109%20--%20XFR%20size:%205%20records%0A&data.environment.timeout=15&data.header.aa=0&data.header.ad=0&data.header.ancount=0&data.header.arcount=0&data.header.cd=0&data.header.id=39790&data.header.mbz=0&data.header.nscount=4&data.header.opcode=QUERY&data.header.qdcount=1&data.header.qr=1&data.header.ra=0&data.header.rcode=NOERROR&data.header.rd=1&data.header.tc=0&data.question:0.class=IN&data.question:0.name=google.de.&data.question:0.type=AAAA&status=1&timestamp=1562615500
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<opt status="1"
timestamp="1562615500">
<data>
<authority name="google.de."
class="IN"
rdlen="16"
ttl="65812"
type="NS">
<rdata>ns1.google.com.</rdata>
</authority>
<authority name="google.de."
class="IN"
rdlen="6"
ttl="65812"
type="NS">
<rdata>ns2.google.com.</rdata>
</authority>
<authority name="google.de."
class="IN"
rdlen="6"
ttl="65812"
type="NS">
<rdata>ns3.google.com.</rdata>
</authority>
<authority name="google.de."
class="IN"
rdlen="6"
ttl="65812"
type="NS">
<rdata>ns4.google.com.</rdata>
</authority>
<environment bytes="109"
class="IN"
elapsed="41"
errno=""
nrecs="5"
peerport="53"
proto="UDP"
recursion="256"
server="ns1.nettz.de"
text="
; <<>> Net::DNS::Dig 0.12 <<>> -t aaaa google.de.
;;
;; Got answer.
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39790
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;google.de. IN AAAA

;; AUTHORITY SECTION:
google.de. 65812 IN NS ns1.google.com.
google.de. 65812 IN NS ns2.google.com.
google.de. 65812 IN NS ns3.google.com.
google.de. 65812 IN NS ns4.google.com.

;; Query time: 41 ms
;; SERVER: 212.114.34.195# 53(ns1.nettz.de)
;; WHEN: Mon Jul 8 21:51:40 2019
;; MSG SIZE rcvd: 109 -- XFR size: 5 records
"
timeout="15">
<peeraddr>ns1.nettz.de</peeraddr>
</environment>
<header id="39790"
aa="0"
ad="0"
ancount="0"
arcount="0"
cd="0"
mbz="0"
nscount="4"
opcode="QUERY"
qdcount="1"
qr="1"
ra="0"
rcode="NOERROR"
rd="1"
tc="0" />
<question name="google.de."
class="IN"
type="AAAA" />
</data>
</opt>


Wenn bei der Verarbeitung ein Fehler auftritt, antwortet die API mit einer entsprechenden Fehlermeldung:

{
   "errid" : 224,
   "errkey" : "domainname",
   "errmsg" : "Invalid domainname",
   "errvalue" : "googlede",
   "status" : -1,
   "timestamp" : 1562616234
}
errid=224
errkey=domainname
errmsg=Invalid domainname
errvalue=googlede
status=-1
timestamp=1562616234
errid=224&errkey=domainname&errmsg=Invalid%20domainname&errvalue=googlede&status=-1&timestamp=1562616234
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<opt errid="224"
errkey="domainname"
errmsg="Invalid domainname"
errvalue="googlede"
status="-1"
timestamp="1562616234" />

Erklärung der data-Informationen

Die abgefragten DNS-Informationen werden von der API in den folgenden Hashes gebündelt:

  • answer
  • authority
  • environment
  • header
  • question

In environment finden Sie Angaben zur aktuellen Abfrage, in environment.text ist eine dem dig-Kommando nachempfundene Textausgabe enthalten. In den übrigen Hashes finden Sie die jeweiligen DNS-Informationen.

Beispiel-Aufrufe und -Antworten

Es sind noch keine Beispiele hinterlegt

Quellen / Anbieter

Bei der Nutzung von net.dig werden interne Algorithmen sowie externe Daten (je nach nameserver-Vorgabe) genutzt.

Vergleichbare API-actions

  • net - Tools und Funktionen für LAN und das Internet
  • Info-Module - In Info-Modulen sind Tools und Infos gebündelt. Sehen Sie hier eine Übersicht aller Info-Module.

Aktueller Status

  • Level:
    Info-Module mit dem Status @lpha sind neu und noch nicht ausgiebig getestet. Produktive Anbindungen dieser action werden _nicht_ empfohlen! Feedback, Bugmeldungen und Verbesserungsvorschläge sind dagegen herzlich willkommen!
  • Credits pro Aufruf:
    0.001
  • Letzte Änderung:
    Noch keine Änderung