Serwery nazw

Transkrypt

Serwery nazw
Serwery nazw
Teoretycznie możliwe jest załadowanie całej bazy DNS do pojedynczego serwera i powierzenie temu serwerowi funkcji
odpowiadania na wszystkie żądania związane z tą bazą. W praktyce jednak rozwiązanie takie nie może być brane pod uwagę z dwóch
powodów. Pierwszym z nich jest niewyobrażalne obciążenie, jakiemu serwer ten musiałby sprostać, drugim natomiast fakt, że awaria
(lub po prostu wyłączenie) tegoż serwera sparaliżowałaby cała domenę (teoretycznie nawet cały Internet).
W związku z powyższym konieczne jest podzielenie całej przestrzeni nazw na rozłączne strefy (ang. zones) - jeden z możliwych
sposobów takiego podziału przedstawiono na rysunku 7.2. Każda ze wspomnianych stref obejmuje pewien wycinek drzewa
przestrzeni nazw i ma własne serwery DNS zwane serwerami nazw (ang. name servers). Zazwyczaj jeden z tych serwerów, zwany
głównym serwerem nazw (ang. primary name server) zajmuje się bezpośrednią obsługą bazy DNS na dysku (dyskach), podczas gdy
pozostałe, zwane wtórnymi (ang. secondary name servers) uzyskują dostęp do zawartości bazy pośrednio, za pomocą serwera
głównego. Dla zwiększenia niezawodności niektóre z serwerów DNS danej strefy mogą być zlokalizowane poza tą strefą.
www.zsp1.eu - 1/4
Konkretny podział domeny na strefy — czyli położenie granic poszczególnych stref — określany jest przez administratora domeny i
podyktowany jest głównie lokalizacją poszczególnych serwerów nazw. W podziale przedstawionym na rysunku 7.2 domena
cs.yale.edu nie korzysta z serwera nazw przeznaczonego dla domeny eng.yale.edu, posiada bowiem własny serwer nazw.
Widocznie zarządcy domeny eng.yale.edu nie chcieli uruchamiać własnego serwera nazw (w przeciwieństwie do informatyków
administrujących domeną cs.yale.edu). W efekcie domena cs.yale.edu jest odrębną strefą, podczas gdy domena eng.yale.edu nie jest.
Proces określający nazwy, otrzymawszy żądanie znalezienia adresu IP odpowiadającego danej nazwie mnemonicznej domeny,
przekazuje tę nazwę do jednego z lokalnych serwerów nazw. Jeżeli odnośna domena znajduje się w zakresie jurysdykcji tego serwera
(jak np. domena ai.cs.yale.edu w zakresie jurysdykcji serwera cs.yale.edu) zwracany przez serwer rekord zasobów jest rekordem
wiarygodnym (ang. authoritative record), czyli na pewno aktualnym; w przypadku rekordu pochodzącego z pamięci cache (a nie
bezpośrednio z serwera) nie możemy być pewni jego aktualności, a więc nie zasługuje on na miano rekordu wiarygodnego.
Lokalne serwery nie dysponują jednak na ogół informacją o domenach odległych, dlatego też muszą one uzyskiwać tę informację od
serwerów nadrzędnych, czyli zlokalizowanych na wyższych poziomach w drzewie przestrzeni nazw. W sytuacji zilustrowanej na
rysunku 7.3 proces określający nazwy, dziejąca na hoście flits.cs.vu.nl, próbuje uzyskać adres IP hosta linda.cs.yale.edu. W kroku 1.
wysyła ona żądanie do lokalnego serwera nazw cs.uv.nl; żądanie to zawiera nazwę domeny, typ rekordu (A) i jego klasę (IN).
Tak się jednak składa, że lokalny serwer nazw nie posiada żadnej informacji na temat rzeczonej nazwy, bo nigdy wcześniej nie miał z
nią do czynienia; próbuje on więc uzyskać tę informację z pobliskich serwerów lokalnych — niestety, one również nią nie dysponują.
www.zsp1.eu - 2/4
W związku z tym nasz serwer wysyła pakiet UDP (krok 2.) do serwera domeny edu — adres tego serwera (edu-server.net) pobiera z
własnego pliku konfiguracyjnego. Jest mało prawdopodobne, by serwer nazw domeny edu dysponował informacją na temat hosta
linda.cs.yale.edu czy nawet domeny cs.yale.edu, na pewno jednak dysponuje on adresami serwerów nazw swoich poddomen, w
szczególności domeny yale.edu. Żądanie przekazywane jest więc do serwera nazw domeny yale.edu (krok 3,). a następnie do domeny
cs.yale.edu (krok 4.), której serwer nazw ostatecznie udostępnia poszukiwany adres IP, w formie wiarygodnego rekordu zasobów.
Rekord ten musi teraz przebyć drogę powrotną (kroki 5 - 8), by ostatecznie trafić do procedury wywołującej.
Gdy tylko rekord ten przybędzie do serwera nazw domeny cs.vu.nl, zostanie on wpisany do pamięci cache tego serwera, by przy
powtórnym żądaniu dotyczącym nazwy linda.cs.yale.edu uniknąć powtarzania opisanych ośmiu kroków. Niewątpliwie zwiększa to
efektywność, lecz jednocześnie czyni lokalny serwer nazw niewrażliwym na wszelkie zmiany w serwerach nazw odległych domen.
W efekcie rekord zapisany w cache'u lokalnego serwera może już nie odzwierciedlać stanu faktycznego, aby więc uniknąć
problemów wynikających z jego (ewentualnej) nieaktualności, należy racjonalnie ograniczyć czas jego obecności we wspomnianym
cache'u. Temu właśnie celowi służy pole Czas życia znajdujące się w każdym rekordzie zasobowym. Mimo iż wiele hostów
utrzymuje swe adresy IP bez zmian przez wiele lat. w opisanym przypadku bezpiecznie będzie ograniczyć czas życia rekordu do
jednego dnia. W stosunku do informacji o większym stopniu ulotności wskazane jest ograniczanie ich obecności w pamięci cache do
kilku minut, a nawet sekund.
Należy zauważyć, iż opisany scenariusz uzyskiwania adresu IP ma charakter rekurencyjny: jeżeli mianowicie dany serwer nie
potrafi spełnić żądania za pomocą własnych zasobów, formułuje kolejne żądanie pod adresem innego serwera, który z kolei znów
może zaprząc do pomocy kolejny itd. Niektóre serwery nie implementują jednak takiego rekursywnego mechanizmu, zastępując go
mechanizmem na wskroś iteracyjnym: jeżeli zasoby serwera są niewystarczające do spełnienia żądania, zwraca on po prostu nazwę
kolejnego serwera, zamiast formułować pod jego adresem nowe żądanie.
Warto także wspomnieć, iż w przypadku przeterminowania żądania (czyli braku odpowiedzi z serwera w założonym limicie czasu)
klient DNS nie powinien ponawiać próby, lecz skierować żądanie do innego serwera DNS. Zakłada się bowiem, że przyczyną
przeterminowania jest raczej po prostu wyłączenie serwera niż zagubienie pakietu z żądaniem.
Mimo krytycznego znaczenia DNS dla poprawnego funkcjonowania internetu, jego mozliwości ograniczają się do "zmiany"
mnemonicznych nazw domen (lub hostów) na adrsy IP; nie jest on w stanie wspomóc poszukiwania ludzi, zasobó, usług i innych
obiektów w ogólności. Zadaniem temu może natomiast spraostać inna usługa katalogowa, nosząca orginalną nazwę LDAP
(Lightweight Directory Access Protocol, dosł. Lekki Protokół Usług Katalogowych).
www.zsp1.eu - 3/4
LDAP jest wykorzystywany praktycznie w adresacji sieci Internet w celu zapewnienia niezawodności, skalowalności i
bezpieczeństwa danych. W odróżnieniu od X.500 nie potrzebuje ani szerokiego pasma, ani dużej mocy obliczeniowej. Pracuje w
oparciu o protokół TCP/IP lub inne połączeniowe usługi transportu. Dane grupowane są w strukturze przypominającej drzewo
katalogów. Każdy obiekt jest jednoznacznie identyfikowany poprzez swoje położenie w drzewie.
LDAP w wielu sytuacjach uznawane jest za rozwiązanie lepsze od innych usług katalogowych, ponieważ korzystając z TCP/IP
(które działa tylko w warstwie transportowej modelu OSI), daje niezwykle szybkie odpowiedzi na żądania zgłaszane przez klienta.
www.zsp1.eu - 4/4

Podobne dokumenty