{"id":15708,"date":"2026-09-06T01:21:50","date_gmt":"2026-09-05T23:21:50","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/dns-delegation-serial-ttl-auditor\/"},"modified":"2026-09-06T01:21:50","modified_gmt":"2026-09-05T23:21:50","slug":"dns-delegation-serial-ttl-auditor","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/","title":{"rendered":"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Eine Domain hat \u00fcblicherweise zwei oder mehr Namensserver, und ein gew\u00f6hnlicher Abruf fragt den, der zuerst antwortet. Damit bleiben die interessanten Fehler verborgen. Diese Pr\u00fcfung holt zuerst die Delegation von einem \u00f6ffentlichen Aufl\u00f6ser und stellt dann jedem Namensserver dieselben drei Fragen direkt: welche Seriennummer die Zone tr\u00e4gt, welche Namensserver die Zone selbst nennt und auf welche Adresse die Domain zeigt. Antworten, die auseinandergehen, sind der Befund.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"dnszone-domain\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Domain<\/label><br \/>\n        <input id=\"dnszone-domain\" type=\"text\" value=\"lukaswojcik.com\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box; font-family: monospace;\">\n    <\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Von diesem Server: ausschlie\u00dflich DNS-Anfragen, an \u00f6ffentliche Aufl\u00f6ser und an die Namensserver der Domain. Es wird keine Webseite geholt, es werden keine Cookies gesendet und nichts gespeichert au\u00dfer dem Z\u00e4hlerstand.<\/p>\n<p>    <button id=\"dnszone-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: var(--on-accent, #0b1114); border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Delegation pr\u00fcfen<\/button><\/p>\n<div id=\"dnszone-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.8rem; margin: 24px 0 0;\">Grenzen, die zu kennen sich lohnt: Gefragt werden h\u00f6chstens sechs Namensserver, \u00fcber UDP, und eine Antwort \u00fcber 4 KB wird abgeschnitten. Ein Server hinter einer Firewall, die UDP von unbekannten Adressen verwirft, wirkt hier stumm, obwohl er Aufl\u00f6sern ganz normal antwortet.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Eine Domain hat \u00fcblicherweise zwei oder mehr Namensserver, und ein gew\u00f6hnlicher Abruf fragt den, der zuerst antwortet. Damit bleiben die interessanten Fehler verborgen. Diese Pr\u00fcfung holt zuerst die Delegation von einem \u00f6ffentlichen Aufl\u00f6ser und stellt dann jedem Namensserver dieselben drei Fragen direkt: welche Seriennummer die Zone tr\u00e4gt, welche Namensserver die Zone selbst nennt und auf welche Adresse die Domain zeigt. Antworten, die auseinandergehen, sind der Befund.\",\"label_domain\":\"Domain\",\"datenschutz\":\"Von diesem Server: ausschlie\u00dflich DNS-Anfragen, an \u00f6ffentliche Aufl\u00f6ser und an die Namensserver der Domain. Es wird keine Webseite geholt, es werden keine Cookies gesendet und nichts gespeichert au\u00dfer dem Z\u00e4hlerstand.\",\"knopf\":\"Delegation pr\u00fcfen\",\"laeuft\":\"Namensserver werden gefragt...\",\"grenze\":\"Grenzen, die zu kennen sich lohnt: Gefragt werden h\u00f6chstens sechs Namensserver, \u00fcber UDP, und eine Antwort \u00fcber 4 KB wird abgeschnitten. Ein Server hinter einer Firewall, die UDP von unbekannten Adressen verwirft, wirkt hier stumm, obwohl er Aufl\u00f6sern ganz normal antwortet.\",\"h_server\":\"Direkt gefragte Namensserver\",\"tabelle_hinweis\":\"Autorit\u00e4t hei\u00dft: Der Server hat mit dem AA-Bit geantwortet, h\u00e4lt die Zone also selbst und nicht als Kopie. Seriennummern, die zwischen Servern auseinandergehen, sind das deutlichste Zeichen daf\u00fcr, dass eine Zonen\u00fcbertragung nicht angekommen ist.\",\"h_befunde\":\"Befunde\",\"sp_ns\":\"Namensserver\",\"sp_ip\":\"Adresse\",\"sp_erreichbar\":\"Antwortet\",\"sp_autoritaet\":\"Autorit\u00e4t\",\"sp_serial\":\"Serie\",\"sp_a\":\"A-Eintrag\",\"art_ns\":\"NS\",\"art_a\":\"A\",\"zeile_domain\":\"Domain\",\"zeile_ns\":\"Delegierte Namensserver\",\"zeile_a\":\"Adresse\",\"zeile_aaaa\":\"IPv6\",\"zeile_dnssec\":\"DNSSEC\",\"zeile_dauer\":\"Dauer\",\"zeile_limit\":\"Pr\u00fcfungen in dieser Stunde \u00fcbrig\",\"wert_ja\":\"ja\",\"wert_nein\":\"nein\",\"wert_keine\":\"keine\",\"wert_dnssec_validiert\":\"signiert und validiert\",\"wert_dnssec_ohne\":\"signiert, nicht validiert\",\"stufe_hoch\":\"Hoch\",\"stufe_mittel\":\"Mittel\",\"stufe_niedrig\":\"Niedrig\",\"stufe_info\":\"Hinweis\",\"stufe_gut\":\"In Ordnung\",\"keine_befunde\":\"Nichts zu melden.\",\"urteil_gut\":\"Alle Namensserver sind sich einig.\",\"urteil_warnung\":\"Die Domain l\u00f6st auf, der Aufbau hat aber eine Schwachstelle.\",\"urteil_kritisch\":\"Die Namensserver widersprechen sich, oder einer antwortet gar nicht.\",\"fehler_kein_token\":\"Die Pr\u00fcfung lie\u00df sich nicht starten, weil reCAPTCHA nicht geladen hat.\",\"fehler_captcha\":\"reCAPTCHA hat die Anfrage als automatisiert eingestuft. Ein Neuladen der Seite hilft meist.\",\"fehler_zu_viele\":\"Das Limit von {limit} Pr\u00fcfungen je Stunde f\u00fcr diese Adresse ist erreicht.\",\"fehler_adresse\":\"Diese Domain l\u00e4sst sich nicht verwenden.\",\"fehler_domain\":\"Diese Domain l\u00e4sst sich nicht verwenden.\",\"fehler_kein_dns\":\"Kein Aufl\u00f6ser hat f\u00fcr diese Domain geantwortet.\",\"fehler_zaehler\":\"Der Z\u00e4hler ist nicht erreichbar, deshalb wurde nichts gepr\u00fcft.\",\"fehler_pruefdienst\":\"Der reCAPTCHA-Dienst war nicht erreichbar.\",\"fehler_aufbau\":\"Der Dienst ist nicht richtig eingerichtet. Der Fehler liegt auf dieser Seite.\",\"fehler_eingabe\":\"Die Anfrage lie\u00df sich nicht lesen.\",\"fehler_methode\":\"Falsche Anfragemethode.\",\"fehler_netz\":\"Der Dienst war nicht erreichbar.\",\"fehler_antwort\":\"Die Antwort lie\u00df sich nicht lesen.\",\"fehler_unbekannt\":\"Es ist etwas schiefgegangen, wof\u00fcr es keine eigene Meldung gibt.\",\"grund_leer\":\"Es wurde nichts eingegeben.\",\"grund_zu_lang\":\"Die Eingabe ist zu lang.\",\"grund_unlesbar\":\"Das ergibt keinen Domainnamen.\",\"grund_kein_punkt\":\"Die Domain braucht mindestens einen Punkt.\",\"grund_hostform\":\"Erwartet wird ein Domainname, keine IP-Adresse.\",\"grund_keine_antwort\":\"Kein Aufl\u00f6ser hat geantwortet.\",\"befund_keine_ns\":\"Die Domain hat keine Namensserver || Entweder gibt es sie nicht, oder ihre Delegation ist kaputt. Ohne Namensserver l\u00e4sst sich nichts weiter pr\u00fcfen.\",\"befund_nur_ein_ns\":\"Nur ein Namensserver ist delegiert || {name}. Jede Spezifikation seit 1987 verlangt mindestens zwei, und der Grund ist einfach: Ein Server bedeutet, dass ein Neustart, eine Netzst\u00f6rung oder ein abgelaufenes Zertifikat gen\u00fcgt, damit die Domain nicht mehr aufl\u00f6st.\",\"befund_ns_anzahl\":\"{n} Namensserver sind delegiert || {liste}\",\"befund_cname_am_apex\":\"Die Domain hat einen CNAME auf der obersten Ebene || Er zeigt auf {ziel}. Das ist nicht zul\u00e4ssig: Ein CNAME kann nicht neben den SOA- und NS-Eintr\u00e4gen stehen, die jede Zonenspitze tragen muss. Manche Anbieter bilden es nach, was funktioniert, bis jemand die falsche Frage stellt.\",\"befund_ns_stumm\":\"{name} antwortet nicht || Grund: {grund}. Der Server steht weiterhin in der Delegation, Aufl\u00f6ser fragen ihn also weiter und warten auf eine Zeit\u00fcberschreitung, bevor sie den n\u00e4chsten versuchen. F\u00fcr Besucher f\u00fchlt sich das nach einer langsamen Seite an, nicht nach einem Fehler.\",\"befund_ns_ohne_autoritaet\":\"{name} antwortet ohne Autorit\u00e4tskennzeichen || Er antwortet, aber nicht als Server, der die Zone h\u00e4lt. Meist hei\u00dft das: Die Zone wurde dort entfernt, w\u00e4hrend die Delegation noch auf ihn zeigt.\",\"befund_alle_ns_antworten\":\"Alle {n} Namensserver antworten autoritativ || Jeder von ihnen h\u00e4lt die Zone und sagt es auch.\",\"befund_serial_drift\":\"Die Namensserver tragen {n} verschiedene Seriennummern || {werte}, ein Abstand von {abstand}. Die Server halten unterschiedliche Fassungen der Zone; welche Antwort ein Besucher bekommt, h\u00e4ngt also davon ab, welchen Server sein Aufl\u00f6ser gerade fragt. \u00dcblicherweise ist eine Zonen\u00fcbertragung fehlgeschlagen oder ein verborgener Prim\u00e4rserver hat nicht alle benachrichtigt.\",\"befund_serial_gleich\":\"Alle {n} Namensserver tragen die Seriennummer {serial} || \u00dcberall dieselbe Fassung der Zone.\",\"befund_ns_uneinig\":\"Die Namensserver nennen {n} verschiedene NS-S\u00e4tze || Sie sind sich uneinig dar\u00fcber, wer f\u00fcr die Zone zust\u00e4ndig ist. Aufl\u00f6ser k\u00f6nnen sich jede der Fassungen merken.\",\"befund_ns_weicht_von_delegation_ab\":\"Die Zone nennt andere Namensserver als die Delegation || In der Zone: {zone}. Beim \u00fcbergeordneten Betreiber delegiert: {delegation}. In der Praxis werden beide verwendet \u2014 Aufl\u00f6ser beginnen bei der Delegation und ersetzen sie sp\u00e4ter unter Umst\u00e4nden durch die Liste aus der Zone.\",\"befund_ns_stimmt_ueberein\":\"Delegation und Zone nennen dieselben {n} Namensserver || Die \u00fcbergeordnete Ebene und die Zone sind sich einig.\",\"befund_ns_ein_netz\":\"Alle {n} Namensserver liegen in {netz} || Zwei Server im selben Netzabschnitt fallen zusammen aus. Getrennte Netze, am besten getrennte Anbieter, sind das, was den zweiten Server erst wertvoll macht.\",\"befund_ns_mehrere_netze\":\"Die Namensserver liegen in {n} verschiedenen Netzen || Eine Netzst\u00f6rung nimmt einen davon aus dem Verkehr, nicht alle.\",\"befund_dnssec_ds\":\"Die Zone ist signiert: {n} DS-Eintrag\\\/Eintr\u00e4ge bei der \u00fcbergeordneten Ebene || Die Vertrauenskette steht, eine manipulierte Antwort l\u00e4sst sich also erkennen.\",\"befund_ds_ohne_validierung\":\"Ein DS-Eintrag ist vorhanden, der Aufl\u00f6ser hat aber kein AD-Bit gesetzt || Die Signatur lie\u00df sich nicht validieren. Das deutet auf eine abgelaufene Signatur oder einen Schl\u00fcssel hin, der nicht mehr zum DS-Eintrag passt \u2014 genau der Zustand, in dem ein validierender Aufl\u00f6ser f\u00fcr die Domain gar nicht mehr antwortet.\",\"befund_kein_dnssec\":\"Die Zone ist nicht signiert || Ohne DNSSEC l\u00e4sst sich eine Antwort nicht \u00fcberpr\u00fcfen. Das ist weiterhin der Normalfall und bei vielen Domains eine bewusste Entscheidung.\",\"befund_kein_a\":\"Die Domain hat keinen A-Eintrag || \u00dcber eine Unterebene kann sie trotzdem funktionieren, der nackte Name l\u00f6st aber auf keine Adresse auf.\",\"befund_kein_aaaa\":\"Die Domain hat keinen AAAA-Eintrag || Sie ist nur \u00fcber IPv4 erreichbar.\",\"befund_mit_aaaa\":\"Die Domain hat {n} AAAA-Eintrag\\\/Eintr\u00e4ge || Auch \u00fcber IPv6 erreichbar.\",\"befund_ttl_kurz\":\"Der Eintrag {art} hat eine TTL von {ttl} Sekunden || Kurze TTLs lassen \u00c4nderungen schnell wirken und kosten bei fast jedem Besuch eine Abfrage. W\u00e4hrend einer Umstellung n\u00fctzlich, als Dauerzustand teuer.\",\"befund_ttl_lang\":\"Der Eintrag {art} hat eine TTL von {ttl} Sekunden ({stunden} Stunden) || Eine \u00c4nderung braucht dann so lange, bis sie \u00fcberall angekommen ist. Vor einem geplanten Umzug geh\u00f6rt der Wert rechtzeitig auf wenige Minuten herunter.\",\"befund_soa\":\"SOA: prim\u00e4r {primaer}, Serie {serial}, refresh {refresh}, retry {retry}, expire {expire}, minimum {minimum} || Die Zahlen regeln, wie die Zweitserver dem Prim\u00e4rserver folgen.\",\"befund_soa_expire_kurz\":\"Der SOA-Wert expire betr\u00e4gt {tage} Tage || Ist der Prim\u00e4rserver so lange nicht erreichbar, h\u00f6ren die Zweitserver auf, f\u00fcr die Zone zu antworten. Eine Woche ist der \u00fcbliche Mindestwert.\",\"befund_soa_retry_gross\":\"retry ({retry}) ist nicht kleiner als refresh ({refresh}) || retry gilt f\u00fcr den Fall, dass ein refresh fehlgeschlagen ist; ein Wert auf oder \u00fcber refresh bleibt deshalb wirkungslos.\",\"befund_primaer_nicht_delegiert\":\"Die SOA nennt {primaer} als Prim\u00e4rserver, der nicht unter den delegierten Servern steht || Das ist die \u00fcbliche Form eines verborgenen Prim\u00e4rservers: Er h\u00e4lt die Zone, die delegierten Server kopieren von ihm, und niemand fragt ihn direkt.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-dnszone.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];<\/p>\n<p>    function liste(w) { return Array.isArray(w) ? w : []; }\n    function zahl(w) { return (typeof w === 'number' && isFinite(w)) ? w : null; }\n    function zeichen(w) { return (typeof w === 'string' && w !== '') ? w : null; }\n    function text(schluessel, daten) {\n        var t = T[schluessel];\n        if (typeof t !== 'string') { return null; }\n        return t.replace(\/\\{([a-z_0-9]+)\\}\/g, function (m, k) {\n            var w = (daten && daten[k] !== undefined && daten[k] !== null) ? daten[k] : null;\n            if (w === null) { return m; }\n            if (k === 'art' && T['art_' + w]) { return T['art_' + w]; }\n            return String(w);\n        });\n    }<\/p>\n<p>    function bewerten(antwort) {\n        var a = antwort || {};\n        if (a.fehler) { return { fehler: String(a.fehler), grund: a.grund || null, limit: zahl(a.limit) }; }\n        var befunde = liste(a.befunde).map(function (f) {\n            return { key: String(f.key || ''), stufe: STUFEN.indexOf(f.stufe) === -1 ? 'info' : f.stufe, daten: (f.daten && typeof f.daten === 'object') ? f.daten : {} };\n        });\n        var gruppen = {};\n        STUFEN.forEach(function (s) { gruppen[s] = befunde.filter(function (f) { return f.stufe === s; }); });\n        var server = liste(a.server).map(function (z) {\n            return { name: String(z.name || ''), ip: zeichen(z.ip), erreichbar: z.erreichbar === true, aa: z.aa === true,\n                serial: zahl(z.serial), ns: zahl(z.ns), a: zeichen(z.a) };\n        });\n        return {\n            fehler: null, domain: String(a.domain || ''),\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            ns: liste(a.ns).filter(function (x) { return typeof x === 'string'; }),\n            adressen: liste(a.a).filter(function (x) { return typeof x === 'string'; }),\n            aaaa: liste(a.aaaa).filter(function (x) { return typeof x === 'string'; }),\n            dnssec: a.dnssec === true, ad: a.ad === true, server: server,\n            befunde: befunde, gruppen: gruppen, dauer: zahl(a.dauer_ms), limitRest: zahl(a.limit_rest)\n        };\n    }<\/p>\n<p>    function skriptLaden() {\n        return new Promise(function (auf) {\n            if (window.grecaptcha) { auf(true); return; }\n            var s = document.createElement('script');\n            s.src = 'https:\/\/www.google.com\/recaptcha\/api.js?render=' + SITEKEY;\n            s.onload = function () { auf(true); }; s.onerror = function () { auf(false); };\n            document.head.appendChild(s);\n            setTimeout(function () { auf(!!window.grecaptcha); }, 8000);\n        });\n    }\n    function tokenHolen() {\n        return skriptLaden().then(function (da) {\n            if (!da || !window.grecaptcha || !window.grecaptcha.ready) { return null; }\n            return new Promise(function (auf) {\n                var fertig = false;\n                function einmal(w) { if (!fertig) { fertig = true; auf(w); } }\n                setTimeout(function () { einmal(null); }, 12000);\n                try {\n                    window.grecaptcha.ready(function () {\n                        if (fertig) { return; }\n                        if (!window.grecaptcha.execute) { einmal(null); return; }\n                        window.grecaptcha.execute(SITEKEY, { action: 'dnszone' }).then(function (t) { einmal(t || null); }, function () { einmal(null); });\n                    });\n                } catch (e) { einmal(null); }\n            });\n        }, function () { return null; });\n    }\n    function abfragen(domain) {\n        return tokenHolen().then(function (token) {\n            return fetch(ENDPUNKT, { method: 'POST', headers: { 'Content-Type': 'application\/json' }, body: JSON.stringify({ domain: domain, token: token || '' }) })\n                .then(function (r) { return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; }); }, function () { return { fehler: 'netz' }; });\n        });\n    }<\/p>\n<p>    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.DNSZONE = { bewerten: bewerten, darstellen: null, text: text, ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, T: T };<\/p>\n<p>    var btn = document.getElementById('dnszone-btn');\n    var out = document.getElementById('dnszone-ausgabe');\n    if (!btn || !out) { return; }<\/p>\n<p>    function el(tag, stil, txt) { var e = document.createElement(tag); if (stil) { e.setAttribute('style', stil); } if (txt !== undefined && txt !== null) { e.textContent = txt; } return e; }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }\n    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.95rem; margin: 22px 0 8px;';\n    var ZELLE = 'padding: 5px 12px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    var ZELLE_WERT = 'padding: 5px 12px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace; word-break: break-all;';\n    var KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 8px; padding: 14px 16px; margin: 0 0 10px;';\n    var GUT = ' color: #7ee787;', WARN = ' color: #ffa94d;', ROT = ' color: #ff7b72;', GRAU = ' color: #8a8a99;';\n    var FARBEN = { hoch: '#ff7b72', mittel: '#ffa94d', niedrig: '#e3b341', info: '#8a8a99', gut: '#7ee787' };\n    var URTEIL = { gut: GUT, warnung: WARN, kritisch: ROT };\n    function gitter(sp) { return el('div', 'display: grid; grid-template-columns: ' + sp + '; gap: 0 18px; align-items: baseline;'); }\n    function paar(g, n, w, stil) { g.appendChild(el('div', ZELLE, n)); g.appendChild(el('div', ZELLE_WERT + (stil || ''), w)); }<\/p>\n<p>    function tabelle(b) {\n        var huelle = el('div', 'overflow-x: auto; margin: 0 0 6px;');\n        var t = el('table', 'border-collapse: collapse; width: 100%; min-width: 640px; font-size: 0.84rem;');\n        var kopf = el('tr', '');\n        [T.sp_ns, T.sp_ip, T.sp_erreichbar, T.sp_autoritaet, T.sp_serial, T.sp_a].forEach(function (n) {\n            kopf.appendChild(el('th', 'text-align: left; padding: 6px 12px 6px 0; color: #8a8a99; font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.4px; border-bottom: 1px solid var(--border, #2a2a35); white-space: nowrap;', n));\n        });\n        t.appendChild(kopf);\n        var serials = {};\n        b.server.forEach(function (z) { if (z.serial !== null) { serials[z.serial] = true; } });\n        var drift = Object.keys(serials).length > 1;\n        b.server.forEach(function (z) {\n            var r = el('tr', '');\n            function zelle(txt, stil) { r.appendChild(el('td', 'padding: 7px 12px 7px 0; border-bottom: 1px solid var(--border, #2a2a35); font-family: monospace; color: var(--text-primary, #e8e8ee);' + (stil || ''), txt)); }\n            zelle(z.name, ' word-break: break-all;');\n            zelle(z.ip || '-', GRAU);\n            zelle(z.erreichbar ? T.wert_ja : T.wert_nein, z.erreichbar ? GUT : ROT);\n            zelle(z.aa ? T.wert_ja : T.wert_nein, z.aa ? GUT : WARN);\n            zelle(z.serial !== null ? String(z.serial) : '-', drift ? ROT : GRAU);\n            zelle(z.a || '-', GRAU);\n            t.appendChild(r);\n        });\n        huelle.appendChild(t);\n        return huelle;\n    }<\/p>\n<p>    function darstellen(b, ziel) {\n        ziel.innerHTML = '';\n        if (b.fehler) {\n            var txt = T['fehler_' + b.fehler] || T.fehler_unbekannt;\n            if (b.grund && T['grund_' + b.grund]) { txt = txt + ' ' + T['grund_' + b.grund]; }\n            if (b.limit !== null) { txt = txt.replace('{limit}', String(b.limit)); }\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', txt));\n            return;\n        }\n        ziel.appendChild(el('div', 'font-size: 1.05rem; font-weight: 700; margin: 0 0 12px;' + URTEIL[b.urteil], T['urteil_' + b.urteil]));<\/p>\n<p>        var g = gitter('auto auto');\n        paar(g, T.zeile_domain, b.domain, GRAU);\n        paar(g, T.zeile_ns, b.ns.length ? b.ns.join(', ') : '-', GRAU);\n        paar(g, T.zeile_a, b.adressen.length ? b.adressen.join(', ') : '-', b.adressen.length ? GRAU : WARN);\n        paar(g, T.zeile_aaaa, b.aaaa.length ? b.aaaa.join(', ') : T.wert_keine, b.aaaa.length ? GUT : GRAU);\n        paar(g, T.zeile_dnssec, b.dnssec ? (b.ad ? T.wert_dnssec_validiert : T.wert_dnssec_ohne) : T.wert_nein, b.dnssec ? GUT : GRAU);\n        if (b.dauer !== null) { paar(g, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        if (b.limitRest !== null) { paar(g, T.zeile_limit, String(b.limitRest), GRAU); }\n        ziel.appendChild(g);<\/p>\n<p>        if (b.server.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_server));\n            ziel.appendChild(tabelle(b));\n            ziel.appendChild(el('p', ZELLE + ' margin: 0 0 6px; font-size: 0.8rem;', T.tabelle_hinweis));\n        }<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        var irgendwas = false;\n        STUFEN.forEach(function (s) {\n            var gr = b.gruppen[s];\n            if (!gr.length) { return; }\n            irgendwas = true;\n            ziel.appendChild(el('div', 'font-weight: 700; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.5px; margin: 14px 0 6px; color: ' + FARBEN[s] + ';', T['stufe_' + s] + ' (' + gr.length + ')'));\n            gr.forEach(function (f) {\n                var k = el('div', KASTEN + ' border-left: 3px solid ' + FARBEN[s] + ';');\n                var t = text('befund_' + f.key, f.daten) || f.key;\n                var teile = t.split(' || ');\n                k.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-size: 0.9rem; font-weight: 700;', teile[0]));\n                if (teile[1]) { k.appendChild(el('div', ZELLE + ' padding: 6px 0 0; line-height: 1.55;', teile[1])); }\n                ziel.appendChild(k);\n            });\n        });\n        if (!irgendwas) { ziel.appendChild(el('p', ZELLE + ' margin: 0;', T.keine_befunde)); }\n    }\n    window.LW_TEST.DNSZONE.darstellen = darstellen;<\/p>\n<p>    var laeuft = false;\n    btn.addEventListener('click', function () {\n        if (laeuft) { return; }\n        laeuft = true; btn.disabled = true;\n        out.innerHTML = '';\n        out.appendChild(el('p', ZELLE + GRAU + ' margin: 0;', T.laeuft));\n        abfragen(wert('dnszone-domain')).then(function (a) { darstellen(bewerten(a), out); laeuft = false; btn.disabled = false; },\n            function () { darstellen(bewerten({ fehler: 'netz' }), out); laeuft = false; btn.disabled = false; });\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fragt zuerst einen \u00f6ffentlichen Aufl\u00f6ser nach der Delegation und dann jeden zust\u00e4ndigen Namensserver direkt. Erst der zweite Schritt zeigt die Fehler, die ein gew\u00f6hnlicher Abruf nie sichtbar macht: ein Server mit einer \u00e4lteren Fassung der Zone, ein Server, der noch in der Delegation steht, aber nicht mehr antwortet, oder alle Server im selben Netz.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92771,92289,92759],"class_list":["post-15708","page","type-page","status-publish","hentry","tag-it-networks-de","tag-seo-de","tag-web-development-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Fragt zuerst einen \u00f6ffentlichen Aufl\u00f6ser nach der Delegation und dann jeden zust\u00e4ndigen Namensserver direkt. Erst der zweite Schritt zeigt die Fehler, die ein gew\u00f6hnlicher Abruf nie sichtbar macht: ein Server mit einer \u00e4lteren Fassung der Zone, ein Server, der noch in der Delegation steht, aber nicht mehr antwortet, oder alle Server im selben Netz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/dns-delegation-serial-ttl-auditor\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/dns-delegation-serial-ttl-auditor\\\/\",\"name\":\"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-05T23:21:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/dns-delegation-serial-ttl-auditor\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/dns-delegation-serial-ttl-auditor\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/dns-delegation-serial-ttl-auditor\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/","og_locale":"en_US","og_type":"article","og_title":"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt - Lukas Wojcik - Blog","og_description":"Fragt zuerst einen \u00f6ffentlichen Aufl\u00f6ser nach der Delegation und dann jeden zust\u00e4ndigen Namensserver direkt. Erst der zweite Schritt zeigt die Fehler, die ein gew\u00f6hnlicher Abruf nie sichtbar macht: ein Server mit einer \u00e4lteren Fassung der Zone, ein Server, der noch in der Delegation steht, aber nicht mehr antwortet, oder alle Server im selben Netz.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/","name":"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-05T23:21:50+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/dns-delegation-serial-ttl-auditor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"DNS-Delegations-, Serien- und TTL-Pr\u00fcfer: jeden Namensserver einzeln gefragt"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=15708"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15708\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15708"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}