Czy łańcuch CNAME do CNAME jest dozwolony?

68

Czy w DNS jest dozwolone, aby rekord CNAME wskazywał na inny rekord CNAME?

Potrzebujemy tego, ponieważ mamy nazwę hosta, w którym chcemy być sprawdzane na adres IP naszego komputera z serwerem internetowym. Mamy też inny komputer z serwerem sieciowym, który może zostać aktywowany na wypadek śmierci pierwszego. W takim przypadku musielibyśmy szybko wskazać nazwę hosta na adres IP komputera stojącego przy serwerze WWW.

Niestety, nazwa hosta znajduje się w domenie DNS, gdzie każda zmiana zajęłaby dużo czasu z powodu ręcznego działania zależnego od innych sysadminów. Ale mamy inną domenę DNS, w której sami możemy szybko wprowadzić zmiany. Posiadanie łańcucha CNAME do CNAME wydaje się możliwym rozwiązaniem. Ale czy to jest dozwolone? Czy przeglądarki to zrozumieją?

Erik Sjölund
źródło

Odpowiedzi:

81

Od RFC 1034 - Nazwy domen - koncepcje i udogodnienia :

Nazwy domen w RR, które wskazują na inną nazwę, powinny zawsze wskazywać na nazwę podstawową, a nie na alias. Pozwala to uniknąć dodatkowych pośredników w dostępie do informacji. Na przykład adres na nazwę RR dla powyższego hosta powinien wyglądać następująco:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

zamiast wskazywać na USC-ISIC.ARPA. Oczywiście, zgodnie z zasadą niezawodności, oprogramowanie domeny nie powinno zawieść, jeśli zostanie zaprezentowane z łańcuchami lub pętlami CNAME; Należy śledzić łańcuchy CNAME, a pętle CNAME sygnalizować jako błąd.

Tak, jest to dozwolone i odpowiednio napisane oprogramowanie poradzi sobie z tym OK. Łańcuchy CNAME nie są jednak uważane za dobrą praktykę i nakładają na infrastrukturę koszty ogólne.

Paweł Brodacki
źródło
3
+1 za odniesienie RFC
Alnitak
16
Chociaż robię to cały czas, powyższy cytat jest poza kontekstem. Tuż nad tym akapitem brzmi:Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby
3
Wspomniany przez faceta ds. Sieci Microsoft Azure , łańcuchowanie CNAME jest ważne, aby wykonać dla nich równoważenie ładowania AnyCast.
Paul Lan
26

Jasne, że jest to możliwe.

Zasadniczo jest to jednak odradzane z oczywistego powodu, że wykorzystuje więcej zasobów DNS. Na przykład:

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

Zapytanie o „pasek” spowoduje foozapytanie CNAME , a następnie someserver.somehost.com.zapytanie, co spowoduje jedno dodatkowe zapytanie.

Dla każdego elementu w łańcuchu, który dodasz, wymagane będzie kolejne zapytanie.

Innym powodem, dla którego jest to odradzane, jest to, że tworząc takie łańcuchy, zwiększa się szansa na utworzenie pętli CNAME ; powinny być one wykrywane automatycznie przez bieżące serwery DNS, ale nadal powodują duże obciążenie serwerów.

Aron Rotteveel
źródło
5

Tak, jest to dozwolone i będzie działać, ale nie jest uważane za dobrą praktykę. Wiele wyszukiwań zużywa więcej zasobów i istnieje ryzyko przypadkowego utworzenia pętli.

Mike Scott
źródło