Co to jest „rekurencyjne zapytanie DNS”? [Zamknięte]

15

Czy ktoś może krótko wyjaśnić, co oznacza „rekurencyjne zapytanie DNS” i jak można je uznać za złe ?

LanceBaynes
źródło
Wiedziałem, kto napisał to tylko z tytułu. Nie wiem, dlaczego ciągle publikujesz tutaj informacje o DNS, ale to wcale nie jest specyficzne dla Uniksa / Linuksa. Osobiście myślę, że to przyzwoity pytanie, ale to nie na temat tutaj, i nie sądzę, mamy inną stronę w sieci, która chce go
Michael Mrozek
Czy to naprawdę nietypowy temat? Biorąc pod uwagę prawdopodobnie 90% światowych serwerów DNS działa na unix / linux? Być może pytanie powinno zostać przeformułowane: „Jak mogę skonfigurować mój serwer DNS, aby odpowiadał na zapytania rekurencyjne i dlaczego powinienem tego unikać?” ale czy to naprawdę „offtopic”? Po prostu ciekawy.
Gabe.
Można by to uznać za lepsze dopasowanie do security.stackexchange.com, ale nie widzę żadnego prawdziwego powodu, aby odrzucić to tutaj wprost ...
Shadur

Odpowiedzi:

25

TL; DR : Zapytania rekurencyjne są częścią sposobu działania Internetu i DNS, ale nie wszystkie serwery DNS powinny otrzymywać zapytania rekurencyjne, a gdy te, które nie powinny odpowiadać, mogą powodować problemy.

Dłuższa wersja:

Rekurencja, n: patrz sekcja Rekurencja.

Rekursywne zapytanie DNS ma miejsce, gdy serwer DNS, o który prosiłeś o adres, powiedzmy, unix.stackexchange.com, nie zna samej odpowiedzi, więc musi sprawdzić na innym serwerze.

Zwykle tak działa DNS - serwer DNS Twojego dostawcy Internetu nie ma trwale zapamiętanych rekordów domeny internetowej z oczywistych powodów, więc następująca wymiana odbywa się pod maską:

  1. Ty: Hej, przeglądarce, pokaż mi http://unix.stackexchange.com

  2. Przeglądarka: Jasne! ... Hm. Tak naprawdę nie wiem, jaki to adres IP.

    Hej, OS, czy możesz mi powiedzieć, gdzie znaleźć unix.stackexchange.com?

  3. OS: Jasne, że ...

    Hmm Nie ma go w moim pliku hosts. Pozwól mi tylko sprawdzić moją konfigurację resolvera ...

    Hej, serwer DNS dostawcy ISP, czy możesz mi powiedzieć, gdzie znaleźć unix.stackexchange.com?

  4. Serwer DNS ISP: Jasne!

    ... Hmmm. Tego nie ma na mojej liście autorytatywnych domen, a teraz nie mam tej pamięci podręcznej w pamięci podręcznej.

    Hej, internetowe serwery root. Czy możesz mi powiedzieć, kto jest autorytatywny dla stackexchange.com?

  5. Internetowe serwery root: Jasne! Z naszych danych wynika, że ​​chcesz mieć stronę ns1.serverfault.com, ns2.serverfault.com lub ns3.serverfault.com.

  6. Serwer DNS ISP: Dzięki, Internetowe serwery root!

    Cześć, ns2.serverfault.com, czy możesz mi powiedzieć, gdzie znaleźć unix.stackexchange.com?

  7. ns2.serverfault.com : Pewnie! To jest adres 64.34.119.12

  8. Serwer DNS ISP : Świetnie, dziękuję!

    System operacyjny, liczba, której szukasz to 64.34.119.12.

  9. System operacyjny: Świetnie, dziękuję!

    Przeglądarka, potrzebujesz adresu 64.34.119.12

  10. Przeglądarka: Świetnie, dziękuję!

    Okej, wywołanie strony teraz.

  11. Ty: Tak, dzięki przeglądarce!

Teraz pamiętaj, że w rzeczywistości są tutaj dwa rodzaje serwerów nazw - autorytatywne serwery DNS (tak zwane serwery „root”, które poinformowały serwer DNS twojego dostawcy ISP, gdzie znaleźć serwer DNS SE.com oraz autorytatywny serwer DNS SE.com ) oraz rekurencyjne lub przekierowujące serwery DNS (serwer DNS Twojego usługodawcy internetowego).

Zwykle ten pierwszy typ nie powinien odpowiadać na zapytania rekurencyjne, zwłaszcza nie spoza własnej domeny. Mali dostawcy usług internetowych czasami oszczędzają na kosztach, ponieważ ich główny autorytatywny serwer nazw jest tym samym serwerem, co ich główny serwer nazw do przekazywania, ale jest to nieco niebezpieczna zasada - szczególnie jeśli nie skonfigurujesz serwera tak, aby odrzucał zapytania rekurencyjne spoza twojego zakresu adresów IP.

Dalsze czytanie tutaj na Wikipedii .

Shadur
źródło
O ile wiem, serwery Root powinny kierować cię do .comserwerów, a stamtąd serwer rekurencyjny ISP wskazywałby na serwer SE.com.
Hanan N.
Tak, ale pomyślałem, że utrzymam to przynajmniej / nieco / uproszczone, ale zrozumiałe.
Shadur,
Myślę, że zapomniałeś kroku 12 .: Michael Mrozek: „Hej, LanceBaynes, wiedziałem, kto napisał to tylko z tytułu ...”
Alois Mahdal
Doskonały! odpowiedź została pozytywnie oceniona 1
Valentin Bajrami,
5

Jeśli istnieją 2 serwery DNS, DNS-A jest autorytetem dla domeny-a, a DNS-B jest autorytetem dla domeny-b, a ktoś wysyła zapytanie DNS do DNS-A w celu wyszukania domeny-b. DNS-A byłby wówczas rekurencyjny, wysyłając żądanie do DNS-B w celu wyszukania domeny-b. Zasadniczo zapytanie rekurencyjne ma miejsce wtedy, gdy serwer DNS w imieniu klienta, który wysłał zapytanie, goni ślad DNS w celu spełnienia żądania.

Jest to w porządku, jeśli hostujesz serwer DNS dla sieci, takiej jak biuro, a wszystkie maszyny w tym biurze będą używać serwera DNS do wykonywania wszystkich wyszukiwań. Jest to złe, jeśli pozwalasz komukolwiek na wykonywanie zapytań rekurencyjnych DNS. Jest to również złe, jeśli hostujesz serwer DNS, który ma tylko spełniać żądania dla określonej domeny. Jeśli ktoś poprosi o wyszukanie innej domeny, serwer DNS powinien zwrócić błąd zamiast robić rekurencję.

Jon Lin
źródło