Päringud

Allikas: Kuutõrvaja
Redaktsioon seisuga 27. oktoober 2010, kell 09:57 kasutajalt Jj (arutelu | kaastöö)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)

Sissejuhatus

Enne kui asuda nimeserverit seadistama, on oluline teada asjassepuutuvaid mõisteid. Seejärel tuleks õppida tegema nimeserverile päringuid, sest nimeserver suudab automaatselt ainult avastada süntaksvigu. Selle eest, et sisuliselt oleks kõik nagu soovitud, peab ikkagi inimene hoolitsema.

Kui nimeserverile vastav tarkvara paigaldada, siis tavaliselt kuulub komplekti ka programm dig., mis on kõige sobivam vahend päringute tegemiseks. Ta võimaldab nii rekursiivseid päringuid (nagu brauser teeb nimeserverile) kui ka iteratiivseid päringuid (so toimima nagu üks nimeserver teise suhtes).

Pädevad ja mittepädevad vastused

Nimeserveritest päringuid tehes peab arvestama asjaoluga, et nad annavad pädevaid vastuseid ainult nende domeenide suhtes, millele vastavad tsoonid on neis endis defineeritud. Seega pädevaid vastuseid saab tsooni primaarsete ja sekundaarsete nimeserverite käest.

Kõik teised nimeserverid vastavad samuti, kuid põhimõtteliselt on võimalik, et nad annavad aegunud vastuseid. See on võimalik seetõttu, et kui keegi on lasknud neil domeeninime lahendada, siis nad mäletavad seda selle domeeninimega seotud eluea pikkuse aja. Kui kõnealuse domeeni primaarses nimeserveris on tehtud muudatus, aga teie päringu ajal kestab veel eluaeg, siis te saate sisuliselt aegunud vastuse.

Näiteks palume nimeserveril ns.neti.ee. lahendada nimi www.eenet.ee.

sh-2.05$ dig @ns.neti.ee. www.eenet.ee. A

; <<>> DiG 9.1.2 <<>> @ns.neti.ee. www.eenet.ee. A
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42566
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.eenet.ee.                  IN      A

;; ANSWER SECTION:
www.eenet.ee.           67966   IN      CNAME   vvv.eenet.ee.
vvv.eenet.ee.           67966   IN      A       193.40.0.4

;; AUTHORITY SECTION:
eenet.ee.               86400   IN      NS      ns.eenet.ee.
eenet.ee.               86400   IN      NS      ns2.eenet.ee.

;; ADDITIONAL SECTION:
ns.eenet.ee.            86400   IN      A       193.40.56.245
ns2.eenet.ee.           86400   IN      A       193.40.0.12

;; Query time: 89 msec
;; SERVER: 194.126.115.18#53(ns.neti.ee.)
;; WHEN: Tue Jul 31 23:32:37 2001
;; MSG SIZE  rcvd: 131

ning mõne sekundi või minuti pärast küsige uuesti

sh-2.05$ dig @ns.neti.ee. www.eenet.ee. A

; <<>> DiG 9.1.2 <<>> @ns.neti.ee. www.eenet.ee. A
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44173
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.eenet.ee.                  IN      A

;; ANSWER SECTION:
www.eenet.ee.           67901   IN      CNAME   vvv.eenet.ee.
vvv.eenet.ee.           67901   IN      A       193.40.0.4

;; AUTHORITY SECTION:
eenet.ee.               86400   IN      NS      ns.eenet.ee.
eenet.ee.               86400   IN      NS      ns2.eenet.ee.

;; ADDITIONAL SECTION:
ns.eenet.ee.            86400   IN      A       193.40.56.245
ns2.eenet.ee.           86400   IN      A       193.40.0.12

;; Query time: 59 msec
;; SERVER: 194.126.115.18#53(ns.neti.ee.)
;; WHEN: Tue Jul 31 23:33:42 2001
;; MSG SIZE  rcvd: 131

Esmalt näeme vastusest, et www.eenet.ee. on CNAME nimele vvv.eenet.ee. ning viimasele vastab IP-aadress 193.40.0.4. CNAME on alias ehk nagu hüüdnimi, mida tihti kasutatakse. vvv.eenet.ee. kohta öeldakse antud juhul kanooniline domeeninimi.

Edasi saame teada, et domeeninime www.eenet.ee. jaoks on pädevad nimeserverid ns.eenet.ee. ja ns2.eenet.ee., kusjuures kirjete eluaeg on 86 400 sekundit, sh www.eenet.ee. domeeninime oma.

Võrreldes vastuse sektsioonis ridu

vvv.eenet.ee.           67966   IN      A       193.40.0.4

ja

vvv.eenet.ee.           67901   IN      A       193.40.0.4

näeme, et meie esimese päringu hetkel oli kirjel jäänud eluaega 67 966 sekundiks. Ilmselt oli keegi seda mõni tund enne meid samuti küsinud. Teise päringu hetkeks oli järelejäänud eluaeg vähenenud 67 901 sekundini.

Kui me aga esitaksime sama päringut kuitahes palju kordi selle domeeninime jaoks pädevale nimeserverile, siis oleks eluaeg ikkagi 86 400 sekundit

sh-2.05$ dig @ns.eenet.ee. www.eenet.ee. A

; <<>> DiG 9.1.2 <<>> @ns.eenet.ee. www.eenet.ee. A
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62244
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.eenet.ee.                  IN      A

;; ANSWER SECTION:
www.eenet.ee.           86400   IN      CNAME   vvv.eenet.ee.
vvv.eenet.ee.           86400   IN      A       193.40.0.4

;; AUTHORITY SECTION:
eenet.ee.               86400   IN      NS      ns2.eenet.ee.
eenet.ee.               86400   IN      NS      ns.eenet.ee.

;; ADDITIONAL SECTION:
ns2.eenet.ee.           86400   IN      A       193.40.0.12
ns.eenet.ee.            86400   IN      A       193.40.56.245

;; Query time: 82 msec
;; SERVER: 193.40.56.245#53(ns.eenet.ee.)
;; WHEN: Tue Jul 31 23:40:54 2001
;; MSG SIZE  rcvd: 131

Päringu sooritamine

Koostame päringu, milles küsime nimeserverilt ns2.eenet.ee. kõiki domeeniga eenet.ee. seotud andmeid, kasutades võtit ANY

sh-2.05$ dig @ns.eenet.ee. eenet.ee. ANY

; <<>> DiG 9.1.2 <<>> @ns.eenet.ee. eenet.ee. ANY
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37738
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;eenet.ee.                      IN      ANY

;; ANSWER SECTION:
eenet.ee.               86400   IN      A       193.40.0.4
eenet.ee.               86400   IN      MX      0 myristaja.eenet.ee.
eenet.ee.               86400   IN      MX      50 vi.eenet.ee.
eenet.ee.               86400   IN      NS      ns2.eenet.ee.
eenet.ee.               86400   IN      NS      ns.eenet.ee.
eenet.ee.               86400   IN      SOA     ns2.eenet.ee.
hostmaster.eenet.ee. 2001050100 86400 7200 2419200 10800
;; AUTHORITY SECTION:
eenet.ee.               86400   IN      NS      ns2.eenet.ee.
eenet.ee.               86400   IN      NS      ns.eenet.ee. 

;; ADDITIONAL SECTION:
myristaja.eenet.ee.     86400   IN      A       193.40.0.12
vi.eenet.ee.            86400   IN      A       193.40.56.244
ns2.eenet.ee.           86400   IN      A       193.40.0.12
ns.eenet.ee.            86400   IN      A       193.40.56.245

;; Query time: 54 msec
;; SERVER: 193.40.56.245#53(ns.eenet.ee.)
;; WHEN: Tue Jul 31 23:42:56 2001
;; MSG SIZE  rcvd: 261

kus

   * @ns2.eenet.ee - küsida näidatud nimeserveri käest
   * eenet.ee - selle domeeninime kohta
   * ANY - näidata kõiki domeeninimega seotud andmeid 

Vastuses on sektsioonide kaupa kirjas nimeserverilt saadud andmed

   * päis (->>HEADER<<-) - opcode: QUERY, status: NOERROR, id: 38621 - oluline, et status oleks NOERROR
   * küsimuseosa (QUESTION SECTION) - kordab küsimust
   * vastuseosa (ANSWER SECTION) - standardsel kujul vastus, (domeeninimi, eluaeg, klass, tüüp, IP-aadress)
   * pädevusosa (AUTHORITY SECTION) - näidatakse millised on selle domeeni jaoks pädevad nimeserverid
   * lisa (ADDITIONAL SECTION) - pädevate nimeserverite IP-aadressid 

Vastuse sektsioon sisaldab järgmisi kirjeid

   * NS (NameServer) - domeeni jaoks pädevaid nimeservereid
   * A - domeeninimele vastav IP-aadress
   * MX (Mail eXchange) - domeeni teenindavad postiserverid
   * SOA (Start of Authority) - sisaldab järgmisi tsooni jaoks olulisi järjekorras andmeid:
         o ns2.eenet.ee. - domeeni primaarne nimeserver
         o hostmaster.eenet.ee. - domeeni eest vastutava kontaktisiku e-postiaadress
         o 2001050100 - seerianumber
         o 86400 - värskendusperiood
         o 7200 - korduskatse
         o 2419200 - parim möödas
         o 10800 - eluaeg 

Soovides küsida nimeserverilt midagi spetsiifilist, saab kasutada selliseid võtmeid

   * MX - postiserverid
   * NS - nimeserverid
   * A - IP-aadressid
   * SOA - SOA-kirje 

Neid võtmeid võib kirjutada samahästi ka väikeste tähtedega.

Päriteisendus

Päriteisendus tähendab domeeninimele vastava IP-aadressi leidmist. Näiteks küsime nimele www.eenet.ee. vastavat IP-aadressi kasutades võtit A

bash$ dig www.eenet.ee A

; <<>> DiG 9.1.2 <<>> www.eenet.ee
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7341
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.eenet.ee.                  IN      A

;; ANSWER SECTION:
www.eenet.ee.           86400   IN      CNAME   vvv.eenet.ee.
vvv.eenet.ee.           86400   IN      A       193.40.0.4 

;; AUTHORITY SECTION:
eenet.ee.               86400   IN      NS      ns2.eenet.ee.
eenet.ee.               86400   IN      NS      ns.eenet.ee. 

;; ADDITIONAL SECTION:
ns2.eenet.ee.           86400   IN      A       193.40.0.12
ns.eenet.ee.            86400   IN      A       193.40.56.245

;; Query time: 88 msec
;; SERVER: 193.40.0.12#53(193.40.0.12)
;; WHEN: Tue Jul 31 23:15:55 2001
;; MSG SIZE  rcvd: 131

Muuseas näeme, et www.eenet.ee. on CNAME domeeninimele vvv.eenet.ee., millele vastab IP-aadress 193.40.0.4.

Pöördteisendused

IP-aadressile 193.40.0.12 vastava domeeninime leidmine programmiga dig toimub näiteks selliselt, kirjutades ise aadressi enne vastava in-addr.arpa. domeeni domeeninime, antud juhul 12.0.40.193.in-addr.arpa. ning kasutades võtit PTR

sh-2.05$ dig 12.0.40.193.in-addr.arpa. PTR

; <<>> DiG 9.1.2 <<>> 12.0.40.193.in-addr.arpa. PTR
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43404
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;12.0.40.193.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
12.0.40.193.in-addr.arpa. 86400 IN      PTR     myristaja.eenet.ee.
12.0.40.193.in-addr.arpa. 86400 IN      PTR     ns2.eenet.ee.

;; AUTHORITY SECTION:
0.40.193.in-addr.arpa.  86400   IN      NS      ns2.eenet.ee.
0.40.193.in-addr.arpa.  86400   IN      NS      ns.eenet.ee.

;; ADDITIONAL SECTION:
ns2.eenet.ee.           86400   IN      A       193.40.0.12
ns.eenet.ee.            86400   IN      A       193.40.56.245

;; Query time: 96 msec
;; SERVER: 193.40.0.12#53(193.40.0.12)
;; WHEN: Tue Jul 31 23:54:28 2001
;; MSG SIZE  rcvd: 155

Vastuse osad on sarnased päriteisendusele. Antud juhul on selle IP-aadressiga seotud kaks domeeninime. Oluline on tähele panna, et sarnaselt tavalistele domeeninimedele kuuluvad ka in-addr.arpa. domeeninimed alamdomeenidesse, näiteks tsooni 0.40.193.in-addr.arpa. jaoks on pädevad ns.eenet.ee. ja ns2.eenet.ee. nimeserverid.

Teine võimalus sama päringut esitada on selline

bash$ dig -x 193.40.0.12 PTR

Tsooni kopeerimine

Tsooni saab kopeerida ainult pädevalt nimeserverilt. Seega eelnevalt tuleb jälgides vastuste pädevusosi teha kindlaks, milline nimeserver on huvipakkuva tsooni jaoks pädev.

bash$ dig @ns.eenet.ee. eenet.ee. axfr
; <<>> DiG 9.1.2 <<>> @ns.eenet.ee. eenet.ee. axfr
;; global options:  printcmd
eenet.ee.               86400   IN      SOA     ns2.eenet.ee. hostmaster.eenet.ee. 2001050100 86400 7200 2419200 10800
eenet.ee.               86400   IN      NS      ns2.eenet.ee.
eenet.ee.               86400   IN      NS      ns.eenet.ee.
eenet.ee.               86400   IN      A       193.40.0.4
eenet.ee.               86400   IN      MX      0 myristaja.eenet.ee.
eenet.ee.               86400   IN      MX      50 vi.eenet.ee.
zpp.eenet.ee.           86400   IN      A       193.40.56.196
potsataja.eenet.ee.     86400   IN      A       193.40.56.120
www2.eenet.ee.          86400   IN      CNAME   myristaja.eenet.ee.
x1100c.eenet.ee.        86400   IN      A       193.40.0.116
Mugiseja.eenet.ee.      86400   IN      A       193.40.0.19
tartu-mix.eenet.ee.     86400   IN      A       193.40.10.225
...
..

in-addr.arpa. tsooni kopeerimine toimub sarnaselt

bash$ dig @ns.eenet.ee. 0.40.193.in-addr.arpa. axfr

Tsooni kopeerimisel peab arvestama võimalusega, et paljud nimeserverid ei luba oma pädevuses olevaid tsoone kopeerida.

Rekursiivsed ja iteratiivsed päringud

Näitame kuidas kasutada programmi dig rekursiivsete ja iteratiivsete päringute tegemiseks.

Iteratiivne päring

Iteratiivseid päringuid teeb tavaliselt üks nimeserver teisele. Näiteks soovides teada saada, millised nimeservrid on nime frodo.axion.bt.co.uk. lahendamisel mängu haaratud, kasutage võtme +norec. +rorec juhendab nimeserverit vastama domeeninimesüsteemis järgmise sobiva nimeserveri nimega.

bash$ dig frodo.axion.bt.co.uk. +norec
;; AUTHORITY SECTION:
.                       2d20h44m9s IN NS  E.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  D.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  A.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  H.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  C.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  G.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  F.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  B.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  J.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  K.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  L.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  M.ROOT-SERVERS.NET.
.                       2d20h44m9s IN NS  I.ROOT-SERVERS.NET.

Näeme, et kliendi nimeserver ei teadnud isegi domeeni uk. nimeserverit ja soovitas minna seda küsima juurnimeserverite käest. Küsime

bash$ dig @E.ROOT-SERVERS.NET. frodo.axion.bt.co.uk. +norec
;; AUTHORITY SECTION:
uk.                     2D IN NS        NS1.NIC.uk.
uk.                     2D IN NS        NS.EU.NET.
uk.                     2D IN NS        NS0.JA.NET.
uk.                     2D IN NS        NS.UU.NET.

Jõudsime sammu lähemale, et küsime edasi NS.EU.NET. nimeserveri käest

bash$ dig @NS.EU.NET. frodo.axion.bt.co.uk. +norec
;; AUTHORITY SECTION:
axion.bt.co.uk.         19h35m11s IN NS  dns0.axion.bt.co.uk.
axion.bt.co.uk.         19h35m11s IN NS  dns1.axion.bt.co.uk.
axion.bt.co.uk.         19h35m11s IN NS  ns0.bt.net.

Nagu näha on NS.EU.NET. käest domeeni axion.bt.co.uk. kohta tihti küsitud ja tal on info vahelaos või on ta ise selle domeeni suhtes pädev. Edasi

bash$ dig @dns0.axion.bt.co.uk. frodo.axion.bt.co.uk. +norec
;; ANSWER SECTION:
frodo.axion.bt.co.uk.   23h9m10s IN A   132.146.88.2

;; AUTHORITY SECTION:
axion.bt.co.uk.         21h35m25s IN NS  dns0.axion.bt.co.uk.
axion.bt.co.uk.         21h35m25s IN NS  DNS1.axion.bt.co.uk.
axion.bt.co.uk.         21h35m25s IN NS  ns0.bt.net.

Lõpuks jõudsime välja pädeva nimeserverini ja saime teada vastuse. Paraku sama domeeninime jaoks käidud teed sammhaaval läbi mängida uuesti ei saa. Kliendi nimeserveri vahelaos on nüüd 21 tundi 35 minutit 25 sekundit vastus teada ja ta vastab teile kohe ise.

Rekursiivne päring

Rekursiivsed on enamus kliendi sooritatavaid päringuid. Jätke +norec kirjutamata ning teile vastatakse kohe domeeninimele vastavate andmetega, tõsi nö kulisside taga tehakse tõenäoliselt teie küsimuse rahuldamiseks endiselt iteratiivseid päringuid.