Posiadanie wielu CNAME

11

Nasza domena DNS ma 5 poziomów CNAME z przyczyn historycznych. Niektóre rzeczy zostały zlecone na zewnątrz w celu zapewnienia wysokiej dostępności itp., Ale nie o to tutaj chodzi. Moje pytanie dotyczy nadmiaru 5 CNAME dla usługi rozpoznawania nazw DNS? Nie byłem w stanie znaleźć żadnej znanej witryny z ponad 2-3 poziomowymi zagnieżdżonymi CNAME wskazującymi na różne domeny DNS.

Nasz chmiel CNAME wygląda następująco: (używam xyz jako przykładu)

www.xyz.com -> xyz.akadns.net -> xyz.worldwide.akadns.net -> xyz.cedexis.net -> xyz.msedge.net -> host1.msedge.net (końcowy rekord A \ AAAA)

Widzę, że wielu klientów skarży się na problemy z rozwiązaniem DNS na naszej stronie, gdy inne witryny działają dla nich dobrze, chociaż kiedy używam http://check-host.net/check-dns?host=www.xyz.com do testowania naszego DNS rozkład.

Wydaje się, że zawsze działa dobrze na całym świecie. Doszedłem do wniosku, że głównie jest tak, że lokalny dostawca ISP psuje się, gdy jeden z powyższych przeskoków nie jest w stanie rozwiązać. nslookup nie działa na tych komputerach klienckich tylko dla naszej witryny i to zbyt sporadycznie.

Czy ten rodzaj wielopoziomowej CNAME jest ogólnie złym projektem?

Vishal Naidu
źródło
1
Pracowałem dla Akamai kilka lat temu i jeden z naszych klientów zgłosił, że pewien router ma problem z 5 poziomami zagnieżdżania. Myślę, że oprogramowanie routera zostało ostatecznie naprawione.
Barmar

Odpowiedzi:

15

Czy ten rodzaj wielopoziomowej CNAME jest ogólnie złym projektem?

Łańcuchy CNAME do CNAME niezabronione, ale jak już wiesz, nie jest to bardzo solidne rozwiązanie.

Każda dodatkowa CNAME zwiększa głębokość rekurencji dla resolvera i ta głębokość nie zawsze jest nieograniczona. Ryzykujesz także tworzeniem pętli lub uruchamianiem algorytmu wykrywania pętli.

Aby zorientować się, ile i jakie zapytania powinien wykonać serwer nazw użytkowników, uruchom śledzenie DNS:

dig +trace www.example.com 

lub w systemie Windows

nslookup -debug www.example.com
HBruijn
źródło
11

HBrujin ma rację, ale tak naprawdę głębokość rekurencji jest znacznie gorsza niż cokolwiek, dig +traceco pokaże. Głębokość rekurencji jest czymś, co często jest szydzone i nadmiernie trywializowane, ale ci ludzie zapominają, że nie tylko rozwiązujesz ~ 5 CNAMErekordów. Wynika to z faktu, że ustalenie celu CNAMErekordu powoduje potrzebę wyszukania każdego serwera nazw na ścieżce, co często jest o wiele więcej, niż widać na pierwszy rzut oka.

Czy CNAMEcel mieszka w innej domenie? Konieczne będzie ponowne przechodzenie do jego serwerów nazw, co wymaga nie tylko NSwyszukiwania rekordów, ale także A(AAA)wyszukiwania tam, gdzie nie ma kleju. Czy serwery nazw tych serwerów mieszkają w innej domenie najwyższego poziomu? Jeśli te domeny TLD nie współużytkują serwerów nazw, istnieje prawdopodobieństwo, że rekordy kleju nie zostaną uwzględnione, a ty będziesz musiał ponownie przeglądać serwery nazw innych TLD. I tak dalej.

Każdy CNAMErekord dodany do łańcucha może wykładniczo zwiększyć wymaganą liczbę wyszukiwań w zależności od liczby serwerów nazw, które należy powtórzyć. Te łańcuchy wyszukiwania rekordów CNAME+ NS+ A(AAA)mogą z kolei być niesamowicie zawiłe, osiągając głębokie ponad 150 poziomów na pustej pamięci podręcznej. W tym przypadku limity głębokości rekurencji mogą stać się wyjątkowo nieprzyjemne, co powoduje tymczasowe niepowodzenia wyszukiwania domeny na pustej pamięci podręcznej i z powodów, które często nie są od razu widoczne.

Krótko mówiąc, możesz to zrobić, ale postępuj ostrożnie i poważnie podchodź do tej natury. Nie masz kontroli nad tym, jak często rekursywne serwery DNS w Internecie są restartowane lub usuwane.

Andrew B.
źródło
Moje oprogramowanie klienckie znajduje się na wielu komputerach wykonujących zdalne połączenia http. Czy w takim razie niesprawiedliwe będzie powtórzenie wszystkich CNAME od klienta, zmniejszając głębokość rekurencji / obciążenie resolwera? Czy to brzmi dobrze, czy coś mi brakuje? Wiem, że CNAME nie zmienią się w różnych regionach geograficznych.
Vishal Naidu
Nie jest to dobre podejście. Zazwyczaj serwer, który nie wyszukał danych, tymczasowo buforuje awarię. Zapytanie może ponownie się powieść w przyszłości (powiedzmy za 5 minut), ale jest mało prawdopodobne, aby odniosło sukces natychmiast. Jeśli podasz nazwę swojego rekordu DNS, dam ci znać, czy jest to tak naprawdę problem głębokości rekurencji, czy coś mniej oczywistego. Nienawidzę tego, że idziemy do niewłaściwej króliczej nory.
Andrew B,
0

Wielopoziomowe CNAMEsą często przydatne w praktyce. Każdy poziom przekierowania zapewnia poziom kontroli w potencjalnie odrębnej strefie administracyjnej lub zupełnie innej organizacji. Chociaż nie jest to prawie każda technicznie konieczna, może obejść problemy organizacyjne .

Jak zauważyli inni, może to powodować trudności, ale można temu zaradzić:

  • monitoruj wszystkie serwery DNS. Może ktoś źle działa. Monitoruj serwery zewnętrzne, a także własne. Może być konieczne zgłoszenie problemu do Akamai lub innych dostawców.

  • TTLWartości s powinny być ustawione na tyle wysoko, aby umożliwić buforowanie, ale na tyle niskie, aby można było odpowiednio szybko przenieść ruch do aplikacji

pisklęta
źródło
2
Nie jestem pewien, czy rozumiem zalecenie dotyczące monitorowania. Limity głębokości rekurencji różnią się nie tylko w zależności od produktu, jak proponujesz je monitorować? Nie można łatwo zidentyfikować przyczyny pierwotnej infra rekurencyjnej innej osoby.
Andrew B