Domain Name System (DNS, pol. system nazw domen) – hierarchiczny rozproszony system nazw sieciowych, który odpowiada na zapytania o nazwy domen[1].
Dzięki DNS nazwa mnemoniczna, np. pl.wikipedia.org jest tłumaczona na odpowiadający jej adres IP, czyli 91.198.174.192.
DNS to złożony system komputerowy oraz prawny. Zapewnia z jednej strony rejestrację nazw domen internetowych i ich powiązanie z adresami IP. Z drugiej strony realizuje bieżącą obsługę komputerów odnajdujących adresy IP odpowiadające poszczególnym nazwom. Jest nieodzowny do działania prawie wszystkich usług sieci Internet[2].
Rozproszona baza danych DNS jest indeksowana nazwami domen, tworzącymi drzewiastą strukturę hierarchiczną. Węzły drzewa DNS posiadają etykiety tekstowe o długości od 1 do 63 znaków: pusta etykieta o zerowej długości zarezerwowana jest dla węzła głównego. Etykiety węzłów oddzielone kropkami czytane w kierunku od węzła do korzenia drzewa tworzą pełną nazwę domenową[3] (np. „pl.wikipedia.org.”[4]).
Domena jest poddrzewem hierarchii nazw, obejmującym zbiór domen (subdomen) o wspólnym sufiksie, nazwanym tak jak węzeł na szczycie (np. domena funkcjonalna com.pl grupująca nazwy zakończone .com.pl). Nazwy „hostów” są nazwami domen, do których przypisana jest informacja o konkretnych urządzeniach i zazwyczaj występują w liściach drzewa DNS (czyli nie mają swoich poddomen), ale ogólnie jedna nazwa może opisywać zarówno hosta (np. główny serwer WWW organizacji), jak i całą domenę[3].
Przykładowo, wewnątrz domeny najwyższego poziomu .pl utworzono wiele domen:
Nazwy domen mogą zawierać litery, cyfry i znak „-”. W nazwach niektórych domen można używać znaków narodowych (IDN) takich jak „ą” czy „ż”. Trwają prace nad nowymi standardami odpowiadającymi DNS, które będą obsługiwać kodowanie Unicode, co pozwoli na umieszczanie w nazwach domen dowolnych znaków np. polskich albo chińskich równocześnie. W Polsce domeny zawierające znaki diakrytyzowane praktycznie nie występują[5].
DNS, jako system organizacyjny, składa się z dwóch instytucji – IANA i ICANN. Nadzorują one ogólne zasady przyznawania nazw domen i adresów IP. Nie zajmują się jednak one przydzielaniem domen poszczególnym chętnym, jedynie rozdzielają domeny najwyższego poziomu (takie jak „.pl”, „.gov”, „.com”, „.eu”) pomiędzy kraje lub wybrane organizacje i przekazują im prawa do zarządzania tymi domenami. Te mogą dalej przekazywać nadzór nad całością bądź częścią swoich domen, i tak Rząd Polski przekazuje nadzór nad domeną .pl Naukowej i Akademickiej Sieci Komputerowej, która rozdziela poddomeny w obrębie domeny .pl pomiędzy zainteresowanych. Ci z kolei mogą rozdzielać te domeny pomiędzy poszczególne komputery lub dalej swoim klientom.
W wielu krajach domena internetowa przyznana przez system DNS staje się własnością tego, kto pierwszy ją kupi. W Polsce jest ona tylko wynajmowana na określony czas. Jeżeli ktoś zrezygnuje ze swojej domeny i zwróci ją administratorowi DNS, może ona trafić w inne ręce.
Instytucje administrujące DNS na świecie:
Instytucje administrujące DNS w Polsce:
Podstawą technicznego systemu DNS jest ogólnoświatowa sieć serwerów przechowujących informacje na temat adresów domen. Każdy wpis zawiera nazwę oraz odpowiadającą jej wartość, najczęściej adres IP. System DNS jest podstawą dla rozwiązywania nazw hostów w Internecie.
DNS to również protokół komunikacyjny opisujący sposób łączenia się klientów z serwerami DNS. Częścią specyfikacji protokołu jest również zestaw zaleceń, jak aktualizować wpisy w bazach domen internetowych. Na świecie jest wiele serwerów DNS, które odpowiadają za obsługę poszczególnych domen internetowych. Domeny mają strukturę drzewiastą, na szczycie znajduje się 13 głównych serwerów (root servers) obsługujących domeny najwyższego poziomu (TLD – top level domains), których listę z ich adresami IP można pobrać z ftp://ftp.rs.internic.net/domain/named.root
Serwery najwyższego poziomu z reguły posiadają tylko odwołania do odpowiednich serwerów DNS odpowiedzialnych za domeny niższego rzędu, np. serwery główne (obsługujące między innymi TLD.com) wiedzą, które serwery DNS odpowiedzialne są za domenę example.com. Serwery DNS zwracają nazwę serwerów odpowiedzialnych za domeny niższego rzędu. Możliwa jest sytuacja, że serwer główny odpowiada, że dane o domenie example.com posiada serwer dns.example.com. W celu uniknięcia zapętlenia w takiej sytuacji serwer główny do odpowiedzi dołącza specjalny rekord (tak zwany glue record) zawierający także adres IP serwera niższego rzędu (w tym przypadku dns.example.com).
System DNS posiada następujące cechy:
Podstawy protokołu DNS zostały opisane w 1982 roku w dokumencie RFC 819 ↓ przez Jona Postela i Zaw-Sing Su. Dokumenty z 1983 r. – RFC 882 ↓ i RFC 883 ↓ były oficjalną specyfikacją DNS aż do roku 1989. Nowa, aktualna specyfikacja DNS jest zawarta w RFC 1034 ↓ i RFC 1035 ↓. W 1996 wydano jeszcze RFC 1918 ↓, które wprowadziło zasady „Internet Best Current Practices” oraz dodało do specyfikacji pulę adresów IP przeznaczoną na tzw. prywatne podsieci.
DNS opiera się na 13 głównych serwerach, zwanych po angielsku root-servers, posiadającymi nazwy od a.root-servers.net do m.root-servers.net. Nie może być ich więcej, ograniczenie wynika z tego, że pojedynczy pakiet UDP o standardowej wielkości 1500 bajtów mieści właśnie informacje o maksymalnie 13 serwerach. Ponieważ główne serwery DNS są podstawą działania Internetu i otrzymują ogromne ilości zapytań, zostały one skopiowane. Kopie głównych serwerów umieszczone są w różnych częściach świata (posiadają one te same adresy IP co serwery główne). Użytkownicy z reguły łączą się z najbliższym im serwerem. Przykładowo globalne węzły serwera k.root-servers.net zarządzanego przez organizację RIPE NCC umieszczone są w Amsterdamie, Londynie, Tokio, Delhi oraz Miami, podczas gdy jeden z jego polskich węzłów lokalnych znajduje się w Poznańskim Centrum Superkomputerowo-Sieciowym[9], a drugi w centrum przetwarzania danych Aplitt sp. z o.o. w Gdyni[10].
Zapytania i odpowiedzi DNS są najczęściej transportowane w pakietach UDP. Każdy komunikat musi się zawrzeć w jednym pakiecie UDP (standardowo 512 oktetów, ale wielkość tę można zmieniać, pamiętając również o ustawieniu takiej samej wielkości w MTU – Maximum Transmission Unit). W innym przypadku przesyłany jest protokołem TCP i poprzedzony dwubajtową wartością określającą długość zapytania i długość odpowiedzi (bez wliczania tych dwóch bajtów). Format komunikatu DNS został zdefiniowany w RFC 1035 ↓.
Format komunikatu DNS:
NAGŁÓWEK – (Header) |
---|
ZAPYTANIE – (Question) do serwera nazw |
ODPOWIEDŹ – (Answer) zawiera rekordy będące odpowiedzią |
ZWIERZCHNOŚĆ – (Authority) wskazuje serwery zwierzchnie dla domeny |
DODATKOWA – (Additional) sekcja informacji dodatkowych |
Forma nagłówka, który określa rolę całego komunikatu:
Sekcja nagłówka występuje zawsze. W sekcji zapytania zawsze znajduje się jedno zapytanie zawierające nazwę domenową, żądany typ danych i klasę (IN). Sekcja odpowiedzi zawiera rekordy zasobów stanowiące odpowiedź na pytanie.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | |||||||||||||||
QR | OPCODE | AA | TC | RD | RA | Z | RCODE | ||||||||
QDCOUNT | |||||||||||||||
ANCOUNT | |||||||||||||||
NSCOUNT | |||||||||||||||
ARCOUNT |
Oto przykład działania systemu DNS. Użytkownik komputera wpisuje w swojej przeglądarce stron WWW adres internetowy pl.wikipedia.org. Przeglądarka musi poznać adres IP komputera będącego serwerem WWW dla tej strony. Cały proces przebiega zgodnie z tabelą.
Wysyła | Odbiera | Komunikat | Uwagi |
---|---|---|---|
Przeglądarka | Serwer DNS providera (194.204.152.34) | Czy znasz adres IP komputera pl.wikipedia.org? | Przeglądarka wysyła pakiet UDP z pytaniem do serwera DNS zdefiniowanego w konfiguracji systemu operacyjnego – najczęściej jest to serwer DNS dostawcy usług internetowych (dla Orange jest to np. 194.204.152.34). |
Serwer DNS providera (194.204.152.34) | Główny serwer DNS (198.41.0.4) | Czy znasz adres IP komputera pl.wikipedia.org? | Serwer DNS providera (194.204.152.34) wysyła zapytanie do jednego z 13 serwerów głównych (np. tego o adresie IP 198.41.0.4). |
Główny serwer DNS (198.41.0.4) | Serwer DNS providera (194.204.152.34) | Nie znam, ale dla domeny org serwerami są 204.74.112.1 i 204.74.113.1. | Zapytany serwer główny (198.41.0.4) odpowiada na zapytanie serwera providera. |
Serwer DNS providera (194.204.152.34) | Serwer DNS domeny „org” (204.74.112.1) | Czy znasz adres IP komputera pl.wikipedia.org? | Serwer DNS wysyła do jednego z tych 2 serwerów (np. tego o adresie IP 204.74.112.1) zapytanie. |
Serwer DNS domeny „org” (204.74.112.1) | Serwer DNS providera (194.204.152.34) | Nie znam, ale dla domeny wikipedia.org serwerami są 216.21.226.87 i 216.21.234.87. | Serwer domeny „org” odpowiada. |
Serwer DNS providera (194.204.152.34) | Serwer domeny „wikipedia.org” (216.21.226.87) | Czy znasz adres IP komputera pl.wikipedia.org? | Serwer DNS wysyła do jednego z tych 2 serwerów, np. tego o adresie IP 216.21.226.87 zapytanie. |
Serwer DNS domeny „wikipedia.org” (216.21.226.87) | Serwer DNS providera (194.204.152.34) | pl.wikipedia.org ma adres IP 207.142.131.245. | Serwer domeny „wikipedia.org” (216.21.226.87) odpowiada. |
Serwer DNS providera (194.204.152.34) | Przeglądarka | pl.wikipedia.org ma adres IP 207.142.131.245. | Serwer DNS Orange (194.204.152.34) odpowiada przeglądarce. |
Przeglądarka | Serwer „pl.wikipedia.org” (207.142.131.245) | Transakcja pobrania strony WWW. | Przeglądarka łączy się z serwerem „pl.wikipedia.org” (o adresie IP 207.142.131.245) i wyświetla otrzymaną stronę. |
Najważniejsze typy rekordów DNS oraz ich znaczenie:
Inne typy rekordów dostarczają informacje o położeniu hosta (np. rekord LOC) lub o danych eksperymentalnych.
W systemach operacyjnych zapytania do DNS zwykle są wykonywane w sposób niewidoczny dla użytkownika przez dedykowany podsystem (ang. resolver). Do bezpośredniego odpytywania DNS np. w celach diagnostycznych, można się posłużyć programami nslookup, host lub dig dostępnymi w wielu systemach operacyjnych.
Zwykle dane o konfiguracji protokołu DNS w domowym komputerze przekazywane są przez dostawcę Internetu (ISP). Większość operatorów udostępnia w swojej sieci protokół DHCP. Dzięki niemu komputer może automatycznie pobrać konfigurację sieciową sugerowaną przez operatora, w tym adresy serwerów DNS. Adresy te z reguły – ale nie zawsze[11] – wskazują na serwery dobrane relatywnie dogodnie dla użytkowników. Kiedy system automatycznego pobierania adresów serwera DNS nie działa, można je wprowadzić ręcznie. W systemach typu uniksowego służy do tego /etc/resolv.conf, który zawiera listę serwerów DNS.
Jeżeli użytkownik chce w swojej sieci lokalnej uruchomić własny serwer DNS, może posłużyć się programem BIND. Jednak jest on dosyć skomplikowany w użytkowaniu.
Ta sekcja od 2011-06 wymaga zweryfikowania podanych informacji: Dużo wiarygodnych stwierdzeń, ale bez źródeł. |
Należy zdać sobie sprawę, że system DNS został zaprojektowany wiele lat temu przez naukowców. Nie przewidzieli oni „trafienia internetu pod strzechy” i istnienia światowej sieci używanej do prowadzenia poważnych operacji. W Internecie pojawiła się grupa osób wykorzystująca luki w systemie DNS do łamania prawa[12].
Podstawową wadą DNS jest to, iż korzysta on z bezpołączeniowego protokołu UDP i nie zawiera żadnych mechanizmów autoryzujących[13]. Pierwsza cecha może być używana w atakach DDoS – komputer atakujący może wysyłać zapytania DNS do różnych serwerów na świecie ze sfałszowanym adresem źródłowym, przedstawiając się jako komputer ofiara. Serwery te odpowiadają na zapytania, wysyłając odpowiedzi do komputera ofiary, bo tak wskazuje adres źródłowy pakietu. Konstrukcja protokołu DNS powoduje, że jedno małe zapytanie mieszczące się w pakiecie o wielkości poniżej 100 bajtów, może wygenerować odpowiedź o wielkości ponad dziesięciokrotnie większej. Atakujący komputer wysyłając strumień 1 Mbps takich zapytań może spowodować ponad 10 Mbps odpowiedzi przychodzących do komputera ofiary, zakłócając w ten sposób pracę jego łącza.
DNS łatwo też poddaje się atakom typu man in the middle, co pozwala na przysyłanie fałszywych odpowiedzi do komputera ofiary, zmuszając go do połączenia się z innym serwerem, co pozwala na przykład na kradzież haseł. Istnieje wiele innych możliwości ataków na infrastrukturę DNS, łącznie nawet z uruchamianiem fałszywych serwerów głównych[14]. O słabościach protokołu DNS zdano sobie sprawę wcześnie[15] i stworzono jego rozszerzenie oparte na podpisach cyfrowych nazwane DNSSEC, jednakże system ten nie został całkowicie zaakceptowany przez Internet, nie jest wspierany przez wiele narzędzi, w związku z czym w internecie praktycznie nie jest używany[16].
Uczę się języka hebrajskiego. Tutaj go sobie utrwalam.
Zawartość tej strony pochodzi stąd.