Odwrotny DNS w świecie CIDR

24

Odwrotny DNS wydaje się być silnie powiązany z granicami klas. Jakie metody istnieją teraz, skoro CIDR jest standardem do delegowania uprawnień dla podsieci? Jeśli istnieje wiele metod, która z nich jest najlepsza? Czy musisz obsługiwać delegowanie inaczej w zależności od serwera DNS (Bind, djbdns, Microsoft DNS, inne)? Powiedzmy, że mam kontrolę nad siecią klasy B 168.192.in-addr.arpa, podaj przykłady:

  • Jak przekazać uprawnienia dla / 22?
  • Jak przekazać uprawnienia dla / 25?
Zoredache
źródło

Odpowiedzi:

31

Delegowanie a / 22 jest łatwe, to delegowanie 4 / 24s. A / 14 to delegacja 4/16 itd.

RFC2317 obejmuje przypadki specjalne z maską sieci dłuższą niż / 24. Zasadniczo nie ma super-czystego sposobu na delegowanie stref inaddr.arpa na nic poza granicami oktetów, ale można to obejść. Powiedzmy, że chcę delegować 172.16.23.16/29, które byłyby adresami IP 172.16.23.16 -> 172.16.23.23.

Jako właściciel strefy 23.16.172.in-addr.arpa, mógłbym umieścić to w pliku strefy 23.16.172.rev, aby przekazać ten zakres mojemu klientowi:

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.

Widać więc, że definiuję nową strefę (16-29.23.16.172.in-addr.arpa.) I deleguję ją na serwery nazw moich klientów. Następnie tworzę CNAME z adresów IP, które mają być delegowane na odpowiedni numer w nowo delegowanej strefie.

Jako klient, któremu zostały delegowane, zrobiłbym coś takiego w pliku named.conf:

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

A potem w pliku .rev chciałbym po prostu zrobić PTR jak każdą normalną strefę in-addr.arpa:

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

Jest to w pewnym sensie czysty sposób, aby to zrobić i sprawia, że ​​doświadczony klient jest szczęśliwy, ponieważ mają strefę in-addr.arpa do umieszczania PTR itp. Krótszy sposób, aby to zrobić dla klientów, którzy chcą kontrolować zwrotny DNS, ale nie Chcąc założyć całą strefę, wystarczy po prostu pojedynczy rekord CNAME o podobnych nazwach w głównej strefie.

W takim przypadku my, jako delegaci, mielibyśmy coś takiego w naszym pliku 23.16.172.rev:

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.

Jest to więc koncepcja podobna do drugiego pomysłu, ale zamiast tworzyć nową strefę i delegować ją do klienta, CNAME zapisujesz rekordy nazwom w już istniejącej głównej strefie klienta.

Klient miałby coś takiego w swoim pliku strefy customer.com:

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)

To zależy tylko od rodzaju klienta. Tak jak powiedziałem, zależy to tylko od typu klienta. Doświadczony klient woli założyć własną strefę in-addr.arpa i pomyśli, że bardzo dziwnie jest mieć PTR w strefie nazwy domeny. Niezbyt doświadczony klient będzie chciał, aby „po prostu działał” bez konieczności wykonywania dodatkowej konfiguracji.

Prawdopodobnie istnieją inne metody, opisując tylko te dwie, które znam.


Właśnie myślałem o moim stwierdzeniu o tym, jak / 22 i / 14 są łatwe i zastanawiałem się, dlaczego to prawda, ale wszystko między 25 a 32 jest trudne. Nie testowałem tego, ale zastanawiam się, czy możesz przekazać klientowi / 32 w następujący sposób:

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

Następnie, po stronie klienta, łapiesz cały / 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)

A następnie w indywidualnym pliku miałbyś coś takiego:

@            IN PTR office.customer.com.

Oczywistym minusem jest to, że jeden plik na / 32 jest rodzajem brutto. Ale założę się, że to zadziała.

Wszystko, o czym wspomniałem, to czysty DNS, jeśli jakikolwiek serwer DNS ci na to nie pozwala, to dlatego, że ogranicza pełną funkcjonalność DNS. Moje przykłady używają oczywiście BIND, ale zrobiliśmy to po stronie klienta, używając Windows DNS i BIND. Nie widzę powodu, dla którego nie działałby z żadnym serwerem.

jj33
źródło
1
Prawdopodobnie myślisz o rfc2317 ( tools.ietf.org/html/rfc2317 )
Zoredache
0

BIND ma własne makro $ GENERATE do tworzenia sekwencji rekordów PTR, ale zakłada także pełen klasy świat i nie będzie dla ciebie zbyt przydatne. Nie znam żadnych innych serwerów, które mają specjalne wsparcie dla stref odwrotnych CIDR, chociaż podejrzewam, że jest na to zapotrzebowanie!

PowerDNS ma ładny interfejs zaplecza, który pozwoliłby Ci napisać własny, jeśli problem jest wystarczająco duży, aby był wart wysiłku. Możesz także prototypować za pomocą „PipeBackend”. Możesz nawet wykonać magiczne czynności SQL za pomocą interfejsów MySQL / PostgreSQL - zwłaszcza, że ​​Postgres ma typ danych „cidr”.

Gavin Brown
źródło
0

http://aa.net.uk/kb-domains-reversedns.html (mniej więcej w połowie) wyjaśnia, w jaki sposób mój dostawca usług internetowych wykonuje zwrotny DNS. Podejrzewam, że każdy sposób, w jaki to zrobisz, będzie brzydki jak diabli.

David Pashley
źródło