teejuht
1. Sissejuhatus
2. IP aadress, hostname ja nslookup
3. Kuidas DNS üles panna - lihtne näide
DNS on mõiste mida kasutatakse kõneldes arvutite IP aadresside ja nimede vahelisest seosest. Ilma põhjalikumalt peatumata teemal anname lühida praktilise seisukoha :)
Siiski, olgu teada, et igal võrgukaardil on tavaliselt üks
IP (Internet Protocol) aadress (kujul xxx.xxx.xxx.xxx nt. 193.40.0.12).
Tõsi, võimalik on ka omistada ühele füüsilisele
kaardile mitu IP aadressi; seda tehnikat nimetetakse IP aliasinguks.
Ühel arvutil on tavaliselt üks võrgukaart, seega ka üks IP aadress. Aga serverites (sh. arvutites mida kasutatakse kahe või enama alamvõrgu ühendamiseks) on tihtipeale mitu võrgukaarti. Igal üks IP aadress.
Normaalne on olukord kus üks kaart peab ühendust välismaailmaga ja teine ja kolmas tegelevad kumbki oma alamvõrguga. Niisiis, serveri IP aadress (isegi nimi) oleneb millisest alamvõrgust serveri poole vaadata.
Olgu kohe öeldud, et laias laastus jagunevad IP aadresseid kahte klassi:
reserveeritud kohalikuks kasutamiseks 192.168.xxx.xxx ja
reaalsed, need on kõik ülejäänud. (nt. 193.40.0.12)
Internet koosneb seega suurest hulgast väikestest ( 10 - 100 arvutit) masinatest millest mõned on nö. päris IP aadressiga. Kõik ülejäänud on nn. 192.168.xxx.xxx alamvõrgu masinad. Nood masinad ei saa põhimõtteliselt olla serveriteks (globaalses tähenduses). Nad Interneti kliendid, küll aga nad saavad olla kohalikud print - serverid vms.
Siinkohal võiks ja ilmselt ka peaks rääkima põhjalikult võrgu topoloogiast ja IP aadresside jaotamisest A, B, C klassidesse. Kindlasti netmaskidest ja broadcastist. Seda ma praegu ei suuda teha nii, et ma tulemusega ise rahul oleksin :(
Seega, tuleb mis tuleb!
Kaadri (teatud möönudustega ka arvuti) IP aadress ja hostname - nslookup
Igal Internetis suhtlev arvutil on seega identifitseeritud ühe või mitme IP aadressiga.
võite järgi proovida: sisestage nt. Netscape Locationi reale 194.126.101.67
Kes pole viimased aastad elanud Mongoolias ja ennast täiesti Eestist ja eesti keelest lahti rebinud tunned ära nö. www.neti.ee!
Veel võite proovida nt. 193.40.76.18 ja peaks jõudma EÜP (veel tasustama reklaam :) koduleheni. (www.eyp.ee)
Ja paljuski on DNS (ja seda realiseeriv programm bind (mida käivitatakse
tavaliselt 'ndc start') oma andmebaasiga) vaid selleks, et seada arvudele
vastavusse nimed. Sest inimene mäletab tähenduslikke sõnu
paremini kui arve.
Teisendusi arvudest nimedeks näeb käsuga 'nslookup' nii:
kopka:~$ nslookup 194.126.101.67
Server: kopka.tkg.tartu.ee
Address: 193.40.51.51
Aliases: 51.51.40.193.in-addr.arpa
Name: neti.neti.ee
Address: 194.126.101.67
kopka:~$
Siit on näha, kes on seatud teie nimeserveriks ehk kus arvutis töötab DNS'i teostav programm bind:
Server: kopka.tkg.tartu.ee
Address: 193.40.51.51
Aliases: 51.51.40.193.in-addr.arpa
vastus on mitte-autoratiivne, st. et kopka.tkg.tartu.ee bind'i andmebaasis ei sisaldu otseselt www.ee kohta andmeid. Küll aga on keegi varem kas otseselt (nslookup'iga) või kaudselt (nt. web'is kolades) küsinud kopka käest selle masina kohta.
ja muidugi vastus küsimusele:
Name: neti.neti.ee
Address: 194.126.101.67
Kusjuures tema nimeks on neti.neti.ee! (vt. all pool)
nslookup'i võib kasutada ka vastupidi:
kopka:~# nslookup www.eyp.ee
Server: kopka.tkg.tartu.ee
Address: 193.40.51.51
Aliases: 51.51.40.193.in-addr.arpa
Non-authoritative answer:
Name: wilhelm.eyp.ee
Address: 193.40.76.18
Aliases: www.eyp.ee
kopka:~# nslookup www.neti.ee
Server: kopka.tkg.tartu.ee
Address: 193.40.51.51
Aliases: 51.51.40.193.in-addr.arpa
Non-authoritative answer:
Name: neti.neti.ee
Address: 194.126.101.67
Aliases: www.neti.ee
kopka:~#
Ja siit näeme kohe ära huvitava asja, DNS'i süsteem võimaldab siduda ühe võrgukaardiga ehk talle vastava IP aadressiga mitu nime mis on sama head! Niisiis, kas www.neti.ee või neti.neti.ee (ju seal ikka mingi minor vahe ikka on kah, aga mina ei tea).
ja te võite nslookup'i kasutada ka interaktiivselt andes käsu 'nslookup' ilma argumentideta. Abiks on siin anda käsk help või exit. Loomulikult võite küsida nüüd erinevate masinate kohta.
Kindlasti on oluline märkida võimalus vahetada nimeserverit keda te otsingus kasutate. Nt.
> set querytype=ANY
> www.neti.ee myristaja.eenet.ee
Server: myristaja.eenet.ee
Address: 193.40.0.12
Non-authoritative answer:
www.neti.ee
canonical name = neti.neti.ee
Authoritative answers can be
found from:
neti.ee nameserver = dns.estpak.ee
neti.ee nameserver = dns2.estpak.ee
dns.estpak.ee internet
address = 194.126.115.18
dns2.estpak.ee internet
address = 194.126.101.34
>
siin otsitakse www.neti.ee kohta andmeid ja kasutatakse nimeserverina myristaja.eenet.ee'd.
Näeme, et vastus on mitteautoratiivne; samas saame teada, et kasutades
dns.estpak.ee'd nimeserverina saaks autoratiivse vastuse.
(St. masinas dsn.estpak.ee on füüsiliselt olemas fail mis
defineerib www.neti.ee ja temale vastava IP numbri; kõik muud masinad
(nimeserverid) võivad lihtsalt mäletada seda seost).
Teeme uue otsingu lootes, et tulemus on autoratiivne:
> www.neti.ee dns.estpak.ee
Server: dns.estpak.ee
Address: 194.126.115.18
www.neti.ee
canonical name = neti.neti.ee
neti.ee nameserver = dns.estpak.ee
neti.ee nameserver = dns2.estpak.ee
dns.estpak.ee internet
address = 194.126.115.18
dns2.estpak.ee internet
address = 194.126.101.34
>
Ja voila, ongi käes.
Self-explanatory on järgmised read:
> help
$Id: nslookup.help,v 8.4 1996/10/25
18:09:41 vixie Exp $
Commands:
(identifiers are shown in uppercase, [] means optional)
NAME
- print info about the host/domain NAME using default server
NAME1 NAME2
- as above, but use NAME2 as server
help or ?
- print info on common commands; see nslookup(1) for details
set OPTION
- set an option
all
- print options, current server and host
[no]debug
- print debugging information
[no]d2
- print exhaustive debugging information
[no]defname
- append domain name to each query
[no]recurse
- ask for recursive answer to query
[no]vc
- always use a virtual circuit
domain=NAME
- set default domain name to NAME
srchlist=N1[/N2/.../N6]
- set domain to N1 and search list to N1,N2, etc.
root=NAME
- set root server to NAME
retry=X
- set number of retries to X
timeout=X
- set initial time-out interval to X seconds
querytype=X
- set query type, e.g., A,ANY,CNAME,HINFO,MX,PX,NS,PTR,SOA,TXT,WKS,SRV,NAPTR
port=X
- set port number to send query on
type=X
- synonym for querytype
class=X
- set query class to one of IN (Internet), CHAOS, HESIOD or ANY
server NAME
- set default server to NAME, using current default server
lserver NAME
- set default server to NAME, using initial server
finger [USER] -
finger the optional USER at the current default host
root
- set current default server to the root
ls [opt] DOMAIN [> FILE] -
list addresses in DOMAIN (optional: output to FILE)
-a
- list canonical names and aliases
-h
- list HINFO (CPU type and operating system)
-s
- list well-known services
-d
- list all records
-t TYPE
- list records of the given type (e.g., A,CNAME,MX, etc.)
view FILE
- sort an 'ls' output file and view it with more
exit
- exit the program, ^D also exits
>
Viimane näide selle kohta kuidas välja uurida mis on mõne
masina jaoks mailiga tegijaks masinaks (st. kus on sendmail).
Muide sendmail'i töö sõltub väga DNS'i õigest
konfist. Eriti neil puhkudel kui teile saadetakse kirju aga samal ajal
on teie masin maas. Siis peaks olema teil mõni sõber-masin
kes need vastu võtab.
kopka:~# nslookup
Default Server: kopka.tkg.tartu.ee
Address: 193.40.51.51
Aliases: 51.51.40.193.in-addr.arpa
> set q=MX
> www.ee ns.estnet.ee
Server: ns.estnet.ee
Address: 193.40.248.20
www.ee preference =
30, mail exchanger = mail.eunet.ee
www.ee preference
= 10, mail exchanger = www.ee
www.ee preference
= 20, mail exchanger = port.teleport.ee
www.ee nameserver = port.teleport.ee
www.ee nameserver = ns.estnet.ee
www.ee nameserver = server.mm.uninet.ee
www.ee nameserver = ns.eunet.ee
www.ee nameserver = ns.data.ee
mail.eunet.ee internet
address = 195.222.0.4
www.ee internet address
= 194.204.30.70
port.teleport.ee
internet address = 193.40.208.193
ns.estnet.ee
internet address = 193.40.248.20
server.mm.uninet.ee
internet address = 194.204.30.70
ns.eunet.ee
internet address = 195.222.0.1
ns.data.ee
internet address = 195.222.4.1
>
Siin pange tähele, et vastus on autoratiivne kuna kasutati tema oma nimeserverit (see tehti varem kindlaks) ja querytype võib lihtsalt kirja panna kui 'q'.
See oli siiani asja väline pool.
Märgime veel asjasse puutuva huvitava käsu: traceroute: see võtab argumendiks mingi hostaname'i ja näita milliseid hoste IP datagrammid teel sinna läbivad.
nüüd sisemine pool:
Alustame sellest, et lihtsalt mängime ühe arvuti peal name serverit. Vaatame, et saame asja nii kaugele, et nslookup saaks näitama nimele vastavat IP numbrit ja numbrile vastavat nime. Nagu eespool kõneldi on see üks keskne DNS'i funktsioon.
Allpool eeldame, et masina nimeks millel see nimeserver asub on juta.ee, minul on seal sees ka võrgukaart nii igaks juhuks aga see pole vist tähtis. igatahes peab käsk hostname andma mõistlikke vastuseid. Vt. arvutid võrgus sektsiooni kuidas network ja võrgukaardid paika panna.
ja kuna teie enda masinast saab nimeserver siis tuleb see ka ära näidata /etc/resolv.conf failis:
domain ee
nameserver 192.168.1.199
domain ee tähendab, et kui te nt. annate oma masinal käsu
lynx juta, siis esmalt palub lynx resolverit juta IP kindlaks teha, kui
see ebaõnnestub, siis liidetakse talle otsa 'ee' ja püütakse
kindlaks teha 'juta.ee' aadress. See peaks juba õnnestuma.
Kõigepealt on vaja teil hankida (http://www.isc.net/bind.html/) programm bind 8.1.2 ning dokumentatsioon ja programm ära kompilleerida ning installeerida -
(Slackware peal kompilleerimisel on väike parandus:
enne käitumist vastavalt juhenditele README ja INSTALL failides peaks muutrma faili
/src/port/linux/Makefile.set rea
CDEBUG= -O -g reaks
CDEBUG= -g
Siis installeerige ära nagu kasaasolev juhend õpetab ja
seejärel tuleb luua andmebaasid:
/etc/named .conf :
options {
directory "/var/named";
check-names master warn;
};
zone "0.0.127.in-addr.arpa"
{
type master;
file "pz/127.0.0";
};
zone "ee" {
type master;
file "pz/ee.zone";
};
zone "192.in-addr.arpa" {
type master;
file "pz/192.zone";
};
Siin võiks teha järgmised tähelepanekud:
options -> directory näitab, kus kataloogis on tegelikud andmebaasid:
zone "0.0.127.in-addr.arpa" on alati vajalik
zone "ee" on koht kus on kirjas vastavused nimedest IP numbriteks
zone "192.in-addr.arpa" on koht kus on kirjas vastavused IP numbritelt nimedeks
type master tähendab, et kõik siin näidatud päringud võetakse kohalikust andmebaasi failidest ja neid pole vaja netis otsimas käia.
Esialgu ma ei kirjeldaks seda kuidas Internet koosneb domainidest ja
et eriline domain on nn. in-addr.arpa
Vaatame asja tööle saada!
Niisiis loome nn. tsooni ee faili '/var/named/pz/ee.zone'
@
IN SOA juta.ee. root.juta.ee.
(
4 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
4) ; Minimum TTL
NS juta.ee.
juta
A 192.168.1.199
ut
A 192.168.1.1
localhost.
A 127.0.0.1
Taas väike selgitus:
- @ märk on nagu muutuja mille väärtuseks on tsooni nimi kust on viide selle faili juurde; seega praegu 'ee'.
Õige oleks esimese rea asemel kirjutada ka rida:
ee. IN SOA juta.ee. root.juta.ee. (
- IN tähendab sõna Internet ja selle
koha peal tavaliselt muud ei ole.
- SOA tähendab Start of Authority millele
järgnevad parameetrid. Kui nad ühele reale ei mahu kirjutatakse
nad üksteise alla kusjuures sulg pannakse ette ja taha. kõi
mis jääb ; märgist paremale on kommentaar
- ut.ee. on selle tsooni autoriteeriv nimeserver
(st. tema teab kõige paremini vastuseid)
- root.ut.ee. tuleb lugeda kui [email protected].
ja on selle serveriga tegeleja e-mail.
Kusjuures siin on oluline . (punkt) lõpus
kui see on. Ta näitab, et nimi on absoluutne.
Rida
NS juta.ee.
tähendab, et juta.ee on tsooni 'ee' nimeserver see on mõnes mõttes nagu kordamine aga nii see on.
Muide, selle rea võik kirjutada välja ka nii:
ee. NS juta.ee.
Seda võiks mõista kui kokkulepet, et kui järgneva rea esimene element on puudu, siis sellena tuleb kasitleda eelneva rea esimest elementi.
juta A 192.168.1.199
ja ülejäänud read seavad vastavusse
IP numbri ja nime; antud juhul juta.ee. ja 192.168.1.199
Jah, kui A kirje esimene elemest ei lõppe
punktiga, siis liidetakse talle lõppu tsooni nimi (antud juhul 'ee').
Võiks kirjutada ka nii:
juta.ee.
A
192.168.1.199
Kuigi tagurpidi teisendus on tegemata, siiski peaks asi tööle minema.
Nameserveri käsud:
ndc start - käivitamine
ndc restart - taaskäivitamine
ndc stop - seiskamine
ndc reload - kui muutsite vaid nn. tsoonifailide
definitsioone /var/named/pz'i siis piisab sellest, vähem aega.
Tehke ainul ära ka /var/named/pz/127.0.0
fail:
@
IN SOA juta.ee. root.juta.ee.
(
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS juta.ee.
1
PTR localhost.
Siit saab arvuti teada, et 127.0.0.1 'le vastab localhost.
Proovige nslookup'i või dnsquery'ga vaadata! Muide nslookup'l on tore kask:
>ls domaini.nimi
olemas.
Kui ei ole nõus näitama, siis võite asendada /etc/resolv.conf'is nameserveri real IP aadressi 127.0.0.1'ga.
(väga abiks on vaadata mis syslogi läheb:
igasugused veateated ja muu.
mina tegin syslogi tty12 peale. Kuidas vaadake
lehelt syslogd.)
Usutavasti see õnnestus.
Nüüd vaatame ära teha ka tagurpidi teisendusele vastava faili:
/var/named/pz/192.zone:
@
IN SOA juta.ee. root.juta.ee.
(
5 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
5) ; Minimum TTL
NS juta.ee.
199.1.168
PTR juta.ee.
1.1.168
PTR ut.ee.
Siin pole localhosti rida sest tal on omaette
tsoonifail ja ega ta saakski 192.zone'is olla.
Süntaks on sama nagu nimedest IP'desse teisenduse
failil.
Ja taas veenduge, et saate nslookup'iga kätte mis tarvis.
Ütelme siia lõppu, et namererver on põhimõtteliselt selline asi mis üksinda väga ei tööta. Ta esindab neid programme mida iseloomustataks mõistega 'hajutatud andmebaas' St. , et põhimõtteliselt töötavad kõik Interneti DNS'i serverid koostöös. Kui ühe käest midagi päritakse ja too ei tea siis ta küsib ise kellegi kolmnda käest jne.
Olulist tähtusust DNS'i serverite omavaelisel suhtlemisel omavad esimese kirje väljad 5, 8H, 2H jne. Esialgu las nad olla nii nagu on, hiljem kommenteerime ka nende tähendust.
Teine asi on see, et nimeserveri andmebaasis saab näidata olulisi asju mida e-mailiga teha (Nn. MX kirjed)
Jutt jätkubki sellest kuidas panna tööle mitu nameserverit
nii, et nad teeksid koostööd. Samuti sellest kuidas e-mail'i
asju sättida ja mis tähendab 'domain - name structure'.