DNS HOWTO
Nicolai Langfeldt janl@math.uio.no
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.
______________________________________________________________________
Table of Contents:
1. Wstęp
1.1. Legal stuff
1.2. Podziękowania i prośby o pomoc.
1.3. Inne dokumenty
1.4. Dedykacja
2. Wprowadzenie.
3. Podręczny serwer DNS.
4. Całkiem prosta domena.
4.1. Wpierw troche teorii.
4.2. Nasza własna domena.
4.3. Co dalej.
5. Przykład, prawdziwa domena.
5.1. /etc/named.boto (lub /var/named/named.boot)
5.2. /var/named/root.cache
5.3. /var/named/zone/127.0.0
5.4. /var/named/zone/land-5.com
5.5. /var/named/zone/206.6.177
6. Utrzymanie i konserwacja
7. Automatyczna konfiguracja połączeń modemowych.
8. FAQ
9. Jak zostać pełno etatowym administratorem DNSu.
10. Od tłumacza
______________________________________________________________________
11.. WWssttęępp
Słowa kluczowe: DNS, bind, named, dialup, ppp, slip, Internet, domain,
name, hosts, resolving
11..11.. LLeeggaall ssttuuffff
(C)opyright 1995 Nicolai Langfeldt. Do not modify without amending
copyright, distribute freely but retain copyright message.
11..22.. PPooddzziięękkoowwaanniiaa ii pprroośśbbyy oo ppoommoocc..
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.
11..33.. IInnnnee ddookkuummeennttyy
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 ``FAQ''
dotyczącym najczęsciej pojawiających się pytań.
11..44.. DDeeddyykkaaccjjaa
Ten dokument HOWTO jest dedykowany Anne Line Norheim. Pomimo, że
prawdopodobnie nigdy go nie przeczyta.
22.. WWpprroowwaaddzzeenniiee..
CCoo ttuu zznnaajjddzziieecciiee,, aa cczzeeggoo nniiee..
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ć _p_r_o_s_t_y serwer DNS. Rozpoczynając od podręzcnego
serwera DNS aż do uruchomienia podstawowego serwera domeny. Bardziej
skomplikowane konfiguracje mogą być opisane w rozdziale ``FAQ''. Jeśli
nie znajdziesz tam rozwiązania swoich problemów, musisz zapoznać się z
Prawdziwą Dokumentacją. Później napiszę co to jest Prawdziwa
dokumentacja ``the last chapter''.
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 ``FAQ''.
Serwowanie nazw pod systemem UNIX jest wykonywane przez program o
nazwie named. Jest to część pakietu bind, który prowadzi i którym
opiekuje się Paul Vixie z The Internet Software Consortium. Named jest
dostarczany przez większość dystrybucji Linuxa i zwykle można go
znaleźć w /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
ftp.vix.com:/pub/bind.
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ć.
WWsskkaazzóówwkkaa:: Zrób kopie wszystkich plików, które każe zmienić, tak aby w
przypadku niepowodzenia całej konfiguracji bys mógł wrócić do stanu
pierwotnego.
33.. PPooddrręęcczznnyy sseerrwweerr DDNNSS..
PPiieerrwwsszzyy eettaapp kkoonnffiigguurraaccjjii DDNNSS,, ppoożżyytteecczznnyy ddllaa oossóóbb łłąącczząąccyycchh ssiięę zz
IInntteerrnneetteemm pprrzzeezz mmooddeemm..
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
______________________________________________________________________
BBAARRDDZZOO WWAAŻŻNNEE:: W niektórych formatach tego dokumentu, zawartość
wspomnianego pliku będzie poprzedzona kilkoma spacjami lub znakami
tabulacji. Znaki te nie mogą znależć się w prawdzimym pliku
konfiguracyjnym. UUssuuńń wwsszzeellkkiiee wwiiooddąąccee ssppaaccjjee w plikach utworzonych na
podstawie tego dokumnetu (np przez kopiowanie fragmentów).
Wiersz z poleceniem `directory' wskazuje, gdzie program named
powienien szukać plików. Wszystkie podawane póżniej nazwy plików będą
nazwami względem tego katalogu. /var/named jest właściwym miejscem,
zgodnym ze _S_t_a_n_d_a_r_d_e_m _s_y_s_t_e_m_ó_w _p_l_i_k_ó_w _w _s_y_s_t_e_m_i_e _L_i_n_u_x _(_F_S_S_).
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
______________________________________________________________________
PPaammiięęttaajj ccoo mmóówwiiłłeemm oo wwiiooddąąccyycchh ooddssttęęppaacchh!!.
Plik określa główne serwery DNS na świecie. Ta informacja zmienia się
z czasem i _m_u_s_i być poprawiana. Patrz ``Rozdziało utrzymaniu
serwera'', 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 named.boot zawiera słowo kłuczowe primary. Później
opiszę jego zadanie, teraz po prostu utwórz w katalogu pz plik o
nazwie 127.0.0 zawierający:
______________________________________________________________________
@ 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 `search' określa, które domeny powinny być przeglądane w
poszukiwaniu komputera z którym chcemy nawiązać połączenie. Wiersz
`nameserver' zawiera adres IP komputera, serwera DNS, z którego może
korzystać twój komputer. W tym przypadku jest to twój komputer
ponieważ to właśnie na nim chcesz uruchomić program named. (Uwaga: Ten
plik jest czytany przez procedury resolwera biblioteki libc, program
named nie zagląda do tego pliku.)
Mała ilustracja do czego służy ten plik: jeśli program otrzyma za
zadanie znalezienie adresu komputera foo, najpierw jest sprawdzane czy
istnieje komputer foo.poddomena.twoja.domena, a w przypadku
niepowodzenia następnie sprawda się foo.twoja.domena, a na końcu foo.
Jeśli należy znaleźć sunsite.unc.edu wpierw sprawdza się istnienie
sunsite.unc.edu.poddomena.twoja.domena (tak, jest to glupie, ale tak
musi być), następnie sunsite.unc.edu.twoja.domena, a na końcu
sunsite.unc.edu. Możesz nie chcieć umieszczać w tym pliku zbyt wielu
domen, każde wyszukanie zajmuje trochę czasu.
W kolejnym przykładzie zakładamy, że należysz do domeny
poddomena.twoja.domena, twój komputer nowsi nazwę twój-
komputer.poddomena.twoja.domena. Wiersz z poleceniem search nie
powinien zawierać domeny najwyższego poziomu (TLD -Top Level Domain)
(a w Polsce domeny drugiego poziomu np. edu.pl, /com.pl/). Jeśli
bardzo często łączysz się z komputerami należącymi do innej domeny,
możesz ją dodać do wiersza z poleceniem search:
______________________________________________________________________
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.
//eettcc//nnsssswwiittcchh..ccoonnff
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:', powinien wyglądać następująco:
______________________________________________________________________
hosts: files dns
______________________________________________________________________
Jeśli nie ma wiersza zaczynającego się od `hosts', to dodaj
przedstawiony powyżej. Deiniuje on, że programy wpierw powinny zajżeć
do pliku /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.
//eettcc//hhoosstt..ccoonnff
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 order powinno się
taki dodać. Określa on sposób działania procedur rozwiązujących nazwy
komputerów, które w podanej konfiguracji wpierw sprawdzają plik
/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 `man 8 resolv (w
większości dystrybucji Linuxa). IMHO jest to całkiem zrozumiały tekst
i powinien się z nim zapoznać każdy administrator DNSu. Zrób to teraz,
jeśli odłożysz to na później, nigdy tego nie zrobisz.
Cect1>Uruchamianie programu named.
Przyszedł nareszcie czas uruchomic program named. Jeśli korzystasz z
połączenia dzwonionego, przed uruchomieniem programu zestaw
połaczenie. Nastepnie uruchom `ndc start' i wciśnij ENTER. Gdyby
powloka nie mogła znaleźć progrmu ndc, spróbuj `/usr/sbin/ndc start'.
Jeśli tam też nie ma tego programu zajżyj do rozdziału ``FAQ''. 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 (ndc stop) i sprawdź wskazany plik.
$ 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 ndc restart.
Teraz możesz wydawać zapytania. Spróbuj odnaleźć komputer blisko
ciebie. pat.uio.no jest blisko mnie, Uniwersytet w Oslo:
> 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 pat.uio.no. Named
skontaktował się z jednym z serwerów nazw wymienionych w pliku
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ę `Non-authoritative answer:'. Oznacza, że tym
razem named skorzystał ze swojej pamięci podręcznej i nie przeszukiwał
sieci w poszukiwaniu odpowiedzi na twoje pytanie. Lecz informacja z
pamięci podręcznej _m_o_ż_e być nieaktualna. Dlatetgo jesteś informowany o
tym (pomijalnym) niebezpieczeństwie właśnie frazą `Non-authoritative
answer:' (Odpwowiedź z nieautoryzowanego źródła). Jeśli nslookup w
taki sposób odpowie na drugie zapytanie o ten sam komputer, jest to
znak, że zapamiętuje odpowiedzi przychodzące z sieci, a to znaczy, że
działa poprawnie. Aby zakończyć pracę z programem nslookup należy
wydać polecenie exit.
Jeśli korzystasz z protokołów ppp, slip, zapoznaj się z rozdziałem ``o
połączeniach modemowych'', 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.
44.. CCaałłkkiieemm pprroossttaa ddoommeennaa..
JJaakk sskkoonnffiigguurroowwaaćć wwłłaassnnąą ddoommeennęę..
44..11.. WWppiieerrww ttrroocchhee tteeoorriiii..
Zanim _n_a_p_r_a_w_d_ę rozpoczniemy ten rozdział, mam zamiar przedstawić ci
trochę teorii na temat pracy DNSu. A ty to przeczytasz, ponieważ jest
to ci potrzebne. Jeśli ci się nie chce, powinieneś choć zapoznać się z
nim powierzchownie. Możesz przestać, gdy dojdziesz do wyjaśnień, co
należy umieścić w pliku named.boot.
DNS jest systemem hierarchicznym. Domena główna (najwyższego poziomu)
jest oznaczana kropką `.' i nazywana `root'. W domenie . można znaleźć
kilka "Domen najwyższego poziomu (TLD)" np. ORG, COM, EDU czy NET.
Lecz jest ich znacznie więcej. Gdy chcesz znaleźć adres kompuera
prep.ai.mit.edu twój serwer musi odnaleźć komputer obsługujący domenę
edu. Zadaje pytanie serwerowi domeny . (serwery domeny . zna z pliku
root.cache), otrzymuje listę serwerów obsługujących domenę edu. Oto
mała ilustracja:
$ 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ę edu obsługują serwery *.root-
servers.net, tak więc możemy kontynuować nasze pytanie kierując je
nadal do serwera c.root-serwers.net. Teraz chcemy wiedzieć, kto
obsługuje domenę następnego poziomu: mit.edu.:
> 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
steawb, w20ns i bitsy obsługują mit, wybierz jeden z nich i spytaj się
o ai.mit.edu:
> 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 weaties.ai.mit.edu jest serwerem nazw dla doemny
ai.mit.edu:
> 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 prep.ai.mit.edu.
> 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 . znaleźliśmy kolejne
serwery DNS. Gdybyśmy skorzystali z własnego serwera DNS, named
zpamiętałby wszystkie informacje otrzymywane z sieci i nie musiałby
przej jakiś czas pytać się serwerów, korzystając z przechowywanych
informacji.
Mniej opisywaną lecz równie ważną domeną jest in-addr.arpa. Tak jak
zwykłe domeny również posiada strukturę hierachiczną. in-addr.arpa
pozwala na znalezienie nazwy komputera, jeśli tylko posiadamy jego
adres IP. Należy tu zwrócić uwagę, że adres IP jest zapisywany w
odwrotnej kolejności. Jeśli twój komputer posiada adres 192.128.52.43
named będzie się zachowywał tak samo jak w przykładzie poszukiwania
informacji na temat komputera prep.ai.mit.edu: znajdź serwery domey
arpa., znajdź serwery in-addr.arpa., znajdź serwery 192.in-addr.arpa.,
znajdź serwery 128.192.in-addr.arpa./, znajdź serwery 52.128.192.in-
addr.arpa./, znjdź niezbędne rekordy dla 43.52.128.192.in-addr.arpa..
Jasne, nie ?! (opowiedz 'tak'). Przez pierwsze dwa lata odwracanie
kolejności częsci adresu IP sprawia małe kłopoty.
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.
44..22.. NNaasszzaa wwłłaassnnaa ddoommeennaa..
Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją _l_i_n_u_x_._b_o_g_u_s.
Umieśćmy w niej jeden komputer. Specjalnie używam całkowicie bzdurną
nazwę domeny, aby mieć pewność, że nie przeszkodzimy nikomu z Sieci.
Rozpoczęliśmy tę część dodając do named.boot wiersz:
______________________________________________________________________
primary 0.0.127.in-addr.arpa pz/127.0.0
______________________________________________________________________
Proszę zwrócić uwagę na brak kropki `.' kończącej nazwy domen.
Pierwszy wiersz określa, że plik pz/127.0.0 zawiera informacje
definiujące domenę 0.0.127.in-addr.arpa. Plik ten już został
utworzony, wygląda następująco:
______________________________________________________________________
@ 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ę `.' kończącą pełne nazwy domen, w
przeciwieństwie do omawianego wcześniej pliku named.boot. Niektórzy
wolą rozpoczynać każdy plik strefy dyrektywą $ORIGIN lecz nie jest to
konieczne. Pochodzenie (miejsce w hierarchi DNS, do którego
przynależy) pliku strefy jest określone w kolumnie `domain' w pliku
named.boot, w tym przypadku jest to 0.0.127.in-addr.arpa.
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 _w_s_z_y_s_t_k_i_c_h plików stref, w każdym z plików
powinien znajdować się dokładnie jeden rekord SOA, powinien to być
pierwszy rekord w pliku. Opisuje on strefę, z której pochodzi
(komputer o nazwie linux.bogus), kto jest odpowiedzialny za jej
zawartość (hostmaster@linux.bogus), numer wersji pliku strefy (serial
1) oraz inne informacje, mające znaczenie dla pracy serwerów
drugorzędnych. Jeśli dla pól refresh, retry, expire i minimum będziesz
używał wartości jakie występują w tym dokumencie wszystko powinno
działać poprawnie.
Rekord NS określna kto serwuje informacje DNS na temat 0.0.127.in-
addr.arpa, jest to ns.linux.bogus. Rekord PTR mówi nam, że
1.0.0.127.in-addr.arpa (aka 127.0.0.1) jest znany pod nazwą localhost.
Teraz zrestartuj proces named (poleceniem ndc restart) i sprawdź
poczynione zmiany programem nslookup:
$ 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 localhost z komputera
127.0.0.1, to dobrze. Teraz nasze podstawowe zadanie, domena
linux.bogus, dodaj do pliku named.boot wiersz definiujący nową domenę:
______________________________________________________________________
primary linux.bogus pz/linux.bogus
______________________________________________________________________
Zwróć uwagę na powtarząjący sie brak znaku `.' kończących nazwy domen
w pliku named.boot.
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 _m_u_s_i byc rekordem RR typu A, czyli nazwą komputera,
która posiada przydzielony numer IP. Niedopuszczalne jest, aby nazwa
uzywana w rekordzie SOA byla rekordem tymu CNAME. Sam komputer nie
musi nosic nazwy 'ns', może to byc dowolna poprawna nazwa.
hostamster.linux.bogus należy odczytać jako hostmaster@linux.bogus,
musi to byc adres (lub alias do) osoby (lub osób) opiekujących się
DNSem dla tej domeny (i czytajacyh regularnie tę pocztę). Wszelka
korespondencja dotycząca tej domeny będzie wysyłana na ten adres, może
to być dowolny adres e-mail, choć kązdy spodziewa się, że adres
W powyższym pliku znalazł się rekord RR nowego typu, a mianowicie
rekord MX, inaczej rekord Mail eXchanger. Dostarcza on systemowi
pocztowemu informacji, dokąd wysyłać pocztę adresowaną
ktoś@linux.bogus, w tym przypadku do mail.linux.bogud lub
mail.friend.bogus. Liczba poprzedzająca nazwę komputera oznacza
priorytet rekordu. System pocztowy powinien korzystać w pierwszej
kolejności z rekordów o najmniejszym priorytecie (w naszym przypadku
10). Jeśli nie uda się dostarczyć poczty na ten adres, należy
spróbować innego adresu, o wyższym priorytecie. W naszym przypadku
byłby to mail.friend.bogus, który posiada priorytet 20.
Teraz trzeba zrestartowac program named wydając polecenie ndc restart.
Rezultaty naszej pracy mozemy sprawdzić programem nslookup.
$ 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 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ą (.) lub w ogole nie powinna być podawana. W takim
przypadku domyślnie przyjmuje się tzw. origin. Muszę podkreślić, że
nazwy domen w pliku named.boot nie powinny się kończyć kropką. Nie
macie pojęcia, jak wiele razy nadmierna liczba kropek, lub ich brak
spowodowała zamieszanie i ogłupiła mnóstwo ludzi.
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 _n_i_g_d_y nie powinny
wskazywać na rekord CNAME. Zawsze powinny wsazywać na rekord A.
Dlatego ta forma jest niepoprawna
______________________________________________________________________
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 webmaster@www.linux.bogus nie jest niepoprawny.
Możesz oczekiwać, że całkiem spora liczba administratorów pocztowych
Stamtąd będzie wymagała popdorządkowania się tej regule pomimo, że w
twoim przypadku wszystko może działać poprawnie. Sposobem na
uniknięcie kłopotów jest stosowanie rekordów A (i być może również
innych, np. rekordów MX):
______________________________________________________________________
www A 127.0.0.2
______________________________________________________________________
Paul Vixie, największy z wizardów programu named, sugeruje aby _n_i_e
korzystać z rekordów CNAME. Dlatego _b_a_r_d_z_o poważnie zastanów się nad
ograniczeniem uzywania rekordów CNAME.
Załaduj nową wersję bazy wydając polecenie ndc reload, wymusi ona na
procesie ponowne odczytanie plików konfiguracyjnych.
$ 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
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.
44..33.. CCoo ddaalleejj..
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.
55.. PPrrzzyykkłłaadd,, pprraawwddzziiwwaa ddoommeennaa..
SSkkąądd wwzziiąąćć pplliikkii _p_r_a_w_d_z_i_w_e_j ddoommeennyy.
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: _n_i_e wprowadzajcie tych plików do
swoich serwerów DNS! Przedstawione pliki służą jedynie jako punkt
odniesienia. Jeśli chcesz eksperymentować, wykorzystaj domenę
przykładową linux.bogus. Korzystam z tego przykładau za pozwoleniem
Davida Bullocka z LAND-5. Prezentowane informacje były aktualne 14
sierpnia 1196 roku, i mogą się róznić od aktualnych. Należy ciągle
pamiętać o uwagach na temat wiodących odstępów w plikach
przykładowych.
55..11.. //eettcc//nnaammeedd..bboottoo ((lluubb //vvaarr//nnaammeedd//nnaammeedd..bboooott))
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 pz, tutaj pliki są
umieszczane w katalogu zone.
______________________________________________________________________
; 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
______________________________________________________________________
55..22.. //vvaarr//nnaammeedd//rroooott..ccaacchhee
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
______________________________________________________________________
55..33.. //vvaarr//nnaammeedd//zzoonnee//112277..00..00
Tylko podstawowe rekordy, obowiązkowo rekord SOA, rekord odwzorujący
127.0.0.1 na localhost. Oba są konieczne. Nic więcej w tym pliku nie
jest potrzebne.PRzwdopodobnie nigdy już nie powinny byćmodyfikowane,
cgyba, że zmieni się adres serwera DNS lub adres email uzywany w
rekordzie SOA.
______________________________________________________________________
@ 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.
______________________________________________________________________
55..44.. //vvaarr//nnaammeedd//zzoonnee//llaanndd--55..ccoomm
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, _z_a_w_s_z_e musi być drugi, zapasowy serwer DNS umieszczony poza
twoją siecią. Widzimy również, że komputergem głównym jest land-5,
serwujący rózne usługi do których kierują odpowiednie rekorddy CNAME
(alternatywa jest używanie rekordów A).
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 root@land-5.com. hostmaster to inny, często używany
w takich przypadkach adres e-mail. Numer seryjny w powszechnie
przyjętym formacie rrrrmmdd z dodaną liczbą zmian danego dnia
wskazuje, że jest to prawdopodobnie szósta wersja tego pliku w dniu
20. września 1996. Pamiętaj, że numer seryjny _m_u_s_i monotonicznie
rosnąć. W tym przypadku pozostawiono jedna cyfrę jalo kicznik zmian
jednego dnia. Po wykonaniu dziewięciu poprawek, następną mozna wykonac
dopiero następnego dnia. Dlatego rozważ stosowanie dwóch pozycji do
oznaczania liczby modyfikacji jednego dnia.
______________________________________________________________________
@ 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.
55..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777
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 _n_i_e istniało odwzorowanie odwrotne
adresu 206.6.177.200 poprzez strefę in-addr.arpa, wtedy serwer nie
miałby możliwości znalezienia nazwy łączącego się komputera a
porównywanie adresów ip z wzorcami domen, nigdy nie przynosiłoby
poprawnych rezultatów.
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) _n_i_e
zezwolą na połączenia z komputerów, których adresy nie są
zarejestrowane w domenie odwrotnej. Dlatego faktem jest, że
rejestracja w domenie odwrotnej jest _k_o_n_i_e_c_z_n_a.
66.. UUttrrzzyymmaanniiee ii kkoonnsseerrwwaaccjjaa
UUttrrzzyymmyywwaanniiee ww pprraaccyy cciiąąggłłeejj..
Prócz pilnowania aby proces named byl zawsze katywny pozostaje jedynie
pilnowanie, aby plik root.cache był zawsze aktualny. Najprostszą
metodą jest skorzystanie z programu dig, wpierw należy go uruchomić
bez żadnych argumentóww, otrzymamy plik root.cache uzywany przez nasz
serwer. Następnie należy o to samo zapytać jeden z głównych serwerów
DNS (root servers) wydając polecenie
dig @rootserver. Zauważysz, że wynik tego polecenia bardzo przypomina
plik root.cache z dokładnością do kilku liczb. Te liczby nie mogą
uczynić nam żadnej szkody. Zapisz wynik polecenia do pliku (dig
@e.root-servers.net >root.cache.new), a następnie zastąp nim stary
plik root.cache.
Pamiętaj, aby po zamianie pliku root.cache zrestartować proces named.
Al Longyear przysłał mi poniższy skrypt, który można uruchamić i
automatycznie uaktualniac plik root.cache. Zainstaluj go w crontabie i
zpomnij. Niniejszy skrypt zakłada, że na twoim komputerze działa
system poczty elektornicznej i istnieje alias pocztowy hostmaster.
Przed uruchomieniem powinienes go dostosować so swoich ustawien.
______________________________________________________________________
#!/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ę _n_i_e korzystajcie z ftp aby uaktualnić plik
root.cache, przedstawiona powyżej metoda jest bardziej przyjazna
sieci.
77.. AAuuttoommaattyycczznnaa kkoonnffiigguurraaccjjaa ppoołłąącczzeeńń mmooddeemmoowwyycchh..
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 dip używany do
obsługi połączeń slip powinien być w stanie zrealizować wiele
pomysłów, z których korzystam.
Zwykle, gdy nie jestem przyłączony do sieci, moj plik resolv.conf
zawiera po prostu wiersz
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 resolv.conf
powinien zawierac informacje niezbędne do poprawnej pracy DNSu.
Rozwiązałem ten problem tworząc dwa wzorce pliku resolv.conf,
resolv.conf.local i resolv.conf.connected. Ten ostatni wygląda jak
opisywany wcześniej resolv.conf.
Aby połączyć się z siecią uruchamiam skrypt o nazwie 'ppp-on':
______________________________________________________________________
#!/bin/sh
echo calling...
pppd
______________________________________________________________________
pakiet pppd posiada plik o nazwie options, w którym deklaruje się
szczególy dotyczące sposobu nawiązywania połączeń. Tuż po zestawieniu
połączenia PPP, pppd uruchamia skrypt o nazwie ip-up (jest to
dokładnie opisane na stronie podręcznika programu pppd). Oto fragment
powyższego skryptu:
______________________________________________________________________
#!/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 ip-down:
______________________________________________________________________
#!/bin/sh
cp /etc/resolv.conf.local /etc/resolv.conf
read namedpid >/etc/hosts
______________________________________________________________________
hosts.ppp zawiera po prostu
______________________________________________________________________
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 hostname.
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 ``FAQ''.
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 named.boot dodać wiersz
______________________________________________________________________
forwarders 1.2.3.4 1.2.3.5
______________________________________________________________________
Plik named.cache powinien pozostać pusty. W ten sposób zmiejszysz ruch
generowany przez twój komputer i prawdopodobnie wszystko zacznie
działać szybciej. Jest to szczególnie ważne, gdy płacisz za przesłane
bajty. Dodatkowa zaleta tego rozwiązania polega na tym, że pozwala
pozbyć się obowiązku opieki i nadzorowania oprogramowania DNS,
ponieważ pusty plik named.cache nie wymaga odświerzania.
88.. FFAAQQ
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.
1. Jak korzystać z DNS w sieci chronionej firewallem?
Kilka wskazówek: `forwarders',`slave', zapoznaćsię z literaturą
prezentowaną na końcu.
2. 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 AA. bind
4.9.3 i nowszy przekazuje kolejne adresy z puli. Takie rozwiązanie
_n_i_e zadziała ze starszymi wersjami binda.
3. 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.
4. 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
ndc start muszisz wydać poleceni named. ndc reload to named.reload,
a ndc restart to named.restart. Większość tych programów znajduje
się w /usr/sbin.
5. Jak soknfigurować drugorzędny serwer domeny?
Jeśłi serwer podstawowy posiada adres 127.0.0.1, to do pliku
named.boot musisz dodac wiersz:
___________________________________________________________________
secondary linux.bogus 127.0.0.1 sz/linux.bogus
___________________________________________________________________
6. 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.
7. 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 _n_i_e są
zachowywane na dysku. Za każdym razem, kedy named konćzy prace,
inforamacje przechowywane w pamięci podręcznej są gubione.
Administrator nie ma żadnej kontroli nad pamięcią podręczną, ani
nad jej rozmiarem (najnowsze wersje pozwalaja sterowac rozmiarem
pamieci cache pp). Możesz to naprawic "modyfikując" named. Nie jest
to jednak zalecane.
8. Czy named między kolejnymi uruchomieniami zachowuje pamięc
podręczną na dysku? Czy mogę go do tego zmusic?
Nie, named _n_i_e zachowuje pamięci podręcznej na dysk w momencie
zakończenia pracy. To znaczy, że informacje w pamięc podręczna
muszą być odtwarzne od początku po każdym zrestartowaniu programu.
Możesz to naprawic "modyfikując" named. Nie jest to jednak
zalecane.
99.. JJaakk zzoossttaaćć ppeełłnnoo eettaattoowwyymm aaddmmiinniissttrraattoorreemm DDNNSSuu..
DDookkuummnneettaaccjjaa ii nnaarrzzęęddzziiaa..
Istnieje prwdziwa dokumentacja. Drukowana i OnLine. Aby stać się
prawdziwym administratorem DNS należy przeczytać kilkanaście pozycji.
Jeśli ktoś preferuje papier polecam _D_N_S _a_n_d _B_I_N_D by C. Liu and P.
Albitz from O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X.
Czytałem, jest doskonała. Rozdział poświęcony DNSowi można znaleźć w
_T_C_P_/_I_P _N_e_t_w_o_r_k _A_d_m_i_n_i_s_t_r_a_t_i_o_n, by Craig Hunt from O'Reilly..., ISBN
0-937175-82-X. Dobry administrator DNS (lub jakikolwiek) musi
również przeczytać _Z_e_n _a_n_d _t_h_e _A_r_t _o_f _M_o_t_o_r_c_y_c_l_e _M_a_i_n_t_e_n_a_n_c_e by Robert
M. Prisig :-) Dostępne jako ISBN 0688052304 oraz inne pozycje.
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 comp.protocols.tcp-ip.domains jest
poświęcona DNSowi. I na koniec wiele dokumentów RFC dotyczy DNSu.
Prawdopodobnie najważniejsze z nich to:
RRFFCC 22005522
A. Gulbrandsen, P. Vixie, _A _D_N_S _R_R _f_o_r _s_p_e_c_i_f_y_i_n_g _t_h_e _l_o_c_a_t_i_o_n
_o_f _s_e_r_v_i_c_e_s _(_D_N_S _S_R_V_), October 1996
RRFFCC 11991188
Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear,
_A_d_d_r_e_s_s _A_l_l_o_c_a_t_i_o_n _f_o_r _P_r_i_v_a_t_e _I_n_t_e_r_n_e_t_s, 02/29/1996.
RRFFCC 11991122
D. Barr, _C_o_m_m_o_n _D_N_S _O_p_e_r_a_t_i_o_n_a_l _a_n_d _C_o_n_f_i_g_u_r_a_t_i_o_n _E_r_r_o_r_s,
02/28/1996.
RRFFCC 11771133
A. Romao, _T_o_o_l_s _f_o_r _D_N_S _d_e_b_u_g_g_i_n_g, 11/03/1994.
RRFFCC 11771122
C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, _D_N_S _E_n_c_o_d_i_n_g _o_f
_G_e_o_g_r_a_p_h_i_c_a_l _L_o_c_a_t_i_o_n, 11/01/1994.
RRFFCC 11118833
R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, _N_e_w _D_N_S _R_R
_D_e_f_i_n_i_t_i_o_n_s, 10/08/1990.
RRFFCC 11003355
P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _i_m_p_l_e_m_e_n_t_a_t_i_o_n _a_n_d _s_p_e_c_i_f_i_c_a_t_i_o_n,
11/01/1987.
RRFFCC 11003344
P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _c_o_n_c_e_p_t_s _a_n_d _f_a_c_i_l_i_t_i_e_s,
11/01/1987.
RRFFCC 11003333
M. Lottor, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _o_p_e_r_a_t_i_o_n_s _g_u_i_d_e, 11/01/1987.
RRFFCC 11003322
M. Stahl, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _g_u_i_d_e, 11/01/1987.
RRFFCC 997744
C. Partridge, _M_a_i_l _r_o_u_t_i_n_g _a_n_d _t_h_e _d_o_m_a_i_n _s_y_s_t_e_m, 01/01/1986.
1100.. OOdd ttłłuummaacczzaa
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
piotr.pogorzelski@ippt.gov.pl
Inne przetłumaczone dokumenty można znaleźć na stronie
http://www.jtz.org.pl/. Zapraszamy!.
piotr.pogorzelski@ippt.gov.pl.
Wyszukiwarka
Podobne podstrony:
DNS49 HOWTO pl 6 (2)
DNS49 HOWTO pl 2 (2)
DNS49 HOWTO pl 9 (2)
DNS49 HOWTO pl (2)
DNS49 HOWTO pl 5 (2)
DNS49 HOWTO pl 8 (2)
DNS49 HOWTO pl 7 (2)
dns49 howto pl
DNS49 HOWTO pl 10 (2)
dns49 howto pl 4
DNS49 HOWTO pl 3 (2)
DNS49 HOWTO pl 1 (2)
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
cdrom howto pl 1
jtz howto pl 5
Keystroke HOWTO pl (2)
PostgreSQL HOWTO pl 14
więcej podobnych podstron