Prva stavka DNS konfiguracije, vrlo korisna korisnicima koji se spajaju modemima, kabelskim modemima i ADSL-om.
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 named
u 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 Linux File system
standardu.
Datoteka zvana /var/named/root.hints se spominje ovdje. Ona treba sadržavati ovo: (Ako izrežete i zalijepite ovu datoteku iz elektroničke verzije ovog dokumenta, molim primijetite kako ne bi 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: (Opet, molim te makni početne razmake ako izrežeš i zalijepiš ovo)
$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: (Opet, makni razmake!)
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 (Top Level Domain, Najviša Domena,
`hr
' u ovom slučaju). Ako se često trebaš spajati na strojeve u drugoj
domeni, možeš tu domenu dodati u search liniju ovako: (Sjeti se maknuti
početne razmake, ako postoje)
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.
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 mogla biti zastarjela (eng. `stale'). Zato si
informiran o ovoj (vrlo maloj) mogućnosti jer nema "aa". Ipak, sada znaš da
cache radi.
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
(Zapamtio si što s početnim razmacima, zar ne? Neću ih više spominjati.)
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.
Sada znaš kako podesiti caching named
. Popij pivo, mlijeko, ili što
već voliš kako bi to proslavio.