Ćwiczenie nr: 5 Temat: 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. Istnieją dwa 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.
5. Konfiguracja serwera BIND 5.1 Rekordy 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 (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 NS (ang. Name Serwer) serwer nazw dla danej strefy, dla tej nazwy musi istnieć rekord A 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. 5.2 Pliki konfiguracyjne demona serwera nazw: /etc/named.conf options { directory "/var/named"; listen-on {192.168.1.2;};
}; allow-transfer {192.168.1.3;}; sekcja options: directory definiuje katalog, który będzie automatycznie dodawany do nazwy definiowanych plików konfiguracyjnych serwera BIND listen-in adres na którym będą nasłuchiwane zapytania DNS allow-transfer określa adres drugorzędnego serwera nazw zone "." IN { type hint; file "root.cache"; }; 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 "0.0.127.in-addr.arpa" IN { type master; file " named.local"; }; 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 "1.168.192.in-addr.arpa" IN { type master; file " domain/1.168.192.in-addr.arpa"; }; sekcja zone "1.168.192.in-addr.arpa" definiuje domenę odwrotną dla hostów z sieci lokalnej "domain/1.168.192.in-addr.arpa" plik odwrotnego DNS dla hosta zone "firma.com.pl" IN { type master; file " domain/firma.com.pl"; notify yes; }; sekcja zone "firma.com.pl" definiuje strefę firma.com.pl "domain/firma.com.pl" plik strefy firma.com.pl notify yes włączenie powiadamiania drugorzędnego serwera DNS o zmianach w konfiguracji strefy /var/named/domain/firma.com.pl $TTL 86400 firma.com.pl. IN SOA dns1.firma.com.pl. admin.firma.com.pl. ( 2008012001 ; Serial 3h ; Refresh 1h ; Retry 1w ; Expire 1h ) ; Minimum $TTL 86400 domyślny czas życia TTL strefy 2008012001 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
firma.com.pl. IN NS dns1.firma.com.pl. firma.com.pl. IN NS dns2.firma.com.pl. dns1.firma.com.pl i dns2.firma.com.pl serwery nazw dla strefy firma.com.pl firma.com.pl. IN MX 10 mail.firma.com.pl. mail.firma.com.pl domyślny serwer pocztowy dla domeny, 10 wartość preferencji localhost.firma.com.pl. IN A 127.0.0.1 dns1.firma.com.pl. IN A 192.168.1.2 dns2.firma.com.pl. IN A 192.168.1.3 mail.firma.com.pl. IN A 192.168.1.4 www.firma.com.pl. IN A 192.168.1.5 ftp.firma.com.pl IN CNAME www.firma.com.pl. A odwzorowania nazw CNAME odwzorowanie aliasów na nazwy kanoniczne oddzial.firma.com.pl. NS dns1.oddzial.firma.com.pl. oddzial.firma.com.pl. NS dns2.oddzial.firma.com.pl. dns1.oddzial.firma.com.pl. IN A 10.1.0.2 dns2.oddzial.firma.com.pl. IN A 10.1.0.3 delegowanie nowych poddomen domeny firma.com.pl, określenie dwóch serwerów nazw i definicja adresów dla serwerów DNS 5.3 Narzędzia nslookup - emuluje zapytania resolwera i serwera. Zapytanie jest kierowane jednocześnie tylko do jednego serwera DNS. nslookup pyta pierwszego serwera nazw w pliku resolv.conf i ponawia proby co pewien czas, a następnie pyta drugiego serwera nazw. nslookup nie korzysta z pliku /etc/hosts. Podczas transferu strefy nie jest sprawdzany numer seryjny SOA. Program można uruchomić w trybie interakcyjnym jak i nieinterakcyjnym. rozpoczęcie sesji interakcyjnej % nslookup zakończenie sesji (^D) > ^D szukanie nieinterakcyjne % nslookup www.onet.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 odzpowiedzi [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 timeaout=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 domyślna dodawana domena przy włączonej opcji defname srchlist=fx.movie.edu przy włączonej opcji search, domeny dodawane do nazw nie kończących się kropką openldap - darmowa implementacja LDAP dostarczająca usługi DNS dla sieci lokalnej, wykorzystuje protokół LDAP do przechowywania w bazach zwanych katalogami, wszystkich wpisów DNS. Konfiguracja i uruchomienie serwera plik konfiguracyjny /etc/openldap/sldap.conf (linie do zmodyfikowania), np. suffix "dc=przyklad,dc=pl" rootdn "cn=manager,dc=przyklad,dc=pl" rootpw sekretnehaslo //wygenerować i wkleić hash za pomocą sldappasswd include /etc/openldap/schema/cosine.schema //pliki konfiguracyjne include /etc/openldap/schema/rfc2307bis.schema... uruchomienie demona LDAP slapd slapd start sprawdzenie poprawności pliku slapd.conf slaptest netstat -ltnp dodawanie wpisów do katalogu ldapadd Konfiguracja klientów plik konfiguracyjny ldap.conf Literatura: 1. P. Albitz, C. Liu, DNS i BIND, Wyd. O'Reilly, Warszawa 1999 2. A. S. Tanenbaum, Sieci komputerowe, Wyd. Helion, Gliwice 2004 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 5. Open LDAP, http://www.openldap.org
Scenariusze ćwiczeń
Scenariusz Wykonanie ćwiczenia: 1. tworzenie serwera primary i secondary 2. tworzenie domeny 3. skonfigurowanie slapd 4. uruchomienie serwera slapd i sprawdzenie poprawności działania 5. utworzenie struktury wpisów (np. konta użytkowników) Wyniki pomiarów: opis przebiegu ćwiczenia wyciągn ąć wnioski