DNS HOWTO pl 3 (2)


DNS HOWTO: Serwer nazw z pamięcią podręczną (cache) Następna strona Poprzednia strona Spis treści 3. Serwer nazw z pamięcią podręczną (cache) Pierwszy krok w konfigurowaniu DNS'u, bardzo przydatny dla korzystających z modemu. Serwer z pamięcią podręczną będzie szukał odpowiedzi na zapytania o nazwy i pamiętał odpowiedź, żebyś mógł jej użyć następnym razem, kiedy będziesz jej potrzebował. To skróci czas oczekiwania za drugim razem kiedy będziesz potrzebował nazwy, zwłaszcza jeżeli korzystasz z wolnego połączenia. Po pierwsze, potrzebujesz pliku /etc/named.conf. Jest on czytany, kiedy named zostaje uruchamiany. Narazie powinien po prostu zawierać: // Plik konfiguracyjny dla serwera nazw ,,caching'' options { directory "/var/named"; // Odkomentowanie tego może pomóc, jeżeli musisz przejść przez // ścianę ognia (firewall), a coś nie działa: // query-source address * port 53; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; Linia directory mówi named'owi, gdzie szukać plików. Wszystkie pliki w podkatalogach będą odpowiadały tej zmiennej. A więc pz jest podkatalogiem w /var/named, czyli /var/named/pz. /var/named to odpowiedni katalog, zgodnie z Linux File system Standard. Plik o nazwie /var/named/root.hints jest zdefiniowany w named.conf. Powinien on zawierać następujące rekordy: . 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. . 6D IN NS M.ROOT-SERVERS.NET. . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 BARDZO WAŻNE: W niektórych wersjach tego dokumentu zawartość powyższego pliku będzie posiadać kilka spacji albo tab przed pierwszym wypełnionym (non blank) znakiem. Nie powinny się one znaleźć w pliku. Skasuj każdą poprzedzającą spację w plikach, które wycinasz i wklejasz z tego HOWTO. Pamiętaj, co powiedziałem o poprzedzających spacjach! Plik opisuje główne serwery (root servers) na świecie. Dane zmieniają się z biegiem czasu i muszą być nadzorowane. Przeczytaj sekcję o nadzorze, żeby uzyskać informacje o uaktualnianiu serwera. Następna linia w named.conf to linia primary. Wyjaśnię jej funkcję w następnym rozdziale, a teraz tylko utwórz plik 127.0.0 w podkatalogu pz: @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Numer seryjny 8H ; Odświeżenie 2H ; Powtórzenie 1W ; Przedawnienie 1D) ; Minimalny TTL NS ns.linux.bogus. 1 PTR localhost. Następnie, potrzebujesz pliku /etc/resolv.conf, wyglądającego następująco: search poddomena.twoja-domena.edu twoja-domena.edu nameserver 127.0.0.1 Linia ,,search'' ustala, które domeny powinny być przeszukane dla jakichkolwiek nazw węzłów, z jakimi chcesz się połączyć. Linia nameserver definiuje adres twojego serwera nazw, w tym przypadku twoją własną maszynę, ponieważ tu pracuje named (127.0.0.1 wystarczy, nie ma znaczenia, czy twój komputer ma inny adres). Jeśli chcesz wyznaczyć kilka serwerów nazw, wstaw oddzielną linię ,,nameserver'' dla każdego. (Zauważ: Named nigdy nie czyta tego pliku, robi to resolver, który używa named.) Żeby zilustrować, co ten plik robi: Jeśli klient próbuje znaleźć foo, wtedy jako pierwsze próbowane jest foo.poddomena.twoja-domena.edu, potem foo.twoja-domena.edu, a w końcu foo. Jeżeli klient próbuje szukać sunsite.unc.edu, najpierw próbowane jest sunsite.unc.edu.poddomena.twoja-domena.edu (tak, to jest głupie, ale w ten sposób działa), potem sunsite.unc.edu.twoja-domena.edu, a w końcu sunsite.unc.edu. Nie wpisuj za wielu domen w linii search, ponieważ zabiera to trochę czasu, żeby je wszystkie przeszukać. Przykład przyjmuje, że należysz do domeny poddomena.twoja-domena.edu, twój komputer jest wtedy prawdopodownie nazwany twój-komputer.poddomena.twoja-domena.edu. Linia search nie powinna zawierać twojej TLD (Top Level Domain, Domena Najwyższego Poziomu, w tym przypadku edu). Jeżeli często łączysz się z węzłami w innej domenie, możesz dodać tą domenę do linii search w ten sposób: search poddomena.twoja-domena.edu twoja-domena.edu inna-domena.com i tak dalej. Oczywiście musisz wpisać prawdziwe nazwy domen zamiast podanych. Zauważ brak kropek na końcach nazw domen. Następnie, zależnie od twojej wersji libc, musisz poprawiać albo /etc/nsswitch.conf, albo /etc/host.conf. Jeżeli już masz nsswitch.conf, będziemy poprawiać właśnie ten plik, a jeśli nie, host.conf. (NAPRAWDĘ zalecam poprawianie host.conf we wszystkich systemach, w których istnieje, np. u mnie jest i jeden i drugi - przyp. tłum.) /etc/nsswitch.conf Jest to długi plik, który ustala, skąd wziąć różne rodzaje typów danych, z jakiego pliku lub bazy. Zazwyczaj zawiera on na górze pomocne komentarze, które powinieneś teraz przeczytać. Potem znajdź linię zaczynającą się na ,,hosts:'' - powinna zawierać: hosts: files dns Jeżeli nie ma linii zaczynającej się na ,,hosts:'', wpisz powyższą. Mówi, że programy powinny najpierw spojrzeć do pliku /etc/hosts, potem sprawdzić DNS zgodnie z resolv.conf. /etc/host.conf Prawdopodobnie zawiera kilka linii, jedna powinna zaczynać się na order i wyglądać następująco: order hosts,bind Jeżeli nie ma linii ,,order'' powinieneś ją dopisać. Mówi ona procedurom szukającym nazw, żeby najpierw zajrzeć do /etc/hosts, a potem spytać serwer nazw (który ustaliłeś w pliku resolv.conf jako 127.0.0.1). Te dwa pliki są omówione w podręczniku man resolv(8) (wykonaj polecenie ,,man 8 resolv'') w większości dystrybucji Linuxa. Ta strona man jest według mnie całkiem możliwa do zrozumienia, a każdy, zwłaszcza administratorzy DNS, powinni ją przeczytać. Zrób to teraz - jeżeli powiesz sobie ,,później'', nigdy nie będziesz miał okazji ich przeczytać. 3.1 Uruchamianie named Po tym wszystkim nadszedł czas, aby uruchomić named. Jeżeli używasz połączenia modemowego, połącz się najpierw. Wpisz ,,ndc start'', bez opcji, i naciśnij enter. Jeżeli to nie działa, spróbuj ,,/usr/sbin/ndc start''. Jeśli to też nie działa, zobacz sekcję FAQ. Teraz możesz przetestować swoją konfigurację. Jeżeli obejrzysz plik z komunikatami sysloga (zazwyczaj /var/adm/messages, inny katalog w którym można ich szukać to /var/log, inną nazwą pliku jest syslog) kiedy uruchamiasz named (wykonaj tail -f /var/log/messages), powinieneś ujrzeć coś takiego: (linie kończące się na \ są kontynuowane w następnej linii) Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \ 00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0) Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \ (IN) loaded (serial 1) Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo) Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0) Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040 Feb 15 01:26:17 roke named[6092]: Ready to answer queries. Jeżeli pojawią się jakieś komunikaty o błędach, popełniłeś jakiś. Named powie, w którym pliku jest błąd (mam nadzieję, że jest to named.conf albo root.hints :-)). Zabij named i sprawdź plik. (jest też bardziej ,,humanitarny'' :-) od zabijania sposób - napisz ,,ndc stop'', odczekaj dłuższą chwilę i nameserver zostanie wyłączony - przyp. tłum.) Teraz uruchom nslookup, żeby sprawdzić twoje robótki ręczne. $ nslookup Default Server: localhost Address: 127.0.0.1 > Jeżeli otrzymałeś takie coś, to znaczy, że działa. Miejmy nadzieję. Jeśli co innego, sprawdź wszystko od początku. Za każdym razem, kiedy zmienisz plik named.conf musisz ponownie uruchomić named komendą ndc restart. Teraz możesz wprowadzić zapytanie. Spróbuj poszukać jakiegoś komputera blisko ciebie. pat.uio.no jest blisko mnie, na Uniwersytecie w Oslo: > pat.uio.no Server: localhost Address: 127.0.0.1 Name: pat.uio.no Address: 129.240.130.16 Nslookup poprosił twojego named'a o poszukanie maszyny pat.uio.no. Połączył się wtedy z jednym z serwerów nazw w twoim pliku root.hints i zapytał stamtąd o drogę. Może to zająć troszeczkę czasu, zanim otrzymasz wynik, ponieważ szuka we wszystkich domenach, które wymieniłeś w /etc/resolv.conf. Jeżeli zapytasz znowu o to samo, otrzymasz coś takiego: > pat.uio.no Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: pat.uio.no Address: 129.240.2.50 Zwróć uwagę na linię ,,Non-authoritative answer:'', która pojawiła się tym razem. Znaczy to, że named nie szukał nazwy w sieci, tylko popatrzył w swojej pamięci podręcznej i tam ją znalazł. Ale informacja z pamięci podręcznej może być przedawniona. Zostajesz więc poinformowany o tym (bardzo niewielkim) niebezpieczeństwie, poprzez komunikat ,,Non-authorative answer:''. Kiedy nslookup mówi to za drugim razem, kiedy pytasz o komputer, jest to pewny znak, że named zapamiętuje informacje i działa. Możesz wyjść z nslookup wydając komendę exit. Teraz już wiesz, jak postawić przyspieszający (caching) named. Wypij piwo, mleko, lub cokolwiek innego, żeby to uczcić. Następna strona Poprzednia strona Spis treści

Wyszukiwarka