DNS HOWTO Nicolai Langfeldt v1.3.2, 3 June 1997 tłumaczenie piotr.pogorzelski@ippt.gov.pl wersja 1.0.1, kwiecień 1998 Jak w zostać małoetatowym administratorem DNS. Dokument opisuje BIND-4.9.x. Wstęp

Słowa kluczowe: DNS, bind, named, dialup, ppp, slip, Internet, domain, name, hosts, resolving Legal stuff

(C)opyright 1995 Nicolai Langfeldt. Do not modify without amending copyright, distribute freely but retain copyright message. Podziękowania i prośby o pomoc.

Chciałbym podziękować Arnt Gulbrandsen, który niezliczoną liczbę razy czytał ten dokumend dostarczając wielu pożytecznych sugestii. Dziękuję również ludziom, którzy przysłali swoje sugestie pocztą elektroniczną. Dziękuje. Pomogliście mi w pracy nad tym dokumentem. Inne dokumenty

Ten dokument nigdy nie będzie skończony, wszelkie uwagi (ogólne - nie dotyczące polskiej wersji tego dokumentu) proszę przesyłać autorowi. Czeka na uwagi o sukcesach i kłopotach, dzięki nim dokument stanie się pełniejszy i lepszy. Tak więc pieniądze, pytania/uwagi kierujcie na adres janl@ifi.uio.no. Jeśli wysyłacie pocztą elektroniczną, upewnijcie się, że adres zwrotny jest poprawny. Proszę, przed wysłaniem listu zapoznajcie się wcześniej z rodziałem dotyczącym najczęsciej pojawiających się pytań. Dedykacja

Ten dokument HOWTO jest dedykowany Anne Line Norheim. Pomimo, że prawdopodobnie nigdy go nie przeczyta. Wprowadzenie.

Dla początkujących, DNS oznacza Domain NAme System, Zasady i programy umożliwiające odwzorowanie (zamianę) nazw symbolicznych nadawnych komuterom na odpowiadające imadresy IP. Niniejszy dokument przedstawia w jaki sposób stworzyć takie odwzrowanie wykorzystując do tego Linuxa. Wspomniane odwzorowanie to proste skojarzenie dwóch rzeczy, symbolicznej nazwy komputera np. ftp.linux.org z adresem IP tego komputera, 199.249.150.4. DNS to jeden z bardziej niezauważalnych obszarów zarządzania siecią. Niniejszy dokument postara się wyjaśnić kilka pojęć. Opisuje w jaki sposób zestawić . Jeśli nie znajdziesz tam rozwiązania swoich problemów, musisz zapoznać się z Prawdziwą Dokumentacją. Później napiszę co to jest Prawdziwa dokumentacja .

Zanim zaczeniesz działać musisz wpierw skonfigurować swój komputer, tak abyć mógł łączyć się z niego i do niego za pomocą programu telnet, oraz wykonywać inne różnego rodzaju połączenia sieciowe. W szczególności powinieneś móc połączyć sie ze swoim komputerem wydając polecenie telnet 127.0.0.1 (sprawdź to teraz!). Potrzebujesz poprawnie skonfigurowanych plików /etc/host.conf (lub /etc/nsswitch.conf), /etc/resolv.conf i /etc/hosts ponieważ nie będę w tym dokumencie omawiał ich funkcji. Jeśli nie masz potrzebnej konfiguracji sieciowej pomże ci dokument NET-2-HOWTO. Przeczytaj go.

Jeśli korzystasz ze SLIPa lub PPP, muszą poprawnie działać. Jeśli tak nie jest przeczytaj PPP-HOWTO.

Kiedy mówię `twój komputer', to znaczy, że mam na myśli komputer na którym próbujesz uruchomić serwer DNS, a nie jakikolwiek inny komputer który może być pośrednio związany z działaniem sieci.

Zakładam, że nie znajdujesz się za żadną 'ścianą ogniową', która uniemożliwia komuniekację DNS ze światem zewnętrznym. Jeśli tak nie jest, będziesz potrzebował specjalnej konfiguracji, zapoznaj się z rozdziałem .

Serwowanie nazw pod systemem UNIX jest wykonywane przez program o nazwie /usr/sbin/named. Jeśli jest on zainstalowany na twoim komputerze, prawdopodobnie możesz z niego skorzystać, jeśli nie, możesz zainstalować jego najnowszą wersje, którą znajdziesz w .

DNS jest ogólnosieciową bazą danych. Trzeba uważać co się do niej wkłada. Jeśłi włoży się śmiecie, ty i inni otrzymacie z niej śmiecie. Muszisz utrzymywać swoją część DNSu uporządkowaną i poprawną. Wtedy będzie ci dobrze służyć. Naucz się jak z niej korzystać, jak nią zarządzać, jak ją odpluskwiać, a staniesz się kolejnym dobrym administratorem zapobiegając przeciązenim sieci wywołanym jej złym zarządzaniem.

W tym dokumencie wypowiadam sądy o pewnych rzeczach, które nie są do końca prawdziwe (choć są co najmniej w połowie prawdziwe). Wszystko po to, aby zachować prostotę tego dokumentu. Jeśli mi uwierzysz wszystko powinno działać.

Podręczny serwer DNS.

Podręczny serwer DNS znajdzie odpowiedzi na pytania o nazwy komputerów i zapamięta je, tak aby mógł natychmiast odpowiedzieć, gdy będziesz ich potrzebował ponownie.

Po pierwsze potrzebny jest plik /etc/named/.boot. Jest czytany podczas uruchamiania programu named. W naszym przypadku powienien po prostu zawierać: ; Plik startowy podręcznego serwera DSN ; directory /var/named ; ; rodzaj domena plik lub komputer źródłowy cache . root.cache primary 0.0.127.in-addr.arpa pz/127.0.0

Wiersz z poleceniem `/var/named jest właściwym miejscem, zgodnym ze Plik o nazwie /var/named/root.cache powienien zawierać: . 518400 NS D.ROOT-SERVERS.NET. . 518400 NS E.ROOT-SERVERS.NET. . 518400 NS I.ROOT-SERVERS.NET. . 518400 NS F.ROOT-SERVERS.NET. . 518400 NS G.ROOT-SERVERS.NET. . 518400 NS A.ROOT-SERVERS.NET. . 518400 NS H.ROOT-SERVERS.NET. . 518400 NS B.ROOT-SERVERS.NET. . 518400 NS C.ROOT-SERVERS.NET. ; D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12

Plik określa główne serwery DNS na świecie. Ta informacja zmienia się z czasem i , znajdziesz tam rady skąd uzyskiwać aktualne informacje. Jest to opisane na stronie podręcznika dotyczącej programu named, lecz IMHO nadaje się dla ludzi, którzy już rozumieją jak pracuje named.

Kolejny wiersz w @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost.

Do tego potrzebujesz jeszcze plik /etc/resolv.conf, który by wyglądał mniej więcej tak: search poddomena.twoja.domena. twoja.domena nameserver 127.0.0.1

Wiersz `Mała ilustracja do czego służy ten plik: jeśli program otrzyma za zadanie znalezienie adresu komputera W kolejnym przykładzie zakładamy, że należysz do domeny search poddomena.twoja.domena. inna-domena.com.pl. itd. Oczywiście należy wpisać istniejące domeny. Zwróć uwagę na brak kropki kończącej nazwę domeny.

Następnie, zależnie od wersji biblioteki libc, której używasz musisz poprawić albo plik /etc/nsswitch.conf lub /etc/host.conf. Jeśli w twoim systemie już jest plik /etc/nsswitch.conf to znaczy, że należy poprawić ten właśnie plik, jęsli go nie ma, będziemy poprawiwać /etc/hosts.conf.

/etc/nsswitch.conf

To spory plik okreśłający skąd system ma pobierać różnego rodzaju informacje, z których plików, lub sieciowychs baz danych. Zwykle zawiera pomocne komentarze. Znajdź wiersz zaczywnający się słowem ` hosts: files dns Jeśli nie ma wiersza zaczynającego się od `/etc/hosts i dopiero w następnej kolejności sprawdzać w DNSie, w sposób zgodny z wytycznymi znajdującymi się w pliku /etc/resolv.conf.

/etc/host.conf

Prawdopodowbie zawiera kilkanaście wierszym jeden z nich powinien wyglądać następująco: order hosts,bind

Jeśli nie ma wiersza rozpoczynającego się słowem /etc/hosts , a następnie pytają serwer DNS (który jest zdefiniowany w pliku /etc/resolv.conf jako 127.0.0.1). Te pliki są dokładniej opisane na stronach podręcznika, można je przeczytać pisząc `Uruchamianie programu named.

Przyszedł nareszcie czas uruchomic program named. Jeśli korzystasz z połączenia dzwonionego, przed uruchomieniem programu zestaw połaczenie. Nastepnie uruchom `/usr/sbin/ndc start'. Jeśli tam też nie ma tego programu zajżyj do rozdziału . Teraz możesz przetestować swoją konfigurację. Jeśli podczas uruchamiania programu named będziesz podglądał plik dziennika (zwykle tail -f /var/log/messages ) powinieneś zobaczyć komunikaty podobne do tych poniżej: Jun 30 21:50:55 roke named[2258]: starting. named 4.9.4-REL Sun Jun 30 21:29:03 MET DST 1996 janl@roke.slip.ifi.uio.no:/var/tmp/bind/named Jun 30 21:50:55 roke named[2258]: cache zone "" loaded (serial 0) Jun 30 21:50:55 roke named[2258]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1)

Jeśli zobaczysz jakiekolwiek komunikaty o błędach, named wskaże plik zawierający błąd (mam nadzieję, że named.boot lub named.cache :-). Zabij proces named ( $ nslookup Default Server: localhost Address: 127.0.0.1 >

Jeśli wyświetlone komunikaty są zbliżone do tych powyżej, to znaczy, że wszystko działa. Mamy taką nadzieję. W każdym innym przypadku musisz wrócić i sprawdzić raz jeszcze pliki konfiguracyjne. Po każdej modyfikacji pliku /etc/named.boot musisz zrestartować program wydając polecenie Teraz możesz wydawać zapytania. Spróbuj odnaleźć komputer blisko ciebie. > pat.uio.no Server: localhost Address: 127.0.0.1 Name: pat.uio.no Address: 129.240.2.50

nslookup poprosił nameda o wyszukanie komputera root.cache i tam rozpoczął swą drogę. Zanim zobaczysz rezultat zapytania, może upłynąć całkiem spora chwila, ponieważ named przeszukuje wszystkie domeny wymienione w pliku /etc/resolv.conf/

Jeśli spróbujesz raz jeszcze otrzymasz taką odpowiedź: > 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 frazę ` Jeśli korzystasz z protokołów ppp, slip, zapoznaj się z rozdziałem , znajdziesz tam dla siebie kilka porad. Teraz już wiesz jak skonfigurować podręczny serwer nazw (DNS). Polecam piwo, mleko lub inny ulubiony napój aby uczcić to wydarzenie. Całkiem prosta domena.

Jak skonfigurować własną domenę. Wpierw troche teorii.

Zanim DNS jest systemem hierarchicznym. Domena główna (najwyższego poziomu) jest oznaczana kropką ` $ nslookup Default Server: localhost Address: 127.0.0.1 rozpoczynamy od zapytania serwera domeny głównej > server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Ustawiamy rodzj zapytania: rekordy NS (adresy serwrów DNS) > set q=ns pytamy się o domenę edu. > edu. Kropka po słowie edu ma znaczenie, informuje serwer, że pytamy się o edu, które jest bezpośrednio w domenie głównej, w ten sposób wyłączamy z przeszukiwania domeny podane w pliku /etc/resolv.conf. edu nameserver = A.ROOT-SERVERS.NET edu nameserver = H.ROOT-SERVERS.NET edu nameserver = B.ROOT-SERVERS.NET edu nameserver = C.ROOT-SERVERS.NET edu nameserver = D.ROOT-SERVERS.NET edu nameserver = E.ROOT-SERVERS.NET edu nameserver = I.ROOT-SERVERS.NET edu nameserver = F.ROOT-SERVERS.NET edu nameserver = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17 F.ROOT-SERVERS.NET internet address = 192.5.5.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4

Otrzymaliśmy informacje, że domenę > mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = STRAWB.mit.edu mit.edu nameserver = W20NS.mit.edu mit.edu nameserver = BITSY.mit.edu Authoritative answers can be found from: STRAWB.mit.edu internet address = 18.71.0.151 W20NS.mit.edu internet address = 18.70.0.160 BITSY.mit.edu internet address = 18.72.0.3 > server W20NS.mit.edu. W nazwach kompyterów wielkość liter nie ma znaczenia, lecz ja do przenoszenia tekstu używam myszy, zapytanie ma taką samą formę jak poprzedzająca je odpowiedź. Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver = WHEATIES.AI.MIT.EDU ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU ai.mit.edu nameserver = TRIX.AI.MIT.EDU ai.mit.edu nameserver = MUESLI.AI.MIT.EDU Authoritative answers can be found from: AI.MIT.EDU nameserver = WHEATIES.AI.MIT.EDU AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU WHEATIES.AI.MIT.EDU internet address = 128.52.32.13 WHEATIES.AI.MIT.EDU internet address = 128.52.35.13 ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 ALPHA-BITS.AI.MIT.EDU internet address = 128.52.37.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.32.4 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.32.6 TRIX.AI.MIT.EDU internet address = 128.52.38.6 MUESLI.AI.MIT.EDU internet address = 128.52.32.7 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 Okazuje się, że > server WHEATIES.AI.MIT.EDU. Default Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 Teraz zmieniam rodzaj zapytania. Znamy już nazwę serwera nazw dla interesującej nas domeny, spytamy sie o jakiekolwiek informacje jakie serwer posiada na temat > set q=any > prep.ai.mit.edu. Server: WHEATIES.AI.MIT.EDU Addresses: 128.52.32.13, 128.52.35.13 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp #21 #23 #25 #79 prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = wheaties.ai.mit.edu ai.mit.edu nameserver = grape-nuts.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = life.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu life.ai.mit.edu internet address = 128.52.32.80 alpha-bits.ai.mit.edu internet address = 128.52.32.5 wheaties.ai.mit.edu internet address = 128.52.35.13 wheaties.ai.mit.edu internet address = 128.52.32.13 grape-nuts.ai.mit.edu internet address = 128.52.36.4 grape-nuts.ai.mit.edu internet address = 128.52.32.4 mini-wheats.ai.mit.edu internet address = 128.52.32.11 mini-wheats.ai.mit.edu internet address = 128.52.54.11 mintaka.lcs.mit.edu internet address = 18.26.0.36

Jak widać rozpoczynając od domeny głównej Mniej opisywaną lecz równie ważną domeną jest Właśnie skłamałem. DNS nie pracuje dokładnie w taki sposów jaki wam przed chwilą przedstawiłem. Lecz jest to bardzo dobre przbliżenie. Nasza własna domena.

Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją Rozpoczęliśmy tę część dodając do primary 0.0.127.in-addr.arpa pz/127.0.0

Proszę zwrócić uwagę na brak kropki `pz/127.0.0 zawiera informacje definiujące domenę @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost.

Proszę zwrócić uwagę na kropkę `Powyższy plik strefy zawiera trzy rekordy (RR): SOA RR, NS RR i PTR RR. SOA jest skrótem Start Of Authority. Znak `@' jest znakiem specjalnym określającym pochodzenie, a ponieważ kolumna `domain' odpowiadająca temu plikowi mówi 0.0.127.in-addr.arpa, dlatego pierwszy wiersz tak naprawdę ma postać: 0.0.127.IN-ADDR.ARPA. IN SOA ...

NS to rekord serwera nazw. Wskazuje komputer, który jest serwerem nazw dla tej domeny. I na koniec rekord PTR mówi, że 1 (w pełnej formie 1.0.0.127.in-addr-arpa, tzn. 127.0.0.1) nosi nazwę localhost.

Rekord SOA stanowi nagłówek Rekord NS określna kto serwuje informacje DNS na temat Teraz zrestartuj proces named (poleceniem $ nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 jak widać udało się pobrać informacje o primary linux.bogus pz/linux.bogus

Zwróć uwagę na powtarząjący sie brak znaku `In the linux.bogus zone file we'll put some totally bogus data: ; ; Plik strefy linux.bogus ; ; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny ; @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 3600000 ; expire, seconds 86400 ) ; minimum, seconds NS ns.linux.bogus. NS ns.friend.bogus. MX 10 mail.linux.bogus ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 ns A 127.0.0.2 mail A 127.0.0.4

Należy zrócić uwagę na dwie rzeczy dotyczące rekordu SOA. ns.linux.bogus Teraz trzeba zrestartowac program named wydając polecenie $ nslookup > set q=any > linux.bogus Server: localhost Address: 127.0.0.1 linux.bogus origin = linux.bogus mail addr = hostmaster.linux.bogus serial = 199511301 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) minimum ttl = 86400 (1 day) linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 127.0.0.2 mail.linux.bogus internet address = 127.0.0.4

Przypatrując się dokładnie widzimy, że popełniliśmy błąd. Wiersz linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus jest niepoprawny. powinien wyglądać następująco: linux.bogus preference = 10, mail exchanger = mail.linux.bogus

Specjalnie popełniłem błąd, abyście mogli się na nim uczyć :-). Przyglądając się plikowi źródłowemu zauważamy, że w wierszu @ MX 10 mail.linux.bogus ; Primary Mail Exchanger brakuje kropki. Lub inaczej mówiać ma zbyt wiele członów 'linux.bogus'. Gdy nazwa komputera występująca w pliku żródłowym strefy nie kończy się kropką, program na koniec dokleja 'origin' (pochodzenie, domenę definiowaną przez ten plik źródłowy). Dlatego nazwy komputerów należy podawać w sposób pełny, pilnując końcowej kropki @ MX 10 mail.linux.bogus. ; Primary Mail Exchanger lub uproszczony @ MX 10 mail ; Primary Mail Exchanger Oba sposoby są poprawne. Osobiście preferuje drugą metodę, mniej pisania. W pliku strefy domena powinna być podana w całości, razem z kończącą ją kropką (Skoro już powiedziłąem co miałęm do powiedzenia, poniżej przedstawiam nowy źródłowy plik strefy z nowymi, dodatkowymi informacjami: ; ; Plik strefy dla linux.bogus ; ; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny ; @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 199511301 ; serial, todays date + todays serial # 28800 ; refresh, seconds 7200 ; retry, seconds 604800 ; expire, seconds 86400 ) ; minimum, seconds NS ns ; Inet Address of name server NS ns.friend.bogus. MX 10 mail ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 ns A 127.0.0.2 mail A 127.0.0.4 ; ; Extras ; @ TXT "Linux.Bogus, your DNS consultants" ns MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 1.2" TXT "RMS" richard CNAME ns www CNAME ns donald A 127.0.0.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 1.2" TXT "DEK" mail MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.0.9" ftp A 127.0.0.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 1.3.59"

Moglibyście chcieć przesując pierwsze trzy rekordy A, tak aby sąsiadowały z innymi rekordami tego typu, zamiast siedzieć na początku listy.

W powyższym przykładzie pojawiły się rekordy nowego typu: HINFO (Host INFOrmation) składa się z dwóch częsci, dobrym zwyczajem jest umiesczenie obu w cudzysłowach. Pierwsza część określa hardware, lub procesor komputera, druga oprogramowanie lub pracujący na nim system operacyjny. Komputer ns to Pentium, pracujące pod Linuxem 1.2. Rekord TXT może zawierać dowolny tekst. Można go wykorzystywać do różnych celów. CNAME (Cannonical NAME) to sposób na nadanie wielu nazw jednemu komputerowi. Tak więc richard i www są aliasami komputera ns. To ważne aby pamiętać, że rekordy A, MX, CNAME i SOA foobar CNAME richard ; NO! i powinna zostać zastąpiona przez foobar CNAME ns ; Yes!

Równie ważne jest pamiętanie, że rekord CNAME nie jest poprawną nazwą, którą można stosować w adresach e-mail. Nawiązując do poprzedniego przykładu, adres wmail www A 127.0.0.2

Paul Vixie, największy z wizardów programu named, sugeruje aby Załaduj nową wersję bazy wydając polecenie $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus

Powyższe polecenie spowoduje przedstawienie wszystkich rekordów. [localhost] linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995 11301 28800 7200 604800 86400) linux.bogus. NS ns.linux.bogus linux.bogus. NS ns.friend.bogus linux.bogus. MX 10 mail.linux.bogus linux.bogus. MX 20 mail.friend.bogus linux.bogus. TXT "Linux.Bogus, your DNS consultants" localhost A 127.0.0.1 mail A 127.0.0.4 mail MX 10 mail.linux.bogus mail MX 20 mail.friend.bogus mail HINFO 386sx Linux 1.0.9 donald A 127.0.0.3 donald MX 10 mail.linux.bogus donald MX 20 mail.friend.bogus donald HINFO i486 Linux 1.2 donald TXT "DEK" www CNAME ns.linux.bogus richard CNAME ns.linux.bogus ftp A 127.0.0.5 ftp MX 10 mail.linux.bogus ftp MX 20 mail.friend.bogus ftp HINFO P6 Linux 1.3.59 ns A 127.0.0.2 ns MX 10 mail.linux.bogus ns MX 20 mail.friend.bogus ns HINFO Pentium Linux 1.2 ns TXT "RMS" linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995 11301 28800 7200 604800 86400)

Jest dobrze. Zobaczmy jaką odpowiedź otrymamy pytając się wyłącznie o komputer www: > set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus canonical name = ns.linux.bogus ... Innymi słowy, prawdziwa nazwa komputera linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 127.0.0.2 a ns.linux.bogus ma adres 127.0.0.2. To również wygląda poprawnie. Co dalej.

Oczywiście powyższa domena jest nierzeczywista, jak również adresy IP podane w przykładzie, co może utrudniać zrozumienie. Przykład przwdziwej domeny znjdziecie w następnym rozdziale. Przykład, prawdziwa domena.

UZytkownicy zwrócili mi uwagę, że powinienem dołączyć przykład plików definiujących prawdziwą domene, ponieważ różnica pomiędzy domeną przykładową i prawdziwą nie była do ońca jasna.

Jedna uwaga dotycząca tego przykładu: /etc/named.boto (lub /var/named/named.boot)

Oto dwa wiersze potrzebne d ozdefiniowania dwóch stref (domen) odwrotnych.: siec 127.0.0 oraz siec LAND-5 o numerach 206.6.177. Oraz wiersz deklarujący, że nasz serwer jest serwerem podstawowym domeny land-5.com. Proszę zauważyc, że zamiast umieszczania plików z danymi w sugerowanym wcześcniej przeze mnie katalogu ; Boot file for LAND-5 name server ; directory /var/named ; ; type domain source file or host cache . root.cache primary 0.0.127.in-addr.arpa zone/127.0.0 primary 177.6.206.in-addr.arpa zone/206.6.177 primary land-5.com zone/land-5.com /var/named/root.cache

Proszę pamiętać, że ten plik się zmienia, i ten przedstawiony tutaj jest już stary. Lepiej skorzystaj z tego, genrowanego programem dig. ; <<>> DiG 2.1 <<>> ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 ;; flags: qr rd ra; Ques: 1, Ans: 9, Auth: 0, Addit: 9 ;; QUESTIONS: ;; ., type = NS, class = IN ;; ANSWERS: . 518357 NS H.ROOT-SERVERS.NET. . 518357 NS B.ROOT-SERVERS.NET. . 518357 NS C.ROOT-SERVERS.NET. . 518357 NS D.ROOT-SERVERS.NET. . 518357 NS E.ROOT-SERVERS.NET. . 518357 NS I.ROOT-SERVERS.NET. . 518357 NS F.ROOT-SERVERS.NET. . 518357 NS G.ROOT-SERVERS.NET. . 518357 NS A.ROOT-SERVERS.NET. ;; ADDITIONAL RECORDS: H.ROOT-SERVERS.NET. 165593 A 128.63.2.53 B.ROOT-SERVERS.NET. 165593 A 128.9.0.107 C.ROOT-SERVERS.NET. 222766 A 192.33.4.12 D.ROOT-SERVERS.NET. 165593 A 128.8.10.90 E.ROOT-SERVERS.NET. 165593 A 192.203.230.10 I.ROOT-SERVERS.NET. 165593 A 192.36.148.17 F.ROOT-SERVERS.NET. 299616 A 192.5.5.241 G.ROOT-SERVERS.NET. 165593 A 192.112.36.4 A.ROOT-SERVERS.NET. 165593 A 198.41.0.4 ;; Total query time: 250 msec ;; FROM: land-5 to SERVER: default -- 127.0.0.1 ;; WHEN: Fri Sep 20 10:11:22 1996 ;; MSG SIZE sent: 17 rcvd: 312 /var/named/zone/127.0.0

Tylko podstawowe rekordy, obowiązkowo rekord SOA, rekord odwzorujący 127.0.0.1 na @ IN SOA land-5.com. root.land-5.com. ( 199609203 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. 1 PTR localhost. /var/named/zone/land-5.com

Tutaj możemy zobaczyć obowiązkowy rekord SOA, potrzebne rekordy NS. Widzimy, że drugorzędny serwer DNS to ns1.psi.net. Jest tak, jak być powinno, Patrząc na rekord SOA widzimy, że ta strefa(domena) dns pochodzi z komutera land-5.com. W sprawach związanyc hz tą domeną należy kontaktować się z @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, todays date + todays serial # 10800 ; refresh, seconds 7200 ; retry, seconds 10800 ; expire, seconds 86400 ) ; minimum, seconds NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; Primary Mail Exchanger localhost A 127.0.0.1 router A 206.6.177.1 land-5.com. A 206.6.177.2 ns CNAME land-5.com. ftp CNAME land-5.com. www CNAME land-5.com. mail CNAME land-5.com. news CNAME land-5.com. funn A 206.6.177.3 illusions CNAME funn.land-5.com. @ TXT "LAND-5 Corporation" ; ; Workstations ; ws_177200 A 206.6.177.200 MX 10 land-5.com. ; Primary Mail Host ws_177201 A 206.6.177.201 MX 10 land-5.com. ; Primary Mail Host ws_177202 A 206.6.177.202 MX 10 land-5.com. ; Primary Mail Host ws_177203 A 206.6.177.203 MX 10 land-5.com. ; Primary Mail Host ws_177204 A 206.6.177.204 MX 10 land-5.com. ; Primary Mail Host ws_177205 A 206.6.177.205 MX 10 land-5.com. ; Primary Mail Host ; {Many repetitive definitions deleted - SNIP} ws_177250 A 206.6.177.250 MX 10 land-5.com. ; Primary Mail Host ws_177251 A 206.6.177.251 MX 10 land-5.com. ; Primary Mail Host ws_177252 A 206.6.177.252 MX 10 land-5.com. ; Primary Mail Host ws_177253 A 206.6.177.253 MX 10 land-5.com. ; Primary Mail Host ws_177254 A 206.6.177.254 MX 10 land-5.com. ; Primary Mail Host

Można jeszcze zwrócić uwagę na to, że stacje robocze nie posiadają indywidualnych nazw, lecz raczej prefix po którym następuje dwuczłonowy fragmnet adresu IP. Korzystanie z takiej konwencji może znacznie ułatwić opiekę nad DNSem, lecz nie jest przez wszystkich najmilej widziane. /var/named/zone/206.6.177

Komentarz później. @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. NS ns2.psi.net. ; ; Servers ; 1 PTR router.land-5.com. 2 PTR land-5.com. 3 PTR funn.land-5.com. ; ; Workstations ; 200 PTR ws_177200.land-5.com. 201 PTR ws_177201.land-5.com. 202 PTR ws_177202.land-5.com. 203 PTR ws_177203.land-5.com. 204 PTR ws_177204.land-5.com. 205 PTR ws_177205.land-5.com. ; {Many repetitive definitions deleted - SNIP} 250 PTR ws_177250.land-5.com. 251 PTR ws_177251.land-5.com. 252 PTR ws_177252.land-5.com. 253 PTR ws_177253.land-5.com. 254 PTR ws_177254.land-5.com.

definicja domeny odwrotnej powoduje zwykle najwięcej kłopotów. Służy do znajdywania nazwy komputera, znając jego adres IP. Przykład: Posiadasz serwer IRC i przyjmujesz połączenia od klientów. Jednakże jako serwer Norweski chcesz jedynie zezwalać na połączenia komputerów norweskich lub skandynawskich. Po nawiązaniu połączenia procedury biblioteki C są w stanie ustalić spod jakiego adresu IP zostało nawiązane nowe połączenie, ponieważ adres IP zdalnego komputera jest przekazywany w pakietach danych przesyłanych siecią. Teraz możesz skorzystać z funkcji gethostbyaddr, która znajduje nazwę odpowiadającą podanemu adresowi IP. Gethostbyaddr zapyta serwer DNS, który z kolei dokona całego wyszukania. Zakładając, że klient połączył się z komputera ws_177200.land-5.com, adres IP przekazany przez proceduty biblioteki lib C do serwera DNS będzie brzmiał: 206.6.177.200. Aby dowiedzieć się jaka nazwa odpowiada temu adresowi musimy znależć wartość rekordu 100.177.6.206.in-addr.arpa. Serwer DNS wpierw znajdzei serwery domane arpa, in-addr.arpa, 206.in-addr.arpa, 6.206.in-addr.arpa dochodząc do serwera 177.6.206.in-addr.arpa w land-5. Ostatecznie otrzyma stamtąd odpowiedź, że dla 200.177.6.206.in-addr.arpa istnieje rekord PTR o wartości ws_177200.land-5.com, co znaczy, że adresowi 206.6.177.200 odpowiada nazwa ws_177200.land-5.com. Podobnie jak w przypadku wyjaśnien odszukiwania adresu dla nazwy prep.ai.mit.edu, powuższe wyjaśnienie trochę mija się z rzeczywistością.

Powracając do przykładu IRC. Serwer IRC akceptuje połączenia pochodzące z krajów skandynawskich, tzn. *.no, *.se, *.dk. Nazwa ws_177200.land-5.com nie pasuje do żadnego z powyższych wzorców i serwer odmówi połączenia. Gdyby Niektórzy twierdzą, żę odwrotne odwzorowanie adresów IP jest ważne jedynie dla serwerów, lub nie jest ważne w ogóle. Nie do końca: wiele serwerów ftp, news, irc, a nawet niektóre serwery http (WWW) Utrzymanie i konserwacja

Utrzymywanie w pracy ciągłej.

Prócz pilnowania aby proces named byl zawsze katywny pozostaje jedynie pilnowanie, aby plik Pamiętaj, aby po zamianie pliku Al Longyear przysłał mi poniższy skrypt, który można uruchamić i automatycznie uaktualniac plik #!/bin/sh # polish translation piotr.pogorzelski@ippt.gov.pl 1997 # Uaktualnianie informacji o głównych serwerach DNS. # Ten skrypt powinien byc uruchamiany automatycznie raz w miesiacu # przez program cron. # ( echo "To: hostmaster " echo "From: system " echo "Subject: Automatyczne uaktualnienie pliku named.cache" echo export PATH=/sbin:/usr/sbin:/bin:/usr/bin: cd /var/named dig @rs.internic.net . ns >named.cache.new echo "Plik named.cache zostal uwaktualniony i zawiera teraz następujące informacje:" echo cat named.boot.new chown root.root named.cache.new chmod 444 named.cache.new rm -f named.cache.old mv named.cache named.cache.old mv named.cache.new named.cache ndc restart echo echo "Program serwera DNS został uruchomiony na nowo, aby zapewnić korzystanie z nowych informacji." " echo "Stary plik został zachowany jako named.cache.old" /var/named/named.cache.old." ) 2>&1 | /usr/lib/sendmail -t exit 0

Niektórzy z was mogłi zauważyć, że root.cahce jest również dostępny w Internicu przez ftp. Proszę Automatyczna konfiguracja połączeń modemowych.

W tym rozdziale wyjaśnię w jaki sposób skonfigurowałem swój system, aby automatyzować wszsytkei zadania. Moj sposób rozwiązania problemu może zupełnie nie nadawać się do twojej konfiguracji, lecz zawsze możesz skorzystać z pomysłów. Poza tym ja korzystam z ppp, wiele osób używa slip lub cslip, tak więc niemal wszystkie szczegóły twojej konfiguracji mogą różnić się od mojej. Lecz program Zwykle, gdy nie jestem przyłączony do sieci, moj plik domain uio.no

Taka konfiguracja zapewnia, że nie muszę czekać na gdy procedury biblioteki odpowiedzialne za rozwiązywanie nazw bedą staraly się nawiazac połączenia z zewnętrznymi serwerami DNS. Lecz gdy jestem połączony chce posiadać uruchomiony proces named, a plik Aby połączyć się z siecią uruchamiam skrypt o nazwie 'ppp-on': #!/bin/sh echo calling... pppd

pakiet pppd posiada plik o nazwie #!/bin/sh interface="$1" device="$2" speed="$3" myip="$4" upip="$5" ... cp -v /etc/resolv.conf.connected /etc/resolv.conf ... /usr/sbin/named

To znaczy uruchom named. Kiedy PPP jest rozłączanie, pppd uruchamia skrypt #!/bin/sh cp /etc/resolv.conf.local /etc/resolv.conf read namedpid &etago;var/run/named.pid kill $namedpid

W ten sposób named jest uruchamiany po nawiazaniu połączenia i zabijany po jego rozłączeniu.

Niektóre programy, irc lub talk, przyjmują zbyt wiele założeń dlatego aby talk i udogodnienie dcc w irc działały poprawnie trzeba również poprawić plik hosts. Do swojego skryptu cp /etc/hosts.ppp /etc/hosts echo $myip roke >>/etc/hosts 127.0.0.1 localhost ,a polecenie echo dodaje numer ip, ktory otrzymalem dla mojego komputera (roke). Zamiast tego powinieneś użyć nazwy komputera, którą sam używasz. Możesz ją poznaćwykonując polecenie Uruchamianie demona named gdy nie jest się przyłączonym do sieci prawdopodobnie nie jest najlepszym rozwiazaniem. Dlatego, że named będzie starał się wysłać zapytania, a ponieważ posiada dlugi czas oczekiwania, każdy program, który będzie próbował rozwiązać nazwę korzystając z dńśu będzie musiał równie długo oczekiwać na odpowiedź, która i tak nigdy nie nadejdzie. Jeśli przyłączasz się do Internetu przez łącze dzwonione, powinieneś uruchamiac named tuz po zestawieniu łącza i zabijać go w momencie rozłączenia. Dodatkowe wskazówki w tym temacie znajdziesz w rozdziale .

Niektórzy z pracujacych na wolnych łączach lubią korzystać z dyrektywy forwarders. Jeśli twój dostawca internetu posiada serwery DNS o adresach 1.2.3.4 i 1.2.3.5, możesz do pliku forwarders 1.2.3.4 1.2.3.5 Plik FAQ

W tym rozdziale przedstawię kilka z najczęściej zadawanych pytań dotyczących DNSu i tego dokumentu. Prócz pytań będą również odpowiedzi, przeczytaj dokładnie ten rozdział, zanim zdecydujesz się wysłać do mnie list. Jak korzystać z DNS w sieci chronionej firewallem?

Kilka wskazówek: `forwarders',`slave', zapoznaćsię z literaturą prezentowaną na końcu. W jaki sposób zmusic DNS do rotacyjnego przekazywania adresu z puli adresów danej usługi, powiedzmy www.bardzo.zajety.serwer, w celu osiągnięcia równomiernego rozłożenia obciążenia na kilka serwerów.

Nazwa www.bardzo.zajęty.serwer musi posiadać kilka rekordów Chcę uruchomić DNS w zakmniętej sieci Intranetu. Co mam zrobić?

Pomiń root.cahce, zajmij się jedynie plikami stref/domen. To znaczy, ze niu musisz już pilnować aby root.cache był aktualny. W moim systemie nie ma programu ndc. Co mam zrobić?

To znaczy, że w twoim komputerze jest zainstalowany stary, trochę przestarzały program bind. Jeśli bezopieczeństwo sieci jest dla ciebie ważne, natychmiast zainstaluj najnowszą wersję binda. Jeśli nie, możesz pracować dalej tak jak jest. Tylko zamiast uruchamiac /usr/sbin. Jak soknfigurować drugorzędny serwer domeny?

Jeśłi serwer podstawowy posiada adres 127.0.0.1, to do pliku secondary linux.bogus 127.0.0.1 sz/linux.bogus Chciałbym aby named działał nawet wtedy, gdy nie ejstem przyłączony do internetu.

Ian Clark przesłał mi następującą wiadomość, w której wyjaśnia jak to zrobić: Moj named działa na komputerze. ktory robi 'Masquerade'. Posiadam dwa pliki root.cache, jeden root.cache.real zawierający prawdziwe adresy serwerów głównych i drugi root.cache.fake zawierający ... -------------- ; root.cache.fake ; this file contains no information -------------- Po rozłączeniu kopiuje root.cache.fake na root.cache i restartuje named. Po podłączeniu, kopiuje root.cache.real na root.cache i restartuje named. Jest to robione automatycznie w skryptach, odpowiednio ip-down i ip-up. Przy pierwszym zapytaniu w trybie off-line, serwer nie posiada wszystkich niezbędnych informacji i raportuje t ow syslogu, ale jakoś mogę z tym żyć: Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN U mnie ten schemat działa poprwnie.Mogę korzystać z nameserwera na komputerach lokalnych bez dodatkowych czasów oczekiwania na połączenie z nieosiągalnymi serwerami zewnętrzymi w trybie off-line i poprawnie działającym DNSem w trybie on-line. Gdzie serwer podręczny przechowuje zgromadzone w czasie pracy informacje? Czy jest jakaś metoda sterowania rozmiarem tych zasobów?

Wszelkie pośrednie informacje są gromadzone w pamięci, nigdy Czy named między kolejnymi uruchomieniami zachowuje pamięc podręczną na dysku? Czy mogę go do tego zmusic?

Nie, named Jak zostać pełno etatowym administratorem DNSu.

Dokumnetacja i narzędzia.

Istnieje prwdziwa dokumentacja. Drukowana i OnLine. Aby stać się prawdziwym administratorem DNS należy przeczytać kilkanaście pozycji. Jeśli ktoś preferuje papier polecam TCP/IP Network Administration, by Craig Hunt from O'Reilly..., ISBN 0-937175-82-X. Dobry administrator DNS (lub jakikolwiek) musi również przeczytać ONLine dostępne są na przykład takie pozycje: , ; FAQ, podręcznik (BOG; Bind Operations Guide) jak również dokumenty opisujące protokoły i chwyty dotyczące DNSu. Większości z tego nie przeczytałem, dlatego nie jestem pełnoetatowym administratorem DNS. Z drugiej strony Arnt Gulbrandsen przeczytał BOG i jest nim zachwycony. Grupa nowinkowa jest poświęcona DNSowi. I na koniec wiele dokumentów RFC dotyczy DNSu. Prawdopodobnie najważniejsze z nich to: Od tłumacza

Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.

Wszelkie tego typu uwagi proszę przesyłać na adres

Inne przetłumaczone dokumenty można znaleźć na stronie . Zapraszamy!.

piotr.pogorzelski@ippt.gov.pl.