Naprej Nazaj Kazalo

5. Preprosta domena

Kako postaviti svojo domeno

5.1 Najprej kanček teorije

Najprej: Saj ste prebrali vse do tu, kajne? To je namreč nujno.

Preden se zares lotimo tega poglavja, vam bom postregel z nekaj teorije in zgledi o tem, kako deluje DNS. In vi boste to prebrali, ker vam bo koristilo. Če se vam tega zares ne ljubi brati, pa bi bilo dobro, ko bi vsaj na hitro preleteli. Branje upočasnite, ko pridete do tistega, kar mora iti v vašo datoteko named.conf.

DNS je hierarhičen, drevesno strukturiran sistem. Vrh se imenuje `.' in izgovarja `koren' (ang.: root), kot je značilno za drevesne podatkovne strukture. Pod . je veliko število vrhnjih domen (ang.: TLD, Top Level Domain), od katerih so najbolj znane ORG, COM, EDU in NET, seveda pa jih je še veliko več. Struktura je prav taka kakor drevo - ima korenino in je razvejena. Če imate vsaj nekaj računalniškega znanja, boste v DNS prepoznali iskalno drevo, našli boste stičišča, liste in robove. Pike so stičišča in robovi so na imenih.

Ko iščemo določen računalnik, gre poizvedba rekurzivno po hierarhiji, začenši pri vrhu. Če hočete izvedeti naslov prep.ai.mit.edu, mora vaš imenski strežnik nekje začeti. Začne s svojim predpomnilnikom. Če je v predpomnilniku odgovor, bo odgovoril, kakor smo videli v prejšnjem razdelku. Če odgovora ne pozna, bo začel odstranjevati dele imena, začenši na levi strani. Pogledal bo, ali ve, kaj o ai.mit.edu., potem o mit.edu., potem o edu.. Vedno pa pozna ., saj je v datoteki root.hints. Potem bo povprašal . strežnik o prep.ai.mit.edu. Ta . strežnik ne bo poznal odgovora, bo pa pomagal s preusmeritivjo (ang. refferal), s katero bo nakazal, kje naj se išče odgovor. Prek preusmeritev bo naš strežnik prišel do strežnika, ki bo imel pravi odgovor. To bom zdaj ponazoril. +norec pomeni, naj dig sprašuje nerekurzivno, tako da moramo sami delati rekurzijo. Z drugimi stikali zmanjšamo obseg podatkov, ki jih izpisuje dig:

$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu.
;; res options: init defnam dnsrch
;; got answer:
; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13
;; AUTHORITY SECTION:
.                       5d23h48m47s IN NS  I.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  E.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  D.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  A.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  H.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  C.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  G.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  F.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  B.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  J.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  K.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  L.ROOT-SERVERS.NET.
.                       5d23h48m47s IN NS  M.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
I.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.36.148.17
E.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.203.230.10
D.ROOT-SERVERS.NET.     6d23h48m47s IN A  128.8.10.90
A.ROOT-SERVERS.NET.     6d23h48m47s IN A  198.41.0.4
H.ROOT-SERVERS.NET.     6d23h48m47s IN A  128.63.2.53
C.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.33.4.12
G.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.112.36.4
F.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.5.5.241
B.ROOT-SERVERS.NET.     6d23h48m47s IN A  128.9.0.107
J.ROOT-SERVERS.NET.     6d23h48m47s IN A  198.41.0.10
K.ROOT-SERVERS.NET.     6d23h48m47s IN A  193.0.14.129
L.ROOT-SERVERS.NET.     6d23h48m47s IN A  198.32.64.12
M.ROOT-SERVERS.NET.     6d23h48m47s IN A  202.12.27.33

To je preusmeritev. Dobili samo samo "Authority section", brez "Answer section". Naš lastni imenski strežnik nas preusmeri. Izberimo naključno enega:

$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @H.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init defnam dnsrch
;; got answer:
; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 3
;; AUTHORITY SECTION:
MIT.EDU.                2D IN NS        BITSY.MIT.EDU.
MIT.EDU.                2D IN NS        STRAWB.MIT.EDU.
MIT.EDU.                2D IN NS        W20NS.MIT.EDU.

;; ADDITIONAL SECTION:
BITSY.MIT.EDU.          2D IN A         18.72.0.3
STRAWB.MIT.EDU.         2D IN A         18.71.0.151
W20NS.MIT.EDU.          2D IN A         18.70.0.160

Takoj nas preusmeri na strežnik MIT.EDU. Znova naključno izberemo neki strežnik:

$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @bitsy.mit.edu
; (1 server found)
;; res options: init defnam dnsrch
;; got answer:
; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
;; ANSWER SECTION:
prep.ai.mit.edu.        3h50m7s IN A    198.186.203.18

;; AUTHORITY SECTION:
AI.MIT.EDU.             6H IN NS        FEDEX.AI.MIT.EDU.
AI.MIT.EDU.             6H IN NS        LIFE.AI.MIT.EDU.
AI.MIT.EDU.             6H IN NS        ALPHA-BITS.AI.MIT.EDU.
AI.MIT.EDU.             6H IN NS        BEET-CHEX.AI.MIT.EDU.

;; ADDITIONAL SECTION:
FEDEX.AI.MIT.EDU.       6H IN A         192.148.252.43
LIFE.AI.MIT.EDU.        6H IN A         128.52.32.80
ALPHA-BITS.AI.MIT.EDU.  6H IN A         128.52.32.5
BEET-CHEX.AI.MIT.EDU.   6H IN A         128.52.32.22

Tokrat smo dobili tudi "ANSWER SECTION" in odgovor na naše vprašanje. V razdelku "AUTHORITY SECTION" je podatek, katere strežnike naj naslednjič povprašamo o ai.mit.edu. Tako lahko neposredno njih vprašamo, kadar bomo spraševali po imenih iz ai.mit.edu.

Začenši s ., smo našli imenski strežnik za vsako stopnjo v imenu domene s preusmeritvijo. Če bi uporabili svoj strežnik DNS namesto vseh drugih strežnikov, bi se vsi tako zbrani podatki shranili v predpomnilnik in kar nekaj časa mu ne bi bilo treba ponoviti že opravljenih poizvedb.

V drevesni prispodobi je vsaka ``.'' v imenu vejišče. Vsak del med dvema ``.'' je ime posameznih vej v drevesu. Po drevesu se gre tako, da se vzame želeno ime (prep.ai.mit.edu) in poizvemo pri korenu (.) ali pri kateremkoli že strežniku od korena proti prep.ai.mit.edu, ki ga imamo v predpomilniku. Šele ko v predpomnilniku ni več iskanih zapisov, se rekurzivne poizvedbe opravijo pri zunanjih strežnikih in se sledi preusmeritvam (ang. refferal) vse dlje proti imenu.

Domena, o kateri se manj govori, a je vseeno zelo pomembna, je in-addr.arpa. Prav tako kakor `navadne' domene je ugnezdena, vendar nam omogoča ravno nasprotno - da izvemo imena računalnikov iz njihovih naslovov. Pomembno si je zapomniti, da so naslovi IP v domeni in-addr.arpa zapisani v nasprotnem vrstnem redu. Če je naslov računalnika 192.128.52.43, je postopek, ki ga ubere named, prav tak kakor za prep.ai.mit.edu: najdi strežnik za arpa., najdi strežnik in-addr.arpa., najdi strežnik za 192.in-addr.arpa., najdi strežnik za 128.192.in-addr.arpa., najdi strežnik za 52.128.192.in-addr.arpa. in končno najdi zapise za 43.52.128.192.in-addr.arpa. Bistro, kaj? (Recite `da'.) Prav dejstvo, da so številke obrnjene, lahko povzroči veliko zmešnjavo.

5.2 Naša lastna domena

Zdaj bomo definirali svojo domeno - linux.izmislek - in v njej definirali računalnike. Uporabil sem popolnoma izmišljeno domeno; tako smo lahko gotovi, da ne bomo komu skočili v zelje.

Še nekaj, preden začnemo: v imenih računalnikov ne sme biti določenih znakov -- omejeni smo na črke angleške abecede: a-z, na številke:0-9 in na znak '-' (pomišljaj). Držite se jih. DNS ne razlikuje različnih velikosti črk, zato je pat.uio.no zanj isto kakor Pat.UiO.No.

Delo smo začeli že s tem razdelkom v named.conf:


zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

Prosim, zapomnite si, da na koncu domen v tej datoteki ni pike `.'. Ta razdelek pove, da bomo zdaj definirali 0.0.127.in-addr.arpa, da smo za to domeno glavni (angl. master) strežnik in da so podatki zanjo shranjeni v datoteki pz/127.0.0. Datoteko smo že prej ustvarili, v njej pa je:


$TTL 3D
@               IN      SOA     ns.linux.izmislek. hostmaster.linux.izmislek. (
                                1       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                4W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.linux.izmislek.
1                       PTR     localhost.

Prosim, zapomnite si pike `.' na koncu vseh polnih domen v tej datoteki kot nasprotje datoteki named.conf. Nekateri začnejo vsako območno datoteko z ukazom $ORIGIN, vendar je to popolnoma odveč. Izvor (kam v hierarhiji DNS spada) območne datoteke je namreč naveden v named.conf, v tem primeru je to 0.0.127.in-addr.arpa.

V tej območni datoteki so tri zapisi virov (ang.: RRs, resource records): SOA, NS in PTR. SOA pomeni začetek pristojnosti (ang.: Start Of Authority). `@' je oznaka za izvor in ker je v stolpcu `domena' za to datoteko navedena 0.0.127.in-addr.arpa, prva vrstica v resnici pomeni

0.0.127.in-addr.arpa.   IN      SOA ...

NS je zapis vira imenskega strežnika (ang.: Name Server RR). Na začetku te vrstice ni oznake `@', ker se to ohranja še iz prejšnje vrstice - to prihrani veliko tipkanja. Zapis vira NS bi torej lahko zapisali tudi kot

0.0.127.in-addr.arpa.   IN      NS      ns.linux.izmislek

DNS pove, kateri računalnik je strežnik za domeno 0.0.127.in-addr.arpa, in to je ns.linux.izmislek. 'ns' je standardno ime za imenske strežnike, kot je www.nekaj standardno ime za spletne strežnike, vendar to ni pravilo - ime je lahko karkoli.

Zapis vira PTR (ang.: Domain Name Pointer) pravi, da se računalniku na naslovu 1 v podomrežju 0.0.127.in-addr.arpa, torej 127.0.0.1, imenuje localhost.

Zapis SOA (Start Of Authority) je glava za vse območne datoteke, v katerih mora biti natanko en zapis SOA. Ta zapis obsega podatke o domeni, od kod prihaja (računalnik z imenom ns.linux.izmislek), kdo je odgovoren za njeno vsebino (hostmaster@linux.izmislek - tu vstavite svoj e-naslov), katera različica območne datoteke je to (serijska številka: 1) in druge podatke, ki imajo opraviti s strežniki DNS s predpomnenjem ter s sekundarnimi strežniki DNS. Za vsa druga polja (osveževanje - refresh, vnovični poskus - retry, razveljavljenje - expire in minimum) se zanesite na številke, ki so navedene v tem HOWTO, in vse bi moralo ustrezno delovati. Pred zapisom SOA pride obvezna vrstica $TTL 3D. Naj bo v vseh vaših območnih datotekah.

Zdaj spet zaženite named (ukaz je ndc restart) in uporabite dig, če si želite ogledati svoje delo. -x opravi obratno poizvedbo (ang.: reverse query):

$ 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: 5 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 01:13:48 2000
;; MSG SIZE  sent: 40  rcvd: 110

Torej uspe preslikati 127.0.0.1 v localhost. Odlično. Zdaj se lahko lotimo našega poglavitnega opravila, domene linux.izmislek. Najprej vstavimo nov območni (ang.: zone) razdelek v named.conf:


zone "linux.bogus" {
        notify no;
        type master;
        file "pz/linux.izmislek"; };

Spet si zapomnite, da na koncu domen v named.conf ni pik `.'.

V območno datoteko linux.izmislek bomo napisali nekaj popolnoma izmišljenih podatkov:


;
; Območna datoteka za linux.izmislek
;
; Polna območna datoteka
;
$TTL 3D
@       IN      SOA     ns.linux.izmislek. hostmaster.linux.izmislek. (
                        199802151       ; serial, današnji datum + današnja serijska številka
                        8H              ; refresh, sekund
                        2H              ; retry, sekund
                        4W              ; expire, sekund
                        1D )            ; minimum, sekund
;
                NS      ns              ; internetni naslov imenskega strežnika
                MX      10 mail.linux.izmislek          ; Primarni poštni strežnik
                MX      20 mail.prijatelj.izmislek.     ; Sekundarni poštni strežnik
;
localhost       A       127.0.0.1
ns              A       192.168.196.2
mail            A       192.168.196.4

O zapisu SOA si morate zapomniti dvoje. ns.linux.izmislek mora biti resničen računalnik z zapisom A. Prepovedano je imeti zapis CNAME za računalnik, naveden v zapisu SOA. Vsekakor ni pomembno, da se imenuje 'ns', lahko ima kakršnokoli veljavno ime. Drugo, hostmaster.linux.izmislek se bere kot hostmaster@linux.izmislek in mora biti veljaven naslov ali preusmeritev naslova, na katerega bo tisti, ki vzdržuje DNS, prejemal pošto (ta človek naj pošto tudi redno pregleduje). Ni nujno, da je to ravno `hostmaster', lahko je vaš navaden e-naslov, vendar se pogosto pričakuje tudi naslov `hostmaster'.

V tej datoteki je nov zapis vira, in sicer MX, kar pomeni poštni strežnik (ang.: Mail eXchanger). Ta zapis pove sistemom, kam naj pošljejo pošto, ki je naslovljena na nekdo@linux.izmislek, v tem primeru na mail.linux.izmislek ali mail.prijatelj.izmislek. Številka pred imeni računalnikov pomeni prednost. Če je le mogoče, se pošta pošlje strežniku z najmanjšo številko (10), drugače pa naslednjemu z najmanjšo številko, v tem primeru mail.prijatelj.izmislek, ki ima prednost 20.

Znova zaženite named z ukazom ndc restart in opazujte rezultate z digom:

$ dig any linux.izmislek +pfmin
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23499
;; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1
;; QUERY SECTION:
;;      linux.izmislek, type = ANY, class = IN

;; ANSWER SECTION:
linux.izmislek.            3D IN MX        10 mail.linux.izmislek.linux.izmislek.
linux.izmislek.            3D IN MX        20 mail.prijatelj.izmislek.
linux.izmislek.            3D IN NS        ns.linux.izmislek.
linux.izmislek.            3D IN SOA       ns.linux.izmislek. hostmaster.linux.izmislek. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

Po pazljivem opazovanju boste odkrili napako. Vrstica

linux.izmislek.            3D IN MX        10 mail.linux.izmislek.linux.izmislek.

je popolnoma napačna. Morala bi biti

linux.izmislek.            3D IN MX        10 mail.linux.izmislek.

Namenoma sem naredil napako, da se boste lahko iz nje učili :-) Če pogledate v območno datoteko, boste ugotovili, da v vrstici:

                MX      10 mail.linux.izmislek          ; Primarni poštni strežnik

manjka pika. Ali, drugače povedano, ima 'linux.izmislek' preveč. Če se v območni datoteki ime računalnika ne konča s piko, se mu doda izvor in v tem primeru povzroči dvojni linux.izmislek.linux.izmislek. Torej je


                MX      10 mail.linux.izmislek.         ; Primarni poštni strežnik

ali


                MX      10 mail                 ; Primarni poštni strežnik

pravilno. Priporočam uporabo druge možnosti, ker je treba manj tipkati. Nekateri strokovnjaki za BIND se s tem ne bodo strinjali, nekateri drugi pa se bodo. V območni datoteki je lahko domena napisana in se konča s `.' ali pa ni napisana in se namesto nje privzame izvirna domena.

Poudariti moram, da v named.conf ne sme biti pike na koncu domen. Še sanja se vam ne, kolikokrat je `.' tu povzročila pošteno zmešnjavo.

Zdaj, ko vse to veste, je pred vami nova, popravljena območna datoteka s še nekaj dodatnimi informacijami:


;
; Območna datoteka za linux.izmislek
;
; Polna območna datoteka
;
$TTL 3D
@       IN      SOA     ns.linux.izmislek. hostmaster.linux.izmislek. (
                        199802151       ; serial, današnji datum + današnja serijska številka
                        8H              ; refresh, sekund
                        2H              ; retry, sekund
                        4W              ; expire, sekund
                        1D )            ; minimum, sekund
;
                TXT     "Linux.Izmislek, vaš svetovalec za DNS"
                NS      ns              ; internetni naslov imenskega strežnika
                NS      ns.prijatelj.izmislek.
                MX      10 mail         ; Primarni poštni strežnik
                MX      20 mail.prijatelj.izmislek.     ; Sekundarni poštni strežnik
;
localhost       A       127.0.0.1

gw              A       192.168.196.1
                HINFO   "Cisco" "IOS"
                TXT     "Usmerjevalnik"

ns              A       192.168.196.2
                MX      10 mail
                MX      20 mail.prijatelj.izmislek.
                HINFO   "Pentium" "Linux 2.0"
www             CNAME   ns

donald          A       192.168.196.3
                MX      10 mail
                MX      20 mail.prijatelj.izmislek.
                HINFO   "i486"  "Linux 2.0"
                TXT     "DEK"

mail            A       192.168.196.4
                MX      10 mail
                MX      20 mail.prijatelj.izmislek.
                HINFO   "386sx" "Linux 1.2"

ftp             A       192.168.196.5
                MX      10 mail
                MX      20 mail.prijatelj.izmislek.
                HINFO   "P6" "Linux 2.1.86"

Tu smo spoznali še cel kup novih zapisov: HINFO, informacija o računalniku (ang.: Host INFOrmation), ima dva dela in k dobrim navadam sodi, da ju izpolnite. Prvi del je strojna oprema ali procesor računalnika, drugi pa operacijski sistem. Računalnik z imenom 'ns' ima procesor Pentium in poganja Linux 2.0. CNAME, kanonično ime (ang.: Canonical NAME) je način za poimenovanje istega računalnika z več različnimi imeni. V našem primeru je www alternativno ime za ns.

Uporaba zapisa CNAME je nekoliko sporna, vendar se je popolnoma varno ravnati po pravilu, da se zapisi MX, CNAME in SOA ne smejo nikoli nanašati na zapis CNAME, temveč samo na nekaj z zapisom A. Ni, denimo, priporočljivo imeti


foobar          CNAME   www                     ; NE!

pravilno pa je takole


foobar          CNAME   ns                      ; Da!

Prav tako se je varno zanašati na to, da CNAME ni dovoljeno ime računalnika za e-naslov: webmaster@www.linux.izmislek na primer ni dovoljen naslov glede na zgoraj navedene nastavitve. Pričakujete lahko, da bo kar nekaj upraviteljev hotelo, da to pravilo upoštevate, čeprav pri vas morda deluje. Težavam se izognete z uporabo zapisov A (in še nekaterih drugih, na primer MX):


www             A       192.168.196.2

Nekaj super strokovnjakov za BIND celo priporoča, naj se zapisi CNAME sploh ne uporabljajo, vendar razprava o tem, 'zakaj da' in 'zakaj ne', ne sodi v ta HOWTO.

Kakor ste že opazili, ta HOWTO in številni strežniki ne upoštevajo tega pravila.

Naložite novo zbirko podatkov z ukazom ndc reload, ki pove named, naj še enkrat prebere svoje datoteke.

$ dig linux.izmislek axfr

; <<>> DiG 8.2 <<>> linux.bogus axfr 
$ORIGIN linux.izmislek.
@                       3D IN SOA       ns hostmaster (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

                        3D IN NS        ns
                        3D IN NS        ns.prijatelj.izmislek.
                        3D IN MX        10 mail
                        3D IN MX        20 mail.prijatelj.izmislek.
                        3D IN TXT       "Linux.Izmislek, vaš svetovalec za DNS"
gw                      3D IN TXT       "Usmerjevalnik"
                        3D IN HINFO     "Cisco" "IOS"
                        3D IN A         192.168.196.1
localhost               3D IN A         127.0.0.1
mail                    3D IN HINFO     "386sx" "Linux 1.2"
                        3D IN MX        10 mail
                        3D IN MX        20 mail.prijatelj.izmislek.
                        3D IN A         192.168.196.4
www                     3D IN CNAME     ns
donald                  3D IN TXT       "DEK"
                        3D IN HINFO     "i486" "Linux 2.0"
                        3D IN MX        10 mail
                        3D IN MX        20 mail.prijatelj.izmislek.
                        3D IN A         192.168.196.3
ns                      3D IN HINFO     "Pentium" "Linux 2.0"
                        3D IN MX        10 mail
                        3D IN MX        20 mail.prijatelj.izmislek.
                        3D IN A         192.168.196.2
ftp                     3D IN HINFO     "P6" "Linux 2.1.86"
                        3D IN MX        10 mail
                        3D IN MX        20 mail.prijatelj.izmislek.
                        3D IN A         192.168.196.5
@                       3D IN SOA       ns hostmaster (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

;; Received 29 answers (29 records).
;; FROM: lookfar to SERVER: 127.0.0.1
;; WHEN: Sat Dec 16 01:35:05 2000

Tole je v redu. Kakor vidite, je izpis zelo podoben območni datoteki. Poglejmo, kaj pravi samo za www:

$ dig www.linux.izmislek +pfmin
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27345
;; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; QUERY SECTION:
;;      www.linux.izmislek, type = A, class = IN

;; ANSWER SECTION:
www.linux.izmislek.        3D IN CNAME     ns.linux.izmislek.
ns.linux.izmislek.         3D IN A         192.168.196.2

Z drugimi besedami, pravo ime www.linux.izmislek je ns.linux.izmislek, poleg tega pa vam poda še nekaj drugih informacij o ns, dovolj, da bi se lahko priključili nanj, če bi bili program.

Zdaj smo na polovici poti.

5.3 Obratni vnosi (ang. Reverse zone)

Zdaj lahko programi pretvorijo imena v domeni linux.izmislek v naslove, na katere se lahko priključijo, potrebujemo pa še obratne vnose, ki bodo omogočili DNS, da pretvarja naslove v imena. Imena so pomembna informacija za številne strežnike (FTP, IRC, WWW in druge), saj se na podlagi tega odločajo, ali se bodo sploh pogovarjali z vami ali ne in kakšno prednost vam bodo dali, če se bodo. Za popoln dostop do vseh storitev v internetu torej potrebujete obratne vnose.

Dodajte tole v named.conf:


zone "196.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "pz/192.168.196";
};

Stvar je natanko taka kakor pri 0.0.127.in-addr.arpa, pa tudi vsebina je podobna:


$TTL 3D
@       IN      SOA     ns.linux.izmislek. hostmaster.linux.izmislek. (
                        199802151 ; Serial, todays date + todays serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.linux.izmislek.

1               PTR     gw.linux.izmislek.
2               PTR     ns.linux.izmislek.
3               PTR     donald.linux.izmislek.
4               PTR     mail.linux.izmislek.
5               PTR     ftp.linux.izmislek.

Znova zaženite named (ndc restart) in spet preglejte svoje delo z dig:


$ dig -x 192.168.196.4 +pfmin
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8764
;; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUERY SECTION:
;;      4.196.168.192.in-addr.arpa, type = ANY, class = IN

;; ANSWER SECTION:
4.196.168.192.in-addr.arpa.  3D IN PTR  mail.linux.izmislek.

Zaenkrat je videti v redu, preglejmo še vse naenkrat:


dig -x 192.168.196 AXFR

; <<>> DiG 8.2 <<>> -x AXFR 
$ORIGIN 196.168.192.in-addr.arpa.
@                       3D IN SOA       ns.linux.izmislek. hostmaster.linux.izmislek. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

                        3D IN NS        ns.linux.izmislek.
4                       3D IN PTR       mail.linux.izmislek.
2                       3D IN PTR       ns.linux.izmislek.
5                       3D IN PTR       ftp.linux.izmislek.
3                       3D IN PTR       donald.linux.izmislek.
1                       3D IN PTR       gw.linux.izmislek.
@                       3D IN SOA       ns.linux.izmislek. hostmaster.linux.izmislek. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

;; Received 8 answers (8 records).
;; FROM: lookfar to SERVER: 127.0.0.1
;; WHEN: Sat Dec 16 01:44:03 2000

Odlično! Če vaš izpis ni videti takole, poglejte v syslog za sporočila o napakah, kot sem razložil na začetku tega poglavja, pod naslovom Zagon named.

5.4 Opozorila

Rad bi še nekaj dodal. Številke IP, ki sem jih uporabil v zgledih, navedenih tu, so vzete iz blokov 'zasebnih omrežij', kar pomeni, da se jih v internetu ne sme uporabljati za prave naslove. So pa zato varne za uporabo v zgledih. Drugo, na kar vas moram opozoriti, je vrstica notify no;, ki pove named, naj svojih sekundarnih strežnikov ne opozarja na spremembe območnih datotek. V BIND-8 lahko named opozori druge strežnike, navedene v zapisih NS, kadar se katera od teh spremeni. To je sicer pripravno pri resnični uporabi, za zasebne poskuse pa mora biti izključeno - saj vendar nočemo, da bi naši poskusi onesnažili internet, kajne da ne?

In seveda, ta domena je popolnoma izmišljena, kot so izmišljeni tudi naslovi v njej. Zgled prave domene si oglejte v naslednjem poglavju.

5.5 Zakaj obratne poizvedbe ne delujejo.

Pri postavljanju obratnih vnosov preži na nas nekaj ``pasti'', ki jih navadno rešimo z imenskimi poizvedbami. Preden greste naprej, potrebujete delujoče obratne vnose - če vam ne delujejo, se vrnite in jih popravite.

Razložil bom dve možnosti, zakaj obratni vnosi ne delujejo, kot so videti zunaj vašega omrežja.

Obratni vnosi niso pristojni

Ko dobite od ponudnika internetnih storitev svoj del omrežja in domeno, je domena navadno pristojna za ta del omrežja. Pristojnost je zapis NS, lepilo, ki vam omogoča, da pridete od enega imenskega strežnika do drugega, kot sem pojasnil v poglavju o teoriji. Saj ste ga prebrali? Če vaši obratni vnosi ne delujejo, se vrnite in si preberite poglavje. Takoj zdaj.

Tudi obratni vnosi morajo biti pristojni za določen del omrežja. Če ste dobili omrežje 192.168.192 z domeno linux.izmislek, mora ponudnik v svoje območne datoteke zapisati tako vnos NS za imenske poizvedbe kakor tudi vnos NS za obratne poizvedbe. Če sledite verigi od in-addr.arpa. do vas, boste verjetno našli prekinitev - najverjetneje pri svojem ponudniku. V tem primeru stopite v stik z njim in ga prosite, naj odpravi napako.

Imate brezrazredno podomrežje

To je dokaj zapletena tema, vendar so brezrazredna podomrežja dandanes zelo pogosta in če niste vsaj srednje veliko podjetje, ste najverjetneje tudi vi v takem podomrežju.

Brezrazredna podomrežja danes ohranjajo internet pri življenju. Nekaj let nazaj se je veliko razpravljalo o pomanjkanju številk IP. Bistre glave v IETF (Internet Engineering Task Force, organizacija, ki skrbi za internet) so se staknile in iznašle rešitev. Za določeno ceno. Ta cena je, da dobite manj kakor podomrežje ``C'', poleg tega pa se lahko zgodi, da nekatere stvari ne bodo delovale. Oglejte si Ask Mr. DNS at, če si želite dobre razlage tega in napotkov, kako se s tem spopasti.

Ste prebrali? Tega ne bom razlagal, zato si, prosim, preberite.

Prvi del problema je, da mora vaš ponudnik interneta razumeti tehniko, ki jo opisuje g. DNS. Nekateri majhni ponudniki je ne razumejo popolnoma, zato jim jo boste morda morali razložiti. Prej se prepričajte, ali jo sploh sami obvladate ;-) Ponudnik bo nato postavil obratne vnose v njihovem strežniku. To lahko preverite z dig.

Drugi in zadnji del problema pa je, da morate tudi vi razumeti tehniko. Če o tem niste prepričani, se vrnite in si znova preberite, nato pa lahko postavite svoje brezrazredne obratne vnose, kot vam opisuje g. DNS.

Je pa še ena težava. Stari programi ne bodo sposobni slediti zvijači CNAME v verigi poizvedovanja in zato ne bodo sposobni opraviti obratnih poizvedb za vaš računalnik. To lahko pomeni, da vas bo strežnik razvrstil v napačen razred, vam prepovedal dostop ali storil kaj podobnega. Če res potrebujete njegove storitve, je edina možnost (ki jo jaz poznam), da poprosite svojega ponudnika, naj vstavi vaš zapis PTR v njihovo brezrazredno območno datoteko namesto v zvijačo z vnosom CNAME.

Nekateri ponudniki interneta vam bodo ponudili tudi drugačne rešitve, kot so spletni forumi za obratne vnose in podobni avtomagični sistemi.

5.6 Sekundarni (ang. slave) strežniki

Po tem, ko ste pravilno vzpostavili svoje območje v primarnem strežniku, morate vzpostaviti vsaj še en sekundarni strežnik. Ti so potrebni zaradi zanesljivosti. Če vaš strežnik pade, bodo uporabniki še vedno dobili potrebne podatke za vašo domeno s pomočjo sekundarnega strežnika. Sekundarni strežnik naj bo čim dlje od vas in imejta čim manj skupnega z naslednjim: električno napajanje, povezava LAN, ponudnik internetnih storitev, mesto in dežela. Če so vsi našteti atributi za primarni in sekundarni strežnik različni, imate zelo dober sekundarni strežnik.

Sekundarni strežnik je imenski strežnik, ki prekopira vse območne datoteke iz primarnega strežnika. Nastavite ga takole:


zone "linux.izmislek" {
        type slave;
        file "sz/linux.izmislek";

        masters { 192.168.196.2; };
};

Uporabi se mehanizem, imenovan prenos območja (ang. zone-transfer). Tega nadzira vaš SOA.


@       IN      SOA     ns.linux.izmislek. hostmaster.linux.izmislek. (
                        199802151       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds

Območje se prenese le, če je serijska številka na primarnem strežniku večja od tiste na sekundarnem. Na vsak osveževalni interval (ang. refresh) sekundarni preveri, ali ima primarni novejši zapis. Če zaradi nedosegljivosti ni mogoče preveriti zapisa, bo poskusil vsak interval, kot je določeno v polju vnovični poskus (ang. retry). Če bo primarni nedosegljiv ves čas do izteka razveljavitnega (ang. expire) intervala, sekundarni odstrani to območje iz datotečnega sistema in ne bo več posredoval njegovih podatkov.


Naprej Nazaj Kazalo