Naprej Nazaj Kazalo

5. Preprosta domena.

Kako postaviti svojo lastno domeno.

5.1 Najprej nekaj teorije

Najprej: Saj ste prebrali vse pred tem, kajne ? To je potrebno.

Preden resnično začnemo to poglavje, vam bom serviral nekaj teorije in primerov o tem, kako DNS deluje. In vi boste to prebrali, ker je dobro za vas. Če nočete prebrati, bi bilo dobro, da vsaj na hitro preletite. Nehajte preletavati, 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 tipično za drevesne podatkovne strukture. Pod . je veliko število vrhnjih domen (ang.: TLD, Top Level Domain), od katerih so najbolj poznane ORG, COM, EDU in NET, seveda pa jih je še mnogo več. Struktura ja prav takšna kot drevo - ima korenino in je zavejena. Če imate vsaj nekaj računalniškega znanja, boste v DNS prepoznali iskalno drevo, lahko boste našli 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 predpomnilnik vsebuje odgovor bo odgovoril kot 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 se nahaja 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 z preusmeritivjo (ang. refferal) s katero bo nakazal kod naj se išče odgovor. Preko preusmeritev bo naš strežnik prišel do strežnika, ki bo imel pravi odgovor. To bom sedaj prikazal. +norec pomeni, da naj dig sprašuje nerekurzivno, tako da moramo sami delati rekurzijo. Z ostalimi 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 MIT.EDU strežnik. Ponovno naključno izberemo nek 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. Razdelek "AUTHORITY SECTION" vsebuje podatek katere strežnike naj naslednjič povprašamo o ai.mit.edu. Tako lahko neposredno njih vprašamo kadar bomo spraševali o imenih iz ai.mit.edu.

Začenši z . smo našli imenski strežnik za vsak nivo v imenu domene s pomčjo preusmeritev. Če bi uporabili lastni DNS strežnik namesto vseh drugih strežnikov bi se vsi tako zbrani podatki shranili v predpomnilnik in kar nekaj časa mu ne bi bilo potrebno ponoviti že opravljenih poizvedb.

V drevesni prispodobi je vsaka ``.'' v imenu vejišče. Vsak del med dvema ``.'' je ime posmazenih vej v drevesu. Po drevesu se gre tako, da se vzame želeno ime (prep.ai.mit.edu) in poizvedemo 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, pa je vseeno zelo pomembna je in-addr.arpa. Prav tako, kot `navadne' domene je vgnezdena, vendar nam omogoča ravno nasprotno - da izvemo imena računalnikov iz njihovih naslovov. Pomembna stvar, ki si jo morate zapomniti je, da so IP naslovi v domeni in-addr.arpa zapisani v obratnem vrstnem redu. Če je naslov računalnika 192.128.52.43, je postopek, ki ga ubere named prav takšen, kot 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. Pametno, kajne? (Recite `da'.) Prav dejstvo, da so številke obrnjene, lahko povzroči veliko zmešnjavo.

5.2 Naša lastna domena

Sedaj bomo definirali našo lastno domeno - linux.izmislek in v njej definirali računalnike. Uporabil sem popolnoma izmišljeno domeno; tako smo lahko gotovi, da ne bomo motili koga Tam Zunaj.

Še ena stvar, preden začnemo: imena računalnikov ne smejo vsebovati določenih znakov - omejeni smo na črke angleške abecede: a-z, številke: 0-9 in znak '-' (pomišljaj). Držite se jih. Velikosti črk DNS ne razlikuje, zato je pat.uio.no isto kot 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 sedaj 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, vsebuje pa:


$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.

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

Ta datoteka `zone' vsebuje tri zapise 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 navedeno 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 - takšen način prihrani veliko tipkanja. Zapis vira NS bi torej lahko zapisali tudi kot

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

DNS-u 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 (Domain Name Pointer) pravi, da je računalniku na naslovu 1 v podmreži 0.0.127.in-addr.arpa, torej 127.0.0.1, ime localhost.

Zapis SOA (Start Of Authority) je glava za vse datoteke `zone', ki morajo vsebovati natanko en zapis SOA. Ta zapis vsebuje podatke o domeni, od kod prihaja (računalnik z imenom ns.linux.izmislek), kdo je odgovoren za njeno vsebino (hostmaster@linux.izmislek - tukaj vstavite svoj e-mail naslov), katera različica datoteke `zone' je to (serijska številka: 1) in druge podatke, ki imajo opraviti z DNS strežniki s predpomnenjem ter sekundarnimi DNS strežniki. Za vsa ostala polja (osveževanje - refresh, ponoven poskus - retry, razveljavljenje - expire in minimum) se zanesite na številke, ki so navedene v tem HOWTO-ju in vse bi moralo ustrezno delovati. Pred zapisom SOA pride obvezna vrstica $TTL 3D. Vsi vaše `zone' datoteke naj jo vsebujejo.

Now restart your named (the command is ndc restart) and use dig to examine your handy work. -x asks for the inverse query:

Sedaj ponovno zaženite named (ukaz je ndc restart) in uporabite dig za ogled vašega dela. -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. Sedaj se lahko spravimo k našemu glavnemu opravilu, domeni linux.izmislek. Najprej vstavimo nov razdelek 'zone' v named.conf:


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

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

V datoteko `zone' linux.izmislek bomo napisali nekaj popolnoma izmišljenih podatkov:


;
; Zone file for linux.bogus
;
; The full zone file
;
$TTL 3D
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds
;
                NS      ns              ; Inet Address of name server
                MX      10 mail.linux.bogus     ; Primary Mail Exchanger
                MX      20 mail.friend.bogus.   ; Secondary Mail Exchanger
;
localhost       A       127.0.0.1
ns              A       192.168.196.2
mail            A       192.168.196.4

O zapisu SOA si morate zapomniti dve stvari. 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 je njegovo ime 'ns', lahko je kakršno koli veljavno ime. Druga stvar; hostmaster.linux.izmislek se bere kot hostmaster@linux.izmislek in mora biti obstoječ naslov ali preusmeritev naslova, na katerega bo oseba, ki vzdržuje DNS prejemala pošto (ta oseba naj pošto tudi redno pregleduje). Ni nujno, da je to ravno `hostmaster' - lahko je vaš navaden e-mail naslov, vendar se pogosto pričakuje, da obstaja 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), sicer pa naslednjemu z najmanjšo številko, v tem primeru mail.prijatelj.izmislek, ki ima prednost 20.

Ponovno zaženite named z ukazom ndc restart in opazujte rezultate z dig-om:

$ dig any linux.bogus +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.bogus, type = ANY, class = IN

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

Po pazljivem opazovanju boste odkrili napako. Vrstica

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

je popolnoma napačna. Morala bi biti

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

Namenoma sem naredil napako, da se boste lahko iz nje naučili :-) Če pogledate v datoteko `zone', boste ugotovili, da v vrstici:

                MX      10 mail.linux.bogus     ; Primary Mail Exchanger

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


                MX      10 mail.linux.bogus.    ; Primary Mail Exchanger

ali


                MX      10 mail                 ; Primary Mail Exchanger

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

Poudariti moram, da v named.conf ne sme biti pike na koncu domen. Še sanja se vam ne, kolikokrat je `.' preveč ali premalo zamešala stvari in popolnoma zmedla ljudi.

Zdaj, ko sem vam vse to povedal, je tu nova, popravljena datoteka `zone' s še nekaj dodatnimi informacijami:


;
; Zone file for linux.bogus
;
; The full zone file
;
$TTL 3D
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        4W              ; expire, seconds
                        1D )            ; minimum, seconds
;
                TXT     "Linux.Bogus, your DNS consultants"
                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

gw              A       192.168.196.1
                HINFO   "Cisco" "IOS"
                TXT     "The router"

ns              A       192.168.196.2
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "Pentium" "Linux 2.0"
www             CNAME   ns

donald          A       192.168.196.3
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "i486"  "Linux 2.0"
                TXT     "DEK"

mail            A       192.168.196.4
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "386sx" "Linux 1.2"

ftp             A       192.168.196.5
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "P6" "Linux 2.1.86"

Tukaj smo spoznali še cel kup novih zapisov: HINFO, informacija o računalniku (ang.: Host INFOrmation), ima dva dela in dobra navada je, 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. Na primer, ni priporočljivo, da imate


foobar          CNAME   www                     ; NE!

medtem, ko je takole pravilno


foobar          CNAME   ns                      ; Da!

Prav tako se je varno zanašati na to, da CNAME ni dovoljeno ime računalnika za e-mail naslov: webmaster@www.linux.izmislek na primer ni dovoljen naslov glede na zgoraj navedene nastavitve. Pričakujete lahko, da bo kar nekaj administratorjev Tam Zunaj hotelo, da to pravilo upoštevate, čeprav za vas morda deluje. Način, da preprečite težave je uporaba zapisov A (in še nekaterih drugih, na primer MX):


www             A       192.168.196.2

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

Kot ste lahko že opazili, se ta HOWTO in mnogo strežnikov ne drži tega pravila.

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

$ dig linux.bogus axfr

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

                        3D IN NS        ns
                        3D IN NS        ns.friend.bogus.
                        3D IN MX        10 mail
                        3D IN MX        20 mail.friend.bogus.
                        3D IN TXT       "Linux.Bogus, your DNS consultants"
gw                      3D IN TXT       "The router"
                        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.friend.bogus.
                        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.friend.bogus.
                        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.friend.bogus.
                        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.friend.bogus.
                        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. Kot lahko vidite, je izpis zelo podoben sami datoteki `zone'. Poglejmo, kaj pravi samo za www:

$ dig www.linux.bogus +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.bogus, type = A, class = IN

;; ANSWER SECTION:
www.linux.bogus.        3D IN CNAME     ns.linux.bogus.
ns.linux.bogus.         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.

Sedaj smo na polovici poti.

5.3 Obratni vnosi (ang. Reverse zone)

Sedaj 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-u, da pretvarja naslove v imena. Imena so pomembna informacija za mnoge strežnike (FTP, IRC, WWW in druge), ki na podlagi tega odločajo, ali se bodo sploh pogovarjali z vami ali ne ter kakšno prednost vam bodo dali v primeru, da se bodo. Za popoln dostop do vseh storitev na internetu 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 takšna, kot pri 0.0.127.in-addr.arpa, pa tudi vsebina je podobna:


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

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

Ponovno zaženite named (ndc restart) in ponovno preglejte vaše 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.bogus.

Zaenkrat izgleda 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.bogus. hostmaster.linux.bogus. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

                        3D IN NS        ns.linux.bogus.
4                       3D IN PTR       mail.linux.bogus.
2                       3D IN PTR       ns.linux.bogus.
5                       3D IN PTR       ftp.linux.bogus.
3                       3D IN PTR       donald.linux.bogus.
1                       3D IN PTR       gw.linux.bogus.
@                       3D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        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 ne izgleda 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 dodal še nekaj stvari. IP številke, ki sem jih uporabil v primerih, navedenih tukaj, so vzete iz blokov 'zasebnih mrež', kar pomeni, da se jih v internetu ne sme uporabljati za prave naslove. So pa zato varne za uporabo v primerih. Druga stvar, na katero vas moram opozoriti je vrstica notify no;, ki pove named, naj svojih sekundarnih strežnikov ne opozarja na spremembe datotek `zone'. V BIND-8 lahko named opozori druge strežnike, navedene v zapisih NS, kadar se kakšna od teh spremeni. To je sicer pripravno pri resnični uporabi, za privatne poskuse pa mora biti izključeno --- saj vendar nočemo, da bi naši poskusi onesnažili internet, kajne?

In seveda, ta domena je popolnoma izmišljena, kot so izmišljeni tudi naslovi v njej. Za primer prave domene glejte naslednje poglavje.

5.5 Zakaj obratne poizvedbe ne delujejo.

Obstaja nekaj ``pasti'' pri postavljanju obratnih vnosov, ki jih navadno rešimo z imenskimi poizvedbami. Preden greste naprej, potrebujete delujoče obratne vnose - če vam ne delujejo, pojdite nazaj in jih popravite.

Razložil bom dve možnosti, zaradi katerih obratni vnosi ne delujejo, kot so videti iz izven 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 priti 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, pojdite nazaj in ga preberite. 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 datoteke `zone' zapisati tako vnos NS za imenske poizvedbe, kot tudi vnos NS za obratne poizvedbe. Če sledite verigi od in-addr.arpa. do vas, boste verjetno našli prekinitev - najverjetneje pri vašem ponudniku. V tem primeru ga kontaktirajte in ga prosite za odpravo napake.

Imate brezrazredno podmrežo

To je dokaj zapletena tema, vendar so brezrazredne podmreže dandanes zelo pogoste in če niste vsaj srednje veliko podjetje, ste v njej najverjetneje tudi vi.

Brezrazredne podmreže danes ohranjajo internet pri življenju. Nekaj let nazaj je bilo veliko razprav o pomanjkanju IP številk. Pametni ljudje v IETF (Internet Engineering Task Force, organizacija, ki skrbi za internet) so staknili glave in iznašli rešitev. Za določeno ceno. Ta cena je, da dobite manj kot ``C'' podmrežo, poleg tega pa se lahko zgodi, da nekaj stvari ne bo delalo. Oglejte si Ask Mr. DNS at za dobro razlago o tem in 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 Mr. DNS. Nekateri majhni ponudniki je ne razumejo popolnoma, zato jim jo boste morda morali razložiti. Prej se prepričajte, da jo sami obvladate ;-) Ponudnik bo nato postavil obratne vnose na njihovem strežniku, kar lahko preverite z dig.

Drugi in zadnji del problema pa je, da morate tudi vi razumeti tehniko. Če o tem niste prepričani, pojdite nazaj in preberite še enkrat, nato pa lahko postavite vaše lastne brezrazredne obratne vnose, kot vam to opisuje Mr. DNS.

Obstaja pa še ena težava. Stari programi ne bodo sposobni slediti triku CNAME v verigi poizvedovanja in zato ne bodo sposobni naresti obratnih poizvedb za vaš računalnik. To lahko pomeni, da vas bo strežnik razvrstil v napačen razred, vam prepovedal dostop oziroma storil kaj podobnega. Če njegove usluge resnično potrebujete, je edina možnost (ki jo jaz poznam), da poprosite vašega ponudnika, naj vstavi vaš PTR zapis v njihovo brezrazredno datoteko `zone', namesto v trik s CNAME vnosom.

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

Zatem, ko ste pravilno vzpostavili svojo zono na primarnem strežniku morate vzpostaviti vsaj še en sekundarni strežnik. Ti so potrebni zaradi zanesljivosti. Če vaš strežnik pade bodo tako lahko uporabniki še vedno prišli do potrebnih podatkov za vašo domeno s pomočjo sekundarnega strežnika. Sekundarni strežnik naj bo čim dlje od vas in naj imata čim manj skupnega od sledečega: električno napajanje, LAN povezava, ponudnika internet storitev, mesto in deželo. Če so našteti atributi vsi različni za primarni in sekundarni strežnik imate zelo dober sekundarni strežnik.

Sekundarni strežnik je imenski strežnik, ki prekopira vse zone datoteke iz primarnega strežnika. Nastavite ga na sledeči način:


zone "linux.bogus" {
        type slave;
        file "sz/linux.bogus";
        masters { 192.168.196.2; };
};

Uporabi se mehanizem imenovan prenos zone (ang. zone-transfer). Tega nadzira vas SOA.


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

Zona 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 ponovni poskus (ang. retry). Če bo primarni nedosegljiv ves čas do izeeka razveljavitnega (ang. expire) intervala sekundarni odstrani to zono iz datotečnega sistema in ne bo več posredoval njenih podatkov .


Naprej Nazaj Kazalo