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