______________________________________________________________________
Sadržaj
______________________________________________________________________
11.. UUvvoodd
Ključne riječi: DNS, BIND, BIND 4, BIND 8, named, dialup, PPP, slip,
ISDN, Internet, domain, name, resolution, hosts, caching.
Ovaj dokument je dio Linux Documentation Projecta.
11..11.. PPrraavvnnee ssttvvaarrii
(C)opyright 1995-2000 Nicolai Langfeldt. Do not modify without
amending copyright, distribute freely but retain copyright message.
Hrvatski prijevod (c)opyright Josip Rodin, slobodno za distribuciju uz
zadržavanje ove poruke o autorskim pravima.
11..22.. ZZaasslluuggee ii ppoozziivv zzaa ppoommooćć
Želio bih zahvaliti Arntu Gulbrandsenu kojeg sam napatio nedovršenim
dijelovima ovoga i koji je dao puno korisnih prijedloga. Također bih
želio zahvaliti ljudima koji su e-mailom poslali prijedloge i
bilješke.
Ovo nikada neće biti završen dokument, molim vas šaljite mi e-mail o
vašim problemima i uspjesima. Vi možete učiniti ovaj HOWTO boljim.
Dakle, molim vas, šaljite komentare i/ili pitanja, ili novac, na
janl@math.uio.no. Ili kupite moju knjigu o DNS-u. Pogledajte
bibliografiju za informacije o njoj. Ako pošaljete e-mail i želite
odgovor, molim vas budite toliko pristojni da _p_r_o_v_j_e_r_i_t_e je li
povratna adresa ispravna i da radi. Također, molim vas, pročitajte
``PiO'' poglavlje prije nego mi e-mailate. Još jedna stvar, ja
razumijem samo norveški i engleski.
Ovo je jedan KAKO. Održavao sam ga kao dio LDP-a od 1995. U 2000.
godini sam napisao knjigu o istoj temi. Želio bih reći da iako je ovaj
KAKO na mnogo načina sličan knjizi, on _n_i_j_e razvodnjena verzija
izmišljena kako bi reklamirala knjigu. Ipak, knjigu ćete naći među
bibliografijom na kraju ovog KAKOa. Čitatelji ovog KAKOa su mi pomogli
razumjeti ono što je teško razumjeti o DNS-u. Ovo je pomoglo knjizi,
ali je i knjiga pomogla meni da više razmislim o potrebama ovog KAKOa.
Knjiga je proizašla iz KAKOa. Treća verzija KAKOa je proizašla iz
knjige. Zahvaljujem se izdavaču knjige, Que, koji je riskirao sa mnom
:-)
11..33.. PPoossvveettaa
Ovaj HOWTO je posvećen Anne Line Norheim Langfeldt. Mada ga ona
vjerojatno nikada neće pročitati jer ona nije takav tip djevojke.
22.. UUppoozznnaavvaannjjee..
ŠŠttoo oovvoo jjee,, aa ššttoo nniijjee..
DNS znači Domain Name System -- sustav imenovanja domena. DNS pretvara
imena strojeva u IP adrese koje imaju svi strojevi na mreži. On
prevodi (mapira, kako bi se to reklo u žargonu) iz imena u adresu i iz
adrese u ime, i još neke druge stvari. Ovaj KAKO dokumentira kako
definirati takva mapiranja koristeći Unix sustav, uz par stvari
specifičnih Linux sustavu.
Mapiranje je jednostavno povezivanje između dvije stvari, u ovom
slučaju imena stroja, kao ftp.linux.org, i IP broja (ili adrese)
stroja, kao 199.249.150.4. DNS također sadrži mapiranja u drugom
smjeru, iz IP broja u ime stroja; ovo se zove obrnuto mapiranje (eng.
"reverse mapping").
DNS je, neupoznatom (tebi ;-), jedno od mračnijih područja
administriranja mreže. Srećom, DNS nije stvarno tako težak. Ovaj KAKO
će pokušati učiniti neke stvari jasnijima. On opisuje kako podesiti
_j_e_d_n_o_s_t_a_v_a_n DNS server. Počet ćemo sa caching only serverom da bi
došli do podešavanja primarnog DNS imenskog servera za domenu. Za
kompleksnije postavke možeš pogledati ``PiO'' poglavlje ovog
dokumenta. Ako to nije opisano tamo trebat ćeš _p_r_o_č_i_t_a_t_i Pravu
Dokumentaciju. Što je i od čega se sastoji Prava Dokumentacija bit će
objašnjeno u ``zadnjem poglavlju''.
Prije nego počneš s ovim, trebao bi konfigurirati svoj stroj tako da
se možeš telnetirati na i s njega, i uspješno uspostaviti sve vrste
veza na mrežu, i posebno bi trebao moći napraviti _t_e_l_n_e_t _1_2_7_._0_._0_._1 i
time doći na svoj stroj (probaj sad!). Za početak također trebaš
ispravne /etc/nsswitch.conf, /etc/resolv.conf i /etc/hosts datoteke,
jer njihovu funkciju ovdje neću objasniti. Ako ovo već nemaš podešeno
i u radu, Networking-HOWTO i/ili Networking-Overview-HOWTO
objašnjavaju kako to podesiti. Pročitaj ih.
Kada kažem 'tvoj stroj', mislim na stroj na kojem pokušavaš podesiti
DNS, ne na niti jedan drugi stroj koji imaš, a koji je uključen u
tvoje mrežne napore.
Pretpostavit ću da nisi iza bilo kakvog firewalla koji blokira upite o
imenima. Ako jesi, trebat ćeš posebnu konfiguraciju -- pogledaj
poglavlje ``PiO''.
Opsluživanje imenima na Unixu je omogućeno programom zvanim named. On
je dio ``BIND'' paketa kojim koordinira Paul Vixie uime Internet
Software Consortiuma. Named je uključen u većinu Linux distribucija i
obično je instaliran kao /usr/sbin/named, obično iz paketa zvanog
BIND.
Ako imaš named, vjerojatno ga možeš i koristiti; ako ga nemaš, nabavi
ga binarnog sa neke Linux FTP lokacije, ili nađi najnoviji i najbolji
izvorni kod sa . Ovaj KAKO govori o
verziji 8. Stara verzija ovog HOWTO-a, o verziji 4, je još uvijek
dostupna na u slučaju da koristiš
bind 4 (nažalost, KAKO za verziju 4 ne postoji :( op. prev.). Ako
namedova man stranica govori o named.conf, imaš BIND 8; ako govori o
datoteci named.boot, imaš BIND 4. Ako imaš 4 i brineš o sigurnosti,
stvarno bi trebao nadograditi na najnoviju 8-icu. Odmah.
DNS je baza podataka cijele mreže. Pazi što ćeš staviti u nju. Ako
staviš smeće u nju, ti i drugi ćete dobiti smeće iz nje. Održavaj svoj
DNS urednim i dosljednim i dobro će te služiti. Nauči ga koristiti,
administrirati, ispravljati greške i bit ćeš još jedan dobar
administrator koji čuva mrežu od padanja na koljena zbog krivog
upravljanja.
NNaappoommeennaa:: pravi rezervne (backup) kopije svih datoteka koje ti naložim
da promijeniš ako ih već imaš, tako da ako ništa ne bude radilo nakon
ovoga, možeš sve vratiti u staro, radno stanje.
33.. CCaacchhiinngg iimmeennsskkii sseerrvveerr kkoojjii nnaallaazzii aaddrreessee..
PPrrvvaa ssttaavvkkaa DDNNSS kkoonnffiigguurraacciijjee,, vvrrlloo kkoorriissnnaa kkoorriissnniicciimmaa kkoojjii ssee
ssppaajjaajjuu mmooddeemmiimmaa,, kkaabbeellsskkiimm mmooddeemmiimmaa ii AADDSSLL--oomm..
Na Red Hat i Red Hat baziranim distribucijama možeš postići isti
praktični rezultat kao iz prvog poglavlja ovog KAKOa instaliranjem
paketa bind, bind-utils i caching-nameserver. Ako koristite Debian
jednostavno instalirajte bind i bind-doc. Dakako da te puko
instaliranje ovih paketa neće naučiti istom što i čitanje ovog KAKOa.
Dakle, instaliraj pakete, i onda čitaj provjeravajući datoteke koje su
oni instalirali.
Caching only imenski server će naći odgovor na upite o imenima i
zapamtiti odgovor sljedeći put kad ga budeš trebao. Ovo će znatno
skratiti vrijeme čekanja sljedeći put, posebno ako si na sporoj vezi.
Prvo ćeš trebati datoteku zvanu /etc/named.conf (Debian:
/etc/bind/named.conf). Ona je pročitana kad se pokreće named. Za sada
ona treba sadržavati samo ovo:
______________________________________________________________________
// Konfiguracijska datoteka za caching only imenski server
options {
directory "/var/named";
// Odkomentiravanje ovoga može pomoći ako moraš proći kroz
// firewall, a stvari baš i ne rade:
// 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";
};
______________________________________________________________________
Paketi Linux distribucija mogu koristiti različita imena datoteka za
svaku vrstu datoteka spomenutih ovdje; one će ipak sadržavati skoro
iste stvari.
Linija 'directory' govori namedu gdje da potraži datoteke. Sve
datoteke nazvane slično će biti relativne ovome. Također, pz je
direktorij ispod /var/named, tj. /var/named/pz. /var/named je pravi
direktorij prema _L_i_n_u_x _F_i_l_e _s_y_s_t_e_m _s_t_a_n_d_a_r_d_u.
Datoteka zvana /var/named/root.hints se spominje ovdje. Ona treba
sadržavati ovo: (_A_k_o _i_z_r_e_ž_e_t_e _i _z_a_l_i_j_e_p_i_t_e _o_v_u _d_a_t_o_t_e_k_u _i_z
_e_l_e_k_t_r_o_n_i_č_k_e _v_e_r_z_i_j_e _o_v_o_g _d_o_k_u_m_e_n_t_a_, _m_o_l_i_m _p_r_i_m_i_j_e_t_i_t_e _k_a_k_o nnee bbii
smjelo biti početnih razmaka u datoteci, tj. sve linije trebaju početi
znakom koji nije razmak. Neki programi za obradu dokumenata će ubaciti
razmake na početak redaka, uzrokujući nešto zabune. U tom slučaju
molim maknite početne razmake))
______________________________________________________________________
;
; There might be opening comments here if you already have this file.
; If not don't worry.
;
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
;
M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17
E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10
D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90
A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4
H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53
C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12
G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4
F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241
B.ROOT-SERVERS.NET. 6D IN A 128.9.0.107
J.ROOT-SERVERS.NET. 6D IN A 198.41.0.10
K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129
L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12
______________________________________________________________________
Ova datoteka opisuje korijenske imenske servere u svijetu. Oni se
mijenjaju s vremenom i lista se mora održavati svako nekoliko.
Pogledaj poglavlje ``Održavanje'' za upute kako ih osvježavati.
Sljedeći odjeljak u named.conf datoteci je opis zone. Objasnit ću
njenu upotrebu u kasnijim poglavljima, zasad samo napravi datoteku
zvanu 127.0.0 sljedećeg sadržaja, u poddirektoriju pz: (_O_p_e_t_, _m_o_l_i_m _t_e
_m_a_k_n_i _p_o_č_e_t_n_e _r_a_z_m_a_k_e _a_k_o _i_z_r_e_ž_e_š _i _z_a_l_i_j_e_p_i_š _o_v_o)
______________________________________________________________________
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
______________________________________________________________________
Dalje, trebat ćeš /etc/resolv.conf koji će izgledati slično ovome:
(_O_p_e_t_, _m_a_k_n_i _r_a_z_m_a_k_e_!)
______________________________________________________________________
search poddomena.tvoja-domena.hr tvoja-domena.hr
nameserver 127.0.0.1
______________________________________________________________________
Linija `search' određuje koje će se domene pretraživati za neki host
na kojeg se želiš spojiti. Linija `nameserver' određuje adresu tvog
imenskog servera, u ovom slučaju tvoj stroj jer je to adresa na kojoj
radi tvoj named (127.0.0.1 je prava, nema veze ako tvoj stroj ima i
neku drugu adresu). Ako želiš više imenskih servera, stavi
`nameserver' liniju za svaki. (Napomena: named nikada ne čita ovu
datoteku, to radi resolver koji koristi named. Napomena 2: U nekim
/etc/resolv.conf datotekama ćeš naći redak "domain". To je u redu, ali
nemoj koristiti i "search" i "domain", samo jedan od njih će raditi.)
Da ilustriram što ova datoteka radi: ako klijent stroj pokuša odrediti
adresu za bla, tada se prvo probava adresa bla.poddomena.tvoja-
domena.hr, pa bla.tvoja-domena.hr, i na kraju bla. Ne bi trebao
staviti puno domena u "search" liniju, jer treba vremena kako bi se
sve pretražile.
Ovaj primjer pretpostavlja da si ti u domeni poddomena.tvoja-
domena.hr, a tvoj stroj se tada zove tvoj-stroj.poddomena.tvoja-
domena.hr. Search linija ne bi trebala sadržavati tvoju TLD/ND (_T_o_p
_L_e_v_e_l _D_o_m_a_i_n, _N_a_j_v_i_š_a _D_o_m_e_n_a, `hr' u ovom slučaju). Ako se često
trebaš spajati na strojeve u drugoj domeni, možeš tu domenu dodati u
search liniju ovako: (_S_j_e_t_i _s_e _m_a_k_n_u_t_i _p_o_č_e_t_n_e _r_a_z_m_a_k_e_, _a_k_o _p_o_s_t_o_j_e)
______________________________________________________________________
search poddomena.tvoja-domena.hr tvoja-domena.hr neka-domena.hr
______________________________________________________________________
i tako dalje. Očito trebaš staviti prava imena domena umjesto ovih
primjera. Molim te uoči kako nema točke na krajevima imena domena.
Ovo je važno; molim te uoči kako nema točke na krajevima imena domena.
33..11.. SSttaarrttaannjjee nnaammeedd--aa
Nakon svega, vrijeme je da startamo named. Ako modemski biraš
providera, prvo se spoji. Otipkaj `ndc start', i pritisni enter, bez
opcija. Ako to ne uspije, probaj `/usr/sbin/ndc start'. Ako ni to ne
uspije, pročitaj poglavlje ``PiO''. Sada možeš testirati svoje
postavke. Ako pogledaš svoju datoteku sa syslog porukama (obično se
zove /var/adm/messages, drugi direktorij može biti /var/log, a druga
datoteka syslog) dok startaš named (učini `tail -f /var/log/messages')
trebao bi vidjeti nešto kao ovo:
(linije koje završavaju sa \ nastavljaju se u sljedećem retku)
Dec 15 23:53:29 localhost named[3768]: starting. named 8.2.2-P7 \
Fri Nov 10 04:50:23 EST 2000 ^Iprospector@porky.\
devel.redhat.com:/usr/src/bs/BUILD/bind-8.2.2_P7/\
src/bin/named
Dec 15 23:53:29 localhost named[3768]: hint zone "" (IN) loaded\
(serial 0)
Dec 15 23:53:29 localhost named[3768]: Zone "0.0.127.in-addr.arpa"\
(file pz/127.0.0): No default TTL set using SOA\
minimum instead
Dec 15 23:53:29 localhost named[3768]: master zone\
"0.0.127.in-addr.arpa" (IN) loaded (serial 1)
Dec 15 23:53:29 localhost named[3768]: listening on [127.0.0.1].53 (lo)
Dec 15 23:53:29 localhost named[3768]: listening on [10.0.0.129].53\
(wvlan0)
Dec 15 23:53:29 localhost named[3768]: Forwarding source address is\
[0.0.0.0].1034
Dec 15 23:53:29 localhost named[3769]: Ready to answer queries.
Ako je bilo ikakvih poruka o greškama, mora da je došlo do greške.
named će imenovati datoteku u kojoj je greška. Vrati se i provjeri
datoteku. Pokreni `ndc restart' kada je popraviš.
Sada možete isprobati svoje postavke. Tradicionalno se za to koristio
program nslookup. Danas se preporuča dig:
$ dig -x 127.0.0.1
; <
> DiG 8.2 <
> -x
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUERY SECTION:
;; 1.0.0.127.in-addr.arpa, type = ANY, class = IN
;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 1D IN PTR localhost.
;; AUTHORITY SECTION:
0.0.127.in-addr.arpa. 1D IN NS ns.penguin.bv.
;; Total query time: 30 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 00:16:12 2000
;; MSG SIZE sent: 40 rcvd: 110
Ako to dobiješ, onda radi. Nadajmo se. Ako se razlikuje, vrati se i
provjeri sve. Svaki put kad promijeniš named.conf datoteku, moraš
ponovo startati named koristeći `ndc restart' naredbu.
Sada možeš postaviti upit. Probaj pogledati ime stroja koji ti je
blizu. jagor.srce.hr je meni blizu, na SRCE-u:
$ dig jagor.srce.hr
; <
> DiG 8.2 <
> jagor.srce.hr
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUERY SECTION:
;; jagor.srce.hr, type = A, class = IN
;; ANSWER SECTION:
jagor.srce.hr. 1D IN A 161.53.2.130
;; AUTHORITY SECTION:
srce.hr. 1D IN NS regoc.srce.hr.
srce.hr. 1D IN NS bjesomar.srce.hr.
;; ADDITIONAL SECTION:
regoc.srce.hr. 1D IN A 161.53.2.69
bjesomar.srce.hr. 1D IN A 161.53.2.70
;; Total query time: 112 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 00:23:07 2000
;; MSG SIZE sent: 28 rcvd: 162
dig je sada upitao tvoj named da potraži stroj jagor.srce.hr. On se
onda spojio na jedan od imenskih servera navedenih u tvojoj root.hints
datoteci, i upitao za put od tamo. Možda će trebati malo vremena dok
ne dobiješ rezultat budući da on pretražuje sve domene koje si naveo u
/etc/resolv.conf datoteci. Molim te primijeti "aa" u "flags:" retku.
To znači da je odgovor bio služben, da je svježe dobiven od nadležnog
servera (eng. "authoritative"). Objasnit ću "authoritative" kasnije.
Ako upitaš isto to ponovo, dobit ćeš ovo:
$ dig jagor.srce.hr
; <
> DiG 8.2 <
> jagor.srce.hr
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUERY SECTION:
;; jagor.srce.hr, type = A, class = IN
;; ANSWER SECTION:
jagor.srce.hr. 1D IN A 161.53.2.130
;; AUTHORITY SECTION:
srce.hr. 1D IN NS regoc.srce.hr.
srce.hr. 1D IN NS bjesomar.srce.hr.
;; ADDITIONAL SECTION:
regoc.srce.hr. 1D IN A 161.53.2.69
bjesomar.srce.hr. 1D IN A 161.53.2.70
;; Total query time: 4 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 00:23:09 2000
;; MSG SIZE sent: 28 rcvd: 162
Primijeti manjak "aa" oznake o ovom odgovoru. To znači da named ovaj
put nije otišao tražiti po mreži, jer je informacija sada bila u
cacheu. Ali informacija u cache-u bi _m_o_g_l_a biti zastarjela (eng.
`stale'). Zato si informiran o ovoj (vrlo maloj) mogućnosti jer nema
"aa". Ipak, sada znaš da cache radi.
33..22.. ``RReessoollvveerrii''
Svi OS-ovi koji imaju implementiran standardni C API imaju i pozive
`gethostbyname' i `gethostbyaddr'. Oni mogu dobiti informacije iz
raznih izvora. Iz kojih će ih izvora dobijati se na Linuxu (i nekim
drugim Unixima) konfigurira u /etc/nsswitch.conf. Ovo je duga datoteka
koja određuje gdje dobiti različite vrste podataka, iz koje datoteke
ili baze. Obično sadrži pomoćne komentare pri vrhu, koje bi trebao
pročitati. Nakon toga nađi liniju koja počinje sa `hosts:', i ona bi
trebala biti ovakva:
______________________________________________________________________
hosts: files dns
______________________________________________________________________
(_Z_a_p_a_m_t_i_o _s_i _š_t_o _s _p_o_č_e_t_n_i_m _r_a_z_m_a_c_i_m_a_, _z_a_r _n_e_? _N_e_ć_u _i_h _v_i_š_e
_s_p_o_m_i_n_j_a_t_i_.)
Ako ne postoji linija koja počinje s `hosts:', onda umetni onu gornju.
Ona govori da programi prvo trebaju pogledati u /etc/hosts datoteku, i
onda provjeriti u DNS-u, prema resolv.conf-u.
33..33.. ČČeessttiittaamm
Sada znaš kako podesiti caching named. Popij pivo, mlijeko, ili što
već voliš kako bi to proslavio.
44.. FFoorrwwaarrddiinngg
U velikim, dobro organiziranim, akademskim ili ISP (eng. `Internet
Service Provider', pružatelj Internet usluga) mrežama ćete katkad naći
da su ljudi koji se brinu o mreži podesili hijerarhiju DNS servera
koji proslijeđuju (eng. `forwarders') što pomaže u olakšavanju
pritiska na internu mrežu pa i pritiska na vanjske servere. Ipak, to
nije bitno i korištenjem DNS servera vašeg pružatelja mrežnih usluga
kao ``forwardera'' možete učiniti odgovore na upite bržima i manje
opterećujućima za vašu mrežu. Ako koristite modem, ovo bi moglo biti
prilično dobro. Za potrebe ovog primjera, pretpostavit ćemo da vaš
pružatelj mrežnih usluga ima dva imenska servera koje žele da
koristite, s IP brojevima