TTL-Einstellung für externe DNS-Einträge überschreiben

TTL-Einstellung für externe DNS-Einträge überschreiben

Ich habe eine Bind-Version wie unten gezeigt

9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6.1.2

Ich habe zwei domänenspezifische Weiterleitungen, nämlich test.example.com und internal-test.example.cloud.com

Der lokale DNS-Client oder Resolver, der einen bestimmten CNAME in der Domäne „test.example.com“ auflösen muss, wird von meinem lokalen DNS-Server an die konfigurierten Weiterleitungen weitergeleitet und ihre Antworten werden ebenfalls zwischengespeichert. Alles funktioniert prima, kein Problem. Meine Frage ist jedoch, dass der externe DNS-Server für die Fordwared-Abfrage mit einem TTL-Wert von 60 antwortet. Mein interner DNS-Server speichert diese Antwort also nur für 60 Sekunden zwischen. Gibt es eine Möglichkeit, die TTL von meinem internen DNS-Server für diese bestimmte Domäne zu überschreiben??

Und die /etc/named.conf sieht wie folgt aus

options {
        directory "/var/named";
        allow-transfer{"none";};
        allow-query {localhost; any;};
        dump-file "/var/log/named_dump.db";
        max-cache-ttl 300;
};

zone "test.example.com" IN {
        type forward;
        forwarders {11.1.2.17; 11.1.3.59;};
        forward only;
};

zone "internal-test.example.cloud.com" IN {
        type forward;
        forwarders {11.1.2.17; 11.1.3.59;};
        forward only;
};

zone "domain.local" in {
    type master;
    file "domain.local";
};



[root@dchockal ~]# dig test.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6.1.2 <<>> test.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31197
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;test.example.com.   IN      A

;; ANSWER SECTION:
test.example.com. 60 IN      CNAME   internal-test.example.cloud.com.
internal-test.example.cloud.com. 60 IN A 121.1.2.22
internal-test.example.cloud.com. 60 IN A 121.1.2.23
internal-test.example.cloud.com. 60 IN A 121.1.4.24
internal-test.example.cloud.com. 60 IN A 121.1.4.25

;; Query time: 133 msec
;; SERVER: 11.4.152.28#53(11.4.152.28)
;; WHEN: Thu Dec 15 15:31:22 2016
;; MSG SIZE  rcvd: 175

Antwort1

BIND kann das nicht und es wird nicht als gute Praxis angesehen. Aber vielleicht können Sie auf BIND 9.10.4 aktualisieren? In diesem Fall könnten Sie die prefetchOption - verwenden. Dies würde BIND zwingen, Cache-Daten auf häufig verwendeten Domänen kurz vor Ablauf ihrer TTL zu erneuern (kann wahrscheinlich für bestimmte Zonen verwendet werden, aber ich kann das nicht testen, da diese Version von BIND noch nicht auf Raspbian verfügbar ist). Mehr zu dieser Option finden Sie hier:

https://serverfault.com/questions/536952/bind9-how-to-automatically-refresh-entry-after-entry-expires

Zum Beispiel,

options {
  ...
  prefetch 2 9;
};

würde eine Cache-Aktualisierung für jede Domäne erzwingen, die sich aktuell im Cache befindet, innerhalb der letzten 2 Sekunden ihrer TTL abgefragt wurde und im Allgemeinen eine TTL von mehr als 9 Sekunden hat.

Übrigens: Wenn Sie ein Update durchführen, achten Sie darauf, dass es auf BIND 9.10.4 passt. Der prefetch-Mechanismus wurde in 9.10 eingeführt, allerdings gab es einen hässlichen Bug, der erst ab 9.10.4 behoben wurde:

https://kb.isc.org/article/AA-01315/0/prefetch-performance-in-BIND-9.10.html

Antwort2

Ich glaube nicht, dass BIND diese Funktionalität hat – nur TTL-Verringerungen ( cache-max-ttl), keine Erhöhungen ( cache-min-ttlscheint bei meinem BIND nicht zu funktionieren, aber Sie könnten es mal ausprobieren und sehen, ob es bei Ihrer Version funktioniert). Aber wir könnten unsere eigene autoritative Domäne erstellen. Danach könnten wir in dieser Domäne einen CNAME-Eintrag für die externe Domäne erstellen.

test.mydomain.com CNAME test.example.com.

Anschließend wird die Abfrage für test.mydomain.comin die IP-Adresse von aufgelöst test.example.comund die TTL kann nach Wunsch konfiguriert werden.

Theoretisch könnten wir eine Zone neu schreiben, die BIND zwischenspeichert, sie dann als lokale Zonendatei erstellen, die TTL festlegen und BIND neu starten; aber das ist ein furchtbarer Hack.

Die Software dnsmasqverfügt über eine Option, --min-cache-ttl=<time>wobei timekleiner oder gleich 3600 Sekunden ist. Das Handbuch enthält eine Warnung.

--min-cache-ttl=<time>

Extend short TTL values to the time given when caching them. Note that
artificially extending TTL values is in general a bad idea, do not do it
unless you have a good reason, and understand what you are doing. Dnsmasq
limits the value of this option to one hour, unless recompiled.

Ihre Frage liest sich, als wüssten Sie, was Sie tun. Unbound verfügt ebenfalls über diese Funktion.

cache-min-ttl: <seconds>

Time to live minimum for RRsets and messages in the cache. Default is 0.
If the minimum kicks in, the data is cached for longer than the domain owner
intended, and thus less queries are made to look up the data. Zero makes sure the
data in the cache is as the domain owner intended, higher values, especially more
than an hour or so, can lead to trouble as the data in the cache does not match
up with the actual data any more.

Ersetzen Sie BIND möglicherweise durch Unbound oder dnsmasq, oder verwenden Sie einen davon als Weiterleitung zu BIND.

verwandte Informationen