230 likes | 401 Views
UNIX jesień/zima 2013. Wykład 11 Zaawansowane usługi sieciowe w Linux/UNIX - DNS. dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz. Usługa Domain Name System.
E N D
UNIXjesień/zima 2013 Wykład 11 Zaawansowane usługi sieciowe w Linux/UNIX - DNS dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz
Usługa Domain Name System DNS służy do tłumaczenia nazw domen (takich jak na przykład www.wp.pl) na adresy IP i odwrotnie, ●Silnie hierarchiczny, ●Dodatkowo wykorzystywany jako hierarchiczna, rozproszona baza danych. Na początku baza ta zawierała wyłącznie informacje o serwerach obsługujących odbiór poczty dla nazwy domeny. Poźniej rozszerzono ten zapis także na inne usługi, np. Kerberos KDC czy serwery Jabber. Baza przechowuje także inne informacje, komentarze, uprawnienia mail itp. Adresy domen zapisane są w postaci członów rozdzielonych kropkami niejako od prawej do lewej – przykład dla www.wp.pl Podobnie zapisywane są adresy IP przy zapytaniu odwrotnym – przykład dla adresu 1.2.3.4: 4.3.2.1.in-addr.arpa
Adresy sieci internetowych Dawniej, sieci IP były pogrupowane w klasy, których część sieciowa adresu była długa na 8, 16 lub 24 bity. Adresy IP maska podsieci długość Klasa A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 Klasa B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 Klasa C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24 W każdej klasie istnieją zakresy adresów zarezerwowanych do użycia w sieciach lokalnych (LAN). Istnieje gwarancja, że te adresy nie będą w konflikcie z innymi adresami w internecie. adres sieci długość ilość Klasa A 10.x.x.x /8 1 Klasa B 172.16.x.x - 172.31.x.x /16 16 Klasa C 192.168.0.x - 192.168.255.x /24 256 Pierwszy adres w każdej sieci jest równocześnie adresem tej sieci. Ostatni adres jest adresem rozgłoszeniowym (broadcast). Wszystkie inne adresy mogą być przydzielane komputerom w sieci. Najczęściej pierwszy lub ostatni adres jest przydzielany routerowi.
DNS – podstawowe informacje Dozwolone znaki w członie (domenie): w protokole praktycznie dowolne, jednak w ICANN zezwala się wyłącznie na stosowanie liter alfabetu łacińskiego w zakresie stosowanym w języku angielskim, cyfr oraz łącznika („-”). Nazwy nie mogą się zaczynać ani kończyć łącznikiem. Istnieje możliwość rejestracji domen zawierających dowolne znaki z zestawu Unicode, jednak takie domeny i tak są tłumaczone na zapis zawierający wyłącznie znaki o zakresie takim jak powyżej . System ten nazywa się punycode. Adresy URL w kodowaniuPunycodemająpostać: xn--znakiascii-kodznakowunicode Przykład Unicode - www.kraków.pl Punycode - www.xn--krakw-3ta.pl Użytkownik może być zaskoczony, gdy zamiast np. żołty.pl zobaczy w przeglądarce xn—ty-4ja03asj.pl, Istnieje możliwość podszycia się pod inną domenę.
DNS domeny Instytucje administrujące DNS w Polsce: • NASK – nadzór nad domeną .pl jako całością, oraz obsługa rejestrowania domen: .com.pl, .biz.pl, .org.pl, .net.pl oraz kilkudziesięciu innych domen "funkcjonalnych" oraz części domen lokalnych, np. .waw.pl. IPPT PAN – rejestracja domeny .gov.pl; • ICM – .art.pl, .mbone.pl; • Politechnika Wrocławska – .usenet.pl.
DNS domeny Domeny mają strukturę drzewiastą, na szczycie znajduje się 13 głównych serwerów (root servers) obsługujących domeny najwyższego poziomu (TLD – top leveldomains), 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 gluerecord) zawierający także adres IP serwera niższego rzędu (w tym przypadku dns.example.com).
DNS System DNS posiada następujące cechy: • Nie ma jednej centralnej bazy danych adresów IP i nazw. Najważniejszych jest 13 głównych serwerów rozrzuconych na różnych kontynentach. • Serwery DNS przechowują dane tylko wybranych domen. • Każda domena powinna mieć co najmniej 2 serwery DNS obsługujące ją, jeśli więc nawet któryś z nich będzie nieczynny, to drugi może przejąć jego zadanie. • Każda domena posiada jeden główny dla niej serwer DNS (tzw. master), na którym to wprowadza się konfigurację tej domeny, wszystkie inne serwery obsługujące tę domenę są typu slave i dane dotyczące tej domeny pobierają automatycznie z jej serwera głównego po każdej zmianie zawartości domeny.
Przykład użycia hierarchii w DNS Strefa główna . Zapytanie 1 Klient szukający adresu IP dla nazwy www.wp.pl Wskaźnik na serwer strefy pl Zapytanie 2 Strefa pl Wskaźnik na serwer strefy wp.pl Zapytanie 3 Problem I – skąd znać adres serwera strefy głównej? Jest wpisany na stałe. Strefa wp.pl Wpis: www →1.2.3.4 Problem II – serwer strefy głównej oraz popularne serwery domen zostałyby zalane pytaniami od setek milionów klientów
Przykład hierarchii DNS Rozwiązanie przeciążenia. Każda strefa to w rzeczywistości co najmniej 2 serwery – W strefie głównej dodatkowo zastosowano rozproszenie geograficzne i anycast – Caching odpowiedzi pozytywnych i negatywnych w systemach i aplikacjach, – Serwery cache DNS np. w ISP Strefa główna . Serwer 1 Serwer 2 Serwer 3 Serwer n Klient szukający adresu IP dla nazwy www.wp.pl Strefa pl Zapytanie 2 Serwer 1 Serwer 2 Serwer 3 Zapytanie 1 Zapytanie 3 Serwer CACHE DNS Strefa wp.pl Zapytanie 4 Wpis: www →1.2.3.4 Za pierwszym razem wszystkie 4 zapytania, potem tylko 1 Serwer 1 Serwer 2
DNS System DNS posiada następujące cechy: • Serwery DNS mogą przechowywać przez pewien czas odpowiedzi z innych serwerów (ang. caching), a więc proces zamiany nazw na adresy IP jest często krótszy niż w podanym przykładzie. • Czasami pod jedną nazwą może kryć się więcej niż 1 adres IP po to, aby jeśli jeden z nich zawiedzie, inny mógł spełnić jego rolę • Przy zmianie adresu IP komputera pełniącego funkcję serwera WWW, nie ma konieczności zmiany adresu internetowego strony, a jedynie poprawy wpisu w serwerze DNS obsługującym domenę. • Protokół DNS posługuje się do komunikacji serwer-klient głównie protokołem UDP, serwer pracuje na porcie numer 53, przesyłanie domeny pomiędzy serwerami master i slave odbywa się protokołem TCP na porcie 53.
DNS • Prywatna przestrzeń nazw->mycompany.local • Strefy DNS- jest ciąglą częścią przestrzeni nazw, dla której serwer jest autorytatywny. Serwer może być autorytatywny dla jednej lub kilku stref. • Delegowanie- polega na oddelegowaniu stefy podrzędnej innemu DNS np. WZIM.SGGW.PL • Rekordy zasobów: Są wpisami bazy danych, na których podstawie udzielane są odpowiedzi na zapytania klientów DNS. Rekordy zasobów są opisane przy użyciu specyficznego typu rekordu, takiego jak: • -adres hosta (A) • ...
DNS • Rekordy zasobów: • adres hosta (A) • alias (CNAME) -rekord nazwy kanonicznej • usługa wymiany poczty (MX) • serwer DNS (NS) • rekord wskaźnika lub rekord PTR • Start of Authority (SOA) • rekordy SRV (lokalizacja usług)
BIND BIND (Berkeley Internet Name Domain, poprzednio: Berkeley Internet NameDaemon) jest popularnym serwer (demon) DNS. Stworzony przez Paula Vixie w 1988. Wykorzystywany jest w systemach Linux i Unix. Stanowi ważny składnik zapewniający poprawne działanie systemu nazw w Internecie. Cechy BIND Opensource, licencja BSD, Bieżąca wersja BIND 9 napisana od zera pod koniec lat 90. XX wieku, ze względu na dużą ilość błędów bezpieczeństwa w poprzedniej wersji BIND 4. Obsługa ładowania stref z plików, katalogu LDAP, baz danych Berkeley DB, PGSQL, MySQL Integracja z serwerem DHCP ISC dla automatycznych uaktualnień DDNS klientów DHCP BIND zawarty jest w praktycznie każdej dystrybucji Linuxa
Podstawy konfiguracji BIND Instalacja # apt-getinstall bind9 dnsutils bind9-doc bind9-host Polecenie startujace usługę # /etc/init.d/bind9 start Program zarządzania usługą # rndc Katalog z konfiguracją /etc/bind Główny plik konfiguracyjny /etc/bind/named.conf W Debianie plik ten zawiera polecenia użycia plików: named.conf.options – konfig. katalogu roboczego, porty nasłuchu, forward named.conf.local – definicje lokalnych stref named.conf.default-zones – konfiguracja stref głównych, localhosta i broadcastu
Rodzaje stref DNS Strefa podstawowa (primary, master) Zawiera dane strefy pobrane bezpośrednio z pliku na hoście Strefa zapasowa (secondary, slave). Zawiera dane kopiowane podczas procesu replikacji z podstawowego serwera strefy lub z innego serwera zapasowego Strefa skrótowa (stubzone) Strefa ta zawiera wyłącznie rekordy, które są potrzebne do zidentyfikowania serwera DNS dla tej strefy. Forwardowanie – przekazywanie zapytań dla konkretnej strefy do innego serwera DNS znajdującego się na liście forwardu Strefa prosta (forwardzone) – strefa przechowująca rekordy do zapytań prostych: adres domenowy -> adres IP zone "test.debian.org.pl" { type master; file "/etc/bind/db.test.debian.org.pl"; }; Strefa odwrotna (reversezone) – strefa przechowująca rekordy do zapytań odwrotnych: adres IP - >nazwa domenowa zone "194.122.212.in-addr.arpa" { type master; file "/etc/bind/db.194.122.212.in-addr.arpa"; };
Przykładowa konfiguracja serwera BIND Poprawić plik named.conf.options options { directory "/var/cache/bind"; listen-on { any; }; listen-on-v6 { any; }; auth-nxdomainyes; query-sourceaddress * port 53; transfer-source * port 53; notify-source * port 53; version "Mój serwer DNS"; forwarders { 194.204.159.1; 194.204.152.34; }; }; Nasz serwer DNS będzie pracował jako serwer cache’ujący i ustawimy forwarding do DNS’ów dostawcy. Wcześniej ustaw statyczną konfigurację IP.
Tworzymy własną strefę podstawową Edytujemy plik /etc/bind/named.conf.local zone "wojciech.bieniecki.pl" { type master; file "/etc/bind/wojciech.bieniecki.pl"; allow-transfer { any; }; notifyyes; }; type (master/slave) mówi o tym, że to serwer jest podstawowy lub zapasowy file wskazuje na ścieżkę do pliku ze strefą allow-transfer to adresy IP serwerów, które mogą transferować całą zawartośc strefy. Zazwyczaj są to adresy IP zapasowych serwerów DNS dla danej domeny. notify ustawia, czy zapasowe serwery mają być informowane o zmianach w strefie. Opcja ta znacznie przyspiesza aktualizowanie informacji o strefach.
Tworzymy własną strefę podstawową Edytujemy plik /etc/bind/wojciech.bieniecki.pl $TTL 2d @ IN SOA ns1.wojciech.bieniecki.pl. root.wojciech.bieniecki.pl.( 2012110810 ; Serial 10800 ; Refresh 180 ; Retry 604800 ; Expire - 1 week 60 ) ; Minimum NS ns1.wojciech.bieniecki.pl. @ IN A 10.0.2.15 ns1 IN A 10.0.2.15 paserver IN A 10.0.2.18 paserver2 IN A 10.0.2.19 wojtek IN A 10.0.2.22 wojtek2 IN A 10.0.2.23 Zauważ, że wszystkie nazwy domenowe są zakończone kropką. Gdyby tych kropek nie było, serwer potraktowałby tą nazwę jako cześć domeny utrzymywanej w tej strefie!
Objaśnienia do pliku strefy $TTL to czas, przez jaki poszczególne wpisy są buforowane na serwerach DNS $ORIGIN to nazwa utrzymywanej strefy. ns1.twoj.server.pl to adres Twojego serwera nazw root.twoj.server.pl to Twój adres email, gdzie pierwsza kropka oznacza znak @. Serial to numer seryjny. Zaleca się aby był on w formacie RRRRMMDDNN. (data ostatniej modyfikacji plus numer poprawki) Refresh – Częstość odświeżania. Decyduje o tym, jak często serwery dodatkowe będą sprawdzać, czy ich dane na temat strefy są aktualne. Retry – Częstość powtórek. Jeśli serwerowi dodatkowemu nie uda się skontaktować z serwerem podstawowym po czasie odświeżania, to próbuje co jakiś tu zdefiniowany czas. Expire – Czas wygaśnięcia. Jeśli serwerowi dodatkowemu nie uda się skontaktować z serwerem podstawowym przez czas wygaśnięcia, to zaczyna usuwać stare dane. Czas wygaśnięcia zawsze powinien być znacznie większy od częstości odświeżania i powtórek (na przykład 30 dni).
Tworzymy własną strefę podstawową Edytujemy plik /etc/resolv.conf domainwojciech.bieniecki.pl searchwojciech.bieniecki.pl nameserver 10.0.2.15
Tworzymy zapasowy serwer DNS Ponownie edytujemy plik /etc/bind/wojciech.bieniecki.pl Dodajemy modyfikacje o secondary DNS $TTL 2d @ IN SOA ns1.wojciech.bieniecki.pl. root.wojciech.bieniecki.pl.( 2012110810 ; Serial 10800 ; Refresh 180 ; Retry 604800 ; Expire - 1 week 60 ) ; Minimum NS ns1.wojciech.bieniecki.pl. @ IN A 10.0.2.15 ns1 IN A 10.0.2.15 ns2 IN A 10.0.2.16 paserver IN A 10.0.2.18 paserver2 IN A 10.0.2.19 wojtek IN A 10.0.2.22 wojtek2 IN A 10.0.2.23
Tworzymy zapasowy serwer DNS Edytujemy plik named.conf.local Pozwalamy na transfer stref zone "wojciech.bieniecki.pl" { type master; file "/etc/bind/wojciech.bieniecki.pl"; allow-transfer { 10.0.2.16 }; notifyyes; };
Serwer zapasowy DNS Konfigurujemy DNS na drugim serwerze Edytujemy plik named.conf.local zone "wojciech.bieniecki.pl" { typeslave; file "/etc/bind/slave/wojciech.bieniecki.pl"; masters { 10.0.2.15 }; }; należy utworzyć katalog /etc/bind/slave i zmienić właściciela na bind # mkdir /etc/bind/slave # chownbind.bind /etc/bind/slave Poprawność konfiguracji sprawdzamy w pliku /var/log/daemon.log