Ćwiczenie nr: 10 DNS 1.Model systemu Nazwa domeny jest ścieżką w odwróconym drzewie nazywanym przestrzenią nazw domeny. Drzewo ma pojedynczy węzeł na szczycie. Drzewo DNS może mieć dowolną liczbę rozgałęzień w każdym punkcie przecięcia nazywanym węzłem. Głębokość drzewa jest ograniczona do 127 poziomów. Każdy węzeł ma etykietę ograniczoną do 63 znaków. Pełna nazwa domeny danego węzła to sekwencja etykiet od tego węzła do węzła głównego. Nazwy domeny czytane są od węzła domeny w kierunku węzła głównego. Poszczególne nazwy rozdzielone są kropkami. Bezwzględna nazwa domeny zakończona kropką nazywana jest w pełni kwalifikowaną nazwą domeny (ang. fully qualified domain name, FQDN). Domeny to poddrzewa przestrzeni nazw domen i tworzą je grupy hostów. Nazwa domeny jest taka jak nazwa węzła na szczycie domeny. Nazwy domen są indeksami bazy danych DNS. Domena jest także odnoszona do poziomu w przestrzeni nazw domen: - domena najwyższego poziomu jest dzieckiem głównego węzła - domena pierwszego poziomu jest dzieckiem domeny najwyższego poziomu - domena drugiego poziomu jest dzieckiem domeny pierwszego poziomu - itd. Dane skojarzone z nazwami domen zawarte są w rekordach zasobów. Rekordy są podzielone na klasy odnoszące się do typu sieci lub oprogramowania. Klasa internet jest najbardziej popularna. Przestrzeń nazw domen Internetu narzuca pewne ograniczenia (uwzględniają określone tradycje). Pierwotnie przestrzeń nazw domen dzieliła się na siedem domen najwyższego poziomu: com, edu, gov, mil, net, org i int 2.Typy serwerów DNS Programy zapamiętujące informacje o przestrzeni nazw domeny nazywane są serwerami nazw. Przechowują one informacje o pewnej części przestrzeni nazw domeny, nazywanej strefą. Strefa zawiera te nazwy domen, które zawiera domena z taką samą nazwą poza nazwami delegowanych subdomen. Delegacja przekazuje odpowiedzialność za jakąś część domeny innej organizacji lub różnym serwerom nazw. Jeśli serwer nazw jest pytany o dane delegowanej subdomeny, dostaje informację o serwerze nazw, który ją zna.
Istnieją dwa rodzaje serwerów nazw: podstawowy serwer główny i drugorzędny serwer główny. Podstawowy serwer główny nazw strefy czyta dane strefy z pliku na swoim hoście. Drugorzędny serwer główny nazw strefy dostaje dane strefy od innego serwera nazw, wiarygodnego dla strefy dla której jest serwerem głównym. Serwer podstawowy i pomocniczy są wiarygodne dla strefy. Żeby utworzyć nowy serwer nazw dla strefy nie trzeba kopiować na niego danych z serwera głównego. Serwer ustawia się by załadował swoje dane z podstawowego serwera nazw dla strefy. W celu zapewnienia nadmiarowości (redundancji) i rozłożenia obciążenia przez zmniejszenie odległości host - serwer nazw, tworzy się więcej niż jeden serwer nazw dla danej strefy. 3.Resolwery Resolwer to klient z dostępem do serwerów nazw. Programy działające na hoście stosują resolwera do pozyskania informacji z przestrzeni nazw domeny. Rola resolwera polega na: - zapytaniu serwera nazw - interpretacja odpowiedzi - przekazanie odpowiedzi do programów, które na nie oczekują 4.Sposób działania System operacyjny żeby wyznaczyć adres IP przekazuje nazwę hosta resolwerowi i oczekuje na odpowiedź od niego. Resolwer wysyła wewnątrz pakietu UDP skierowane na port 53 zapytanie do serwera DNS. Serwer odpowiada z portu 53, podając adres IP dla nazwy w zapytaniu. Przestrzeń nazw ma kształt odwróconego drzewa dlatego serwer nazw potrzebuje tylko fragmentu informacji, żeby znaleźć drogę do dowolnego miejsca drzewa. Serwer nazw może wysłać pytanie do głównego serwera nazw, który wie gdzie znajdują się wiarygodne serwery nazw dla każdej z domen najwyższego poziomu. Serwery nazw głównego poziomu mogą dostarczyć listę serwerów nazw, wiarygodnych dla drugiego poziomu. Każdy z kolejnych serwerów nazw podaje informację coraz bliższą poszukiwanej nazwy hosta lub sam dostarcza tę odpowiedź. Duże obciążenie głównych serwerów nazw wymusza konieczność buforowania.
5.Rodzaje zapytań DNS - rekurencyjne Resolwer wysyła do serwera nazw pytanie rekurencyjne o konkretną nazwę domeny. Serwer nazw odpowiada danymi lub komunikatem błędu. Serwer nazw nie może skierować zapytania do innego serwera nazw. Jeżeli pytany serwer nazw nie jest wiarygodny, będzie musiał pytać (rekurencyjnie lub iteracyjnie) inne serwery nazw. - iteracyjne Pytany serwer nazw przesyła zapytanie do innych serwerów nazw. Każdy z nich kieruje do kolejnego serwera nazw wiarygodnego dla danej strefy. W końcu lokalny serwer nazw pyta wiarygodnego serwera nazw.
6.Konfiguracja serwera BIND.6.1Polecenia serwera bind (w konsoli/terminalu) /etc/init.d/named status /etc/init.d/named start /etc/init.d/named restart - sprawdzanie stanu serwera - uruchamianie serwera - restartowanie serwera Sprawdzanie poprawności konfiguracji serwera named-checkconf sciezka_do_pliku_named.conf Zwraca błędy w wypadku niepoprawnej konfiguracji, lub nic, w przypadku konfiguracji poprawnej Sprawdzanie poprawności konfiguracji strefy named-checkzone nazwa_strefy sciezka_do_pliku_definicji_strefy Zwraca błędy w wypadku niepoprawnej konfiguracji, lub OK, w przypadku konfiguracji poprawnej.6.2rekordy zasobów Opis domeny dokonuje się za pomocą tzw. rekordów zasobów DNS. Definicja rekordu zasobów posiada format: [nazwa] [ttl] IN typ dane nazwa - nazwa hosta lub domeny nie zakończona kropką traktowana jako względna wobec aktualnie definiowanej domeny ttl - czas przechowywania informacji zdefiniowanej w rekordzie (sekundy) IN - oznaczenie klasy rekordu, IN - interenet typ - typ rekordu : SOA NS A (ang. Start Of Authority) potwierdza że serwer jest wiarygodny dla danej strefy, rekord określa parametry domyślne dla całej strefy, rekord obecny jako pierwszy w każdym pliku strefowym (ang. Name Serwer) serwer nazw dla danej strefy, dla tej nazwy musi istnieć rekord A (ang. Adress) tłumaczenie adresu hosta na IP PTR (ang. Pointer) tłumaczy adres IP na nazwę hosta, definiowanie domeny odwrotnej CNAME (ang. Canonical Name) opis aliasu dla wcześniej zdefiniowanej nazwy, możliwość tworzenia wielu nazw dla jednego hosta MX (ang. Mail exchange) domyślny serwer pocztowy dla domeny, odczytywany przez serwery SMTP HINFO (ang. Host Information) opis serwera, dane dane zależne od typu rekordu Wartości rekordów zasobów przesyłane są w zapytaniach i odpowiedziach DNS. Np.: serwer poczty elektronicznej odczytuje wartości rekordów MX, serwer DNS najczęściej odczytuje wartości rekordów A i NS.
.6.3Pliki konfiguracyjne demona serwera nazw.6.3.1plik /etc/named.conf Zawartość pliku: sekcja options: directory - definiuje katalog, który będzie automatycznie dodawany do nazwy definiowanych plików konfiguracyjnych serwera BIND listen-on - adres i port na którym będą nasłuchiwane zapytania DNS options { directory "/var/lib/named"; listen-on port 53 {10.0.2.111; }; }; sekcja zone ".": określa drugorzędny serwer nazw dla każdej ze stref "." - oznacza strefę główną "root.cache" - plik zawierający wskazanie na główne serwery DNS zone "." IN { type hint; file "root.cache"; }; sekcja zone "0.0.127.in-addr.arpa" definiuje odwrotny DNS dla adresu pętli zwrotnej loopback "named.local" - plik odwrotnego DNS dla pętli zwrotnej zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; sekcja zone "nazwisko.pl" definiuje strefę nazwisko.pl "domain/nazwisko.pl" - ścieżka do pliku definicji strefy nazwisko.pl notify yes - włączenie powiadamiania drugorzędnego serwera DNS o zmianach w konfiguracji strefy zone "nazwisko.pl" IN { type master; file " master/nazwisko.pl"; notify yes; }; Sekcja include /etc/named.conf.include include /etc/named.conf.include ; definiuje sciezke do pliku w ktorym mogą być zdefiniowane strefy, w naszym przypadku nieistniejacy, trzeba zakomentowac przez wstawienie # na poczatku lini.
.6.3.2Plik /var/lib/named/master/nazwisko.pl Przykładowa zawartość pliku : $TTL 1D @ IN SOAdns1.nazwisko.pl. admin.nazwisko.pl ( 2009021201 ; Serial 3H ; Refresh 1H ; Retry 1W ; Expire 1D ) ; Minimum $TTL 1D - domyślny czas życia TTL strefy 2009021201 - numer seryjny rok-miesiąc-dzień-numer_modyfikacji_w_danym_dniu, musi się zmieniać w sposób rosnący po każdej zmianie pliku strefy aby serwer zapasowy pobrał zaktualizowany plik strefy nazwisko.pl. IN NS dns1.nazwisko.pl. nazwisko.pl. IN NS dns2.nazwisko.pl. dns1.nazwisko.pl i dns2.nazwisko.pl - serwery nazw dla strefy nazwisko.pl nazwisko.pl. IN MX 3 mail.nazwisko.pl. mail.nazwisko.pl - domyślny serwer pocztowy dla domeny, 10 wartość preferencji localhost.nazwisko.pl. IN A 127.0.0.1 dns1.nazwisko.pl. IN A 192.168.1.2 dns2.nazwisko.pl. IN A 192.168.1.3 mail.nazwisko.pl. IN A 192.168.1.4 www.nazwisko.pl. IN A 192.168.1.5 ftp.nazwisko.pl IN CNAME www.nazwisko.pl. A - odwzorowania nazw na adresy IP CNAME - odwzorowanie aliasów na nazwy kanoniczne oddzial.nazwisko.pl. NS dns1.oddzial.nazwisko.pl. oddzial.nazwisko.pl. NS dns2.oddzial.nazwisko.pl. dns1.oddzial.nazwisko.pl. IN A 10.1.0.2 dns2.oddzial.nazwisko.pl. IN A 10.1.0.3 delegowanie nowych poddomen domeny nazwisko.pl, określenie dwóch serwerów nazw i definicja adresów dla serwerów DNS.6.4Narzędzia nslookup (zarówno w systemie Windows jak i Linux) Emuluje zapytania resolwera i serwera. Zapytanie jest kierowane jednocześnie tylko do jednego serwera DNS. Nslookup pyta pierwszego serwera nazw (zdefiniowanych w: Linux - w pliku /etc/resolv.conf, Windows korzysta z ustawień sieciowych) i ponawia próby co pewien czas, a następnie pyta drugiego serwera nazw. Podczas transferu strefy nie jest sprawdzany numer seryjny SOA. Program można uruchomić w trybie interakcyjnym jak i nieinterakcyjnym.
Rozpoczęcie sesji interakcyjnej (w Linux konsola, w Windows command line (cmd)) # nslookup zakończenie sesji (^D) > ^D szukanie nieinterakcyjne (z lini poleceń) # nslookup www.agh.edu.pl ustawienie serwera głównego serwera nazw (w sesji interakcyjnej) > server 192.168.1.2 ustawienie opcji debug (w sesji iteracyjnej) > set debug odpytanie o informacje na temat domeny www.agh.edu.pl (w sesji interakcyjnej) > www.agh.edu.pl Ustawienie opcji w sesji interakcyjnej zmienia się poleceniem set. W linii poleceń pomija się słowo set i poprzedza opcję łącznikiem, np. nslookup -debug. Opcje mogą być skracane do najkrótszej niepowtarzalnej dla innych opcji postaci, np. nodeb. Opcje po których występuje znak równości są nazywane logicznymi i mogą być "włączone" lub "wyłączone". Opcje poprzedzone przedrostkiem no są wyłączone. [no]debug - jeśli włączone serwer nazw pokazuje czasy oczekiwania i wyświetla pakiety odpowiedzi [no]defname - dodawanie nazwy domenowej do nazw nie zawierających kropek [no]search - przesłania opcję domyślnej nazwy domeny (defname) [no]recurse - włączenie bitu pożądanej rekurencji w pakietach zapytań [no]d2 - włączenie testowania na poziomie 2 pokazuje wysłane pakiety zapytań [no]vc - pytanie za pomocą kanału wirtualnego [no]ignoretc - nie ignorowanie skróconych pakietów UDP i ponowne zapytanie z pomocą połączenia TCP port=53 - ustawienie portu nslookup querytype=a - ustawienie rekordów zasobów class=in - klasa Internet timeout=5 - przy braku odpowiedzi w ciągu 5 sekund, ponawianie zapytania i podwojenie czasu oczekiwania do 10, 20 i 40 sekund retry=4 - liczba powtórzeń zapytania root=a.root-servers.net. - przełączenie serwera na podany serwer domain=fx.movie.edu srchlist=fx.movie.edu - domyślna dodawana domena przy włączonej opcji defname - przy włączonej opcji search, domeny dodawane do nazw nie kończących się kropką Literatura: 1. P. Albitz, C. Liu, DNS i BIND, Wyd. O'Reilly, Warszawa 1999 2. 2. A. S. Tanenbaum, Sieci komputerowe, Wyd. Helion, Gliwice 2004 3. 3. N. Langfeldt, J. Norrish, DNS HOWTO, http://www.langfeldt.net/dns-howto/bind- 8/DNS-HOWTO.html 4. DNS for Rocket Scientists, http://www.zytrax.com/books/dns
Scenariusz Nr 1 Sprzęt: Dwa komputery z systemem Linux Suse ( użytkownik root, hasło - 1) Oprogramowanie: Serwer nazw: BIND, Resolver: nslookup. Wykonanie ćwiczenia: Główne cele. Na KOMPUTERZE_A konfigurujemy i uruchamiamy serwer nazw BIND i definiujemy na nim strefę w formacie nazwisko.pl zawierającą wszystkie informacje na temat tej strefy. Na KOMPUTERZE _B ( po skonfigurowaniu i uruchomieniu serwera bind na komputerze_a) uruchamiamy resolver i odpytujemy o informacje na temat nowo skonfigurowanej domeny. Komputer A 1. Zalogować się na konto administratora (nie student ) 2. Odnaleźć plik konfiguracyjny serwera nazw (named.conf) (/etc/named.conf) 3. W pliku konfiguracyjnym serwera nazw dodać strefę, której nazwa ma mieć formę: nazwisko_wykonującego_ćwiczenie.pl (zadeklarować w niej ścieżkę do pliku definicji strefy) 4. Sprawdzić poprawność konfiguracji serwera nazw (named-checkconf). Po naprawie ewentualnych błędów (zakomentować include) wykonać zrzut ekranu. 5. Odnaleźć folder z ustawieniami serwera nazw BIND (info w pliku konfiguracyjnym serwera) 6. Utworzyć plik definicji nowej strefy w miejscu które podaliśmy jako parametr w pliku konfiguracji serwera nazw. 7. Wypełnić plik definicji nowej strefy informacjami na temat: 1. główne informacje o strefie (serial z datą wykonania ćwiczenia) 2. 2 serwery nazw dla strefy (dns1, dns2) 3. domyślny serwer pocztowy z priorytetem rownym numerowi grupy 4. odwzorować nazwy na adresy IP 1. poczta IP komputera A 2. nazwisko.pl 10.7.7.dzien_miesiaca 3. dns1 IP komputera A 4. dns2 o ostatnim bajcie równym numerowi grupy 5. www IP komputera B 5. zdefiniować alias imie.nazwisko.pl (wykonującego ćwiczenie) na nazwisko.pl 8. Zapisać informację w pliku, i sprawdzić jego poprawność. Po naprawie ewentualnych błędów wykonać zrzut ekranu okna w którym widać ustawienia. 9. Zrestartować serwer nazw, zwracając uwagę na komunikaty wypisywane w konsoli. (w wypadku błędów poprawić je) 10.!!!!!!!Po przeprowadzonych testach bezwzględnie USUNAC!!!!!!! 1. Plik definicji strefy 2. WPIS w pliku named.conf 3. Zrzuty ekranu Komputer B 1. Uruchomić resolver nslookup 2. Ustawić adres serwera nazw na adres IP komputera A 3. Włączyć opcję testowania na poziomie drugim. 4. Odpytywać po kolei o następujące adresy wykonując zrzuty ekranu po każdym zapytaniu: 1. główna nazwa strefy 2. poczta 3. dns1 4. poddomena imie.nazwisko.pl 5. Po zarchiwizowaniu na nośniku lub wysłaniu na pocztę USUNĄC ZRZUTY EKRANU!!!! Wyniki pomiarów: W sprawozdaniu należy opisać przebieg ćwiczenia i sposób konfiguracji serwera oraz nowej strefy. Do sprawozdania dołączyć zrzuty ekranu wykonane podczas ćwiczeń. Na podstawie jednego ze zrzutów opisać wszystkie informacje jakie można uzyskać za pomocą resolvera.