Reverse DNS in einer CIDR-Welt


24

Reverse DNS scheint stark an Klassengrenzen gebunden zu sein. Welche Methoden gibt es jetzt, da CIDR der Standard ist, um die Autorität für ein Subnetz zu delegieren? Wenn es mehrere Methoden gibt, welche ist die beste? Müssen Sie die Delegierung je nach DNS-Server unterschiedlich behandeln (Bind, djbdns, Microsoft DNS, andere)? Nehmen wir an, ich habe die Kontrolle über ein Netzwerk der Klasse B 168.192.in-addr.arpa. Bitte geben Sie Beispiele für:

  • Wie delegiere ich die Autorität für eine / 22?
  • Wie delegiere ich die Autorität für eine / 25?

Antworten:


31

A / 22 zu delegieren ist einfach, es ist Delegation der 4 / 24s. A / 14 ist eine Delegation der 4 / 16er usw.

RFC2317 deckt die Sonderfälle mit einer Netzmaske ab, die länger als / 24 ist. Grundsätzlich gibt es keine sehr saubere Möglichkeit, die Delegierung von inaddr.arpa-Zonen auf etwas anderes als Oktettgrenzen vorzunehmen, aber Sie können dies umgehen. Angenommen, ich möchte 172.16.23.16/29 delegieren, das wären die IP-Adressen 172.16.23.16 -> 172.16.23.23.

Als Eigentümer der Zone 23.16.172.in-addr.arpa würde ich dies möglicherweise in meine Zonendatei 23.16.172.rev aufnehmen, um diesen Bereich an meinen Kunden zu delegieren:

16-29              IN NS  ns1.customer.com
16-29              IN NS  ns2.customer.com
16                 IN CNAME    16.16-29.23.16.172.in-addr.arpa.
17                 IN CNAME    17.16-29.23.16.172.in-addr.arpa.
18                 IN CNAME    18.16-29.23.16.172.in-addr.arpa.
19                 IN CNAME    19.16-29.23.16.172.in-addr.arpa.
20                 IN CNAME    20.16-29.23.16.172.in-addr.arpa.
21                 IN CNAME    21.16-29.23.16.172.in-addr.arpa.
22                 IN CNAME    22.16-29.23.16.172.in-addr.arpa.
23                 IN CNAME    23.16-29.23.16.172.in-addr.arpa.

Sie sehen also, dass ich eine neue Zone definiere (16-29.23.16.172.in-addr.arpa.) Und sie an die Nameserver meines Kunden delegiere. Dann erstelle ich CNAMEs aus den IPs, die an die entsprechende Nummer in der neu delegierten Zone delegiert werden sollen.

Als Kunde, an den diese delegiert wurden, würde ich in named.conf Folgendes tun:

zone "16-29.23.16.172.in-addr.arpa" { 
    type master;
    file "masters/16-29.23.16.172.rev";
};

Und dann würde ich in der .rev-Datei PTRs wie in jeder normalen inaddr.arpa-Zone erstellen:

17                 IN PTR office.customer.com.
18                 IN PTR www.customer.com.
(etc)

Das ist eine saubere Art und Weise und macht versierte Kunden glücklich, weil sie eine Inaddr.arpa-Zone haben, in die sie die PTRs einfügen können. Wenn Sie eine ganze Zone einrichten möchten, müssen Sie nur einzelne Datensätze mit ähnlichen Namen in ihrer Hauptzone benennen.

In diesem Fall hätten wir als Delegatoren in unserer Datei 23.16.172.rev Folgendes:

16                 IN CNAME    16.customer.com.
17                 IN CNAME    17.customer.com.
18                 IN CNAME    18.customer.com.
19                 IN CNAME    19.customer.com.
20                 IN CNAME    20.customer.com.
21                 IN CNAME    21.customer.com.
22                 IN CNAME    22.customer.com.
23                 IN CNAME    23.customer.com.

Das Konzept ähnelt dem der anderen Idee, aber anstatt eine neue Zone zu erstellen und diese an den Kunden zu delegieren, benennen Sie die Datensätze in Namen in der bereits vorhandenen Hauptzone des Kunden.

Der Kunde würde so etwas in seiner Zonendatei customer.com haben:

office             IN A   172.16.23.17
17                 IN PTR office.customer.com.
www                IN A   172.16.23.18
18                 IN PTR www.customer.com.
(etc)

Es kommt nur auf die Art des Kunden an. Wie gesagt, es kommt nur auf den Kundentyp an. Ein versierter Kunde wird es vorziehen, seine eigene inaddr.arpa-Zone einzurichten, und wird es für sehr seltsam halten, PTRs in einer Domain-Name-Zone zu haben. Ein nicht versierter Kunde möchte, dass es "einfach funktioniert", ohne dass eine Menge zusätzlicher Konfigurationsschritte erforderlich sind.

Es gibt wahrscheinlich andere Methoden, die nur die beiden beschreiben, mit denen ich vertraut bin.


Ich habe nur über meine Aussage nachgedacht, wie einfach / 22 und / 14 sind, und darüber, warum das stimmt, aber alles zwischen 25 und 32 ist schwierig. Ich habe das noch nicht getestet, aber ich frage mich, ob Sie die gesamte / 32 so an den Kunden delegieren könnten:

16                 IN NS ns1.customer.com.
17                 IN NS ns1.customer.com.
(etc)

Dann fangen Sie auf Kundenseite die gesamte / 32:

zone "16.23.16.172.in-addr.arpa" { type master; file "masters/16.23.16.172.rev"; };
zone "17.23.16.172.in-addr.arpa" { type master; file "masters/17.23.16.172.rev"; };
(etc)

Und dann würden Sie in der einzelnen Datei so etwas haben:

@            IN PTR office.customer.com.

Der offensichtliche Nachteil ist, dass eine Datei pro 32 eine Art Brutto ist. Aber ich wette, es würde funktionieren.

Alles, was ich erwähnt habe, ist reines DNS. Wenn ein DNS-Server dies nicht zulässt, liegt dies daran, dass die volle Funktionalität von DNS eingeschränkt wird. Meine Beispiele verwenden offensichtlich BIND, aber wir haben dies kundenseitig mithilfe von Windows-DNS und BIND durchgeführt. Ich sehe keinen Grund, warum es mit keinem Server funktioniert.


1
Sie denken wahrscheinlich an rfc2317 ( tools.ietf.org/html/rfc2317 )
Zoredache


0

BIND verfügt über das proprietäre $ GENERATE-Makro zum Erstellen von Sequenzen von PTR-Datensätzen, geht jedoch auch von einer klassischen Welt aus und ist für Sie nicht sehr nützlich. Ich kenne keine anderen Server, die spezielle Unterstützung für CIDR-Reverse-Zonen bieten, obwohl ich vermute, dass eine Nachfrage danach besteht!

PowerDNS hat eine nette Backend-Oberfläche, mit der Sie Ihre eigenen schreiben können, wenn das Problem groß genug ist, um die Mühe wert zu sein. Sie können Prototypen auch mit dem "PipeBackend" erstellen. Über die MySQL / PostgreSQL-Schnittstellen können Sie sogar einige magische SQL-Aufgaben ausführen - zumal Postgres einen "cidr" -Datentyp hat.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.