A DNS működése
A DNS, mint azt tudjuk, az a protokoll, ami az IP-címekhez neveket rendel, és fordítva. Ennél persze többről van szó.
Fontos fogalom: autoritatív szerver. Két megközelítés:
- Saját magát autoritatívnak gondolja, ha rendelkezik egy olyan adatbázissal, amelyben egy zóna (~domain) tartalma megtalálható.
- Mások autoritatívnak gondolják, ha a hierarchiában felette álló szerverek hozzá delegálnak egy domainre vonatkozó kérdéseket.
Tartalomjegyzék |
1 A DNS-feloldás menete
Legyen mondjuk az a kérdés, mi a www.bme.hu IP-címe. Hogy kezdjünk neki?
Mit jelent egyáltalán az, hogy a www.bme.hu IP-címe ez és ez?
Azt, hogy van valahol egy autoritatív szerver, amelyben a www.bme.hu névnek van egy A rekordja; a rekord tartalma az IP-cím.
A feloldás a következőképpen történik:
- Küldünk egy query-t (kérdést) az egyik root szervernek (amelynek a címét mindenki "tudja"), amelyben megkérdezzük, hogy A? www.bme.hu.
- Erre ő, ha tudná a választ, mondhatná, hogy "hohó, ídös fiam, a www.bme.hu A rekordja nem más, mint 152.66.115.35".
- De nem tudja, mert az ő feladata nem az, hogy minden gép címét tudja, hanem az, hogy tudja, kit kell megkérdezni.
- Ezzel együtt fontos tudnunk, hogy akár meg is mondhatná a választ; ez a DNS egyik gyenge pontja. Bővebben később.
- A root szerver azt mondja, hogy ő nem tudja, de kérdezzük meg valamelyik .hu szervert, amelyeknek a nevét meg is mondja.
- Emellett megmondja a nevekhez tartozó IP-ket is, ez a glue.
- Ha nem mondaná meg, esetleg bajban lennénk, mert a .hu szerverek neveit ugyan tudjuk, de a nekik küldendő DNS queryt az IP-címükre kell küldeni, amit valahonnan meg kell tudni...
- Megkérdezzük valamelyik .hu szervertől, mondjuk az ns.nic.hu-tól (193.239.148.62), hogy A? www.bme.hu.
- Erre ő, ha tudná a választ, mondhatná, hogy "hohó, ídös fiam, a www.bme.hu A rekordja nem más, mint 152.66.115.35".
- De nem tudja, mert az ő feladata nem az, hogy minden .hu alatti gép címét tudja, hanem az, hogy tudja, kit kell megkérdezni.
- Ezzel együtt fontos tudnunk, hogy akár meg is mondhatná a választ; ez a DNS egyik gyenge pontja. Bővebben később.
- Az ns.nic.hu azt mondja, hogy ő nem tudja, de kérdezzük meg valamelyik bme.hu szervert, amelyeknek a nevét meg is mondja.
- glue mint fent.
- Megkérdezzük valamelyik bme.hu szervertől, mondjuk a nic.bme.hu-tól (152.66.115.1), hogy A? www.bme.hu.
- A nic.bme.hu benyúl az adatbázisába, és azt mondja, hogy "hohó, ídös fiam, a www.bme.hu A rekordja nem más, mint 152.66.115.35, de ezt legfeljebb 4 óráig jegyezd meg!".
- Merthogy minden DNS-rekordnak van egy TTL értéke, ennyi ideig szabad cache-elni.
Lássuk ugyanezt a parancssorból.
Előszőr használjuk a hagyományos mosóport, a host(1) programot:
chardonnay:~% host -vvv -t a www.bme.hu 198.41.0.4 Trying "www.bme.hu" Using domain server: Name: 198.41.0.4 Address: 198.41.0.4#53 Aliases: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59973 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 6 ;; QUESTION SECTION: ;www.bme.hu. IN A ;; AUTHORITY SECTION: hu. 172800 IN NS NS.NIC.hu. hu. 172800 IN NS NS2.NIC.FR. hu. 172800 IN NS SUNIC.SUNET.SE. hu. 172800 IN NS NS1.NIC.hu. hu. 172800 IN NS NS2.NIC.hu. hu. 172800 IN NS NS3.NIC.hu. ;; ADDITIONAL SECTION: NS.NIC.hu. 172800 IN A 193.239.148.62 NS2.NIC.FR. 172800 IN A 192.93.0.4 SUNIC.SUNET.SE. 172800 IN A 192.36.125.2 NS1.NIC.hu. 172800 IN A 193.239.149.3 NS2.NIC.hu. 172800 IN A 193.6.16.1 NS3.NIC.hu. 172800 IN A 195.70.35.250 Received 251 bytes from 198.41.0.4#53 in 114 ms
Látható, hogy megtudtuk, merre kell tovább érdeklődnünk, de magát a választ nem. Nézzük tovább:
chardonnay:~% host -vvv -t a www.bme.hu 193.239.148.62 Trying "www.bme.hu" Using domain server: Name: 193.239.148.62 Address: 193.239.148.62#53 Aliases: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50701 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 3 ;; QUESTION SECTION: ;www.bme.hu. IN A ;; AUTHORITY SECTION: bme.hu. 86400 IN NS ns.bme.hu. bme.hu. 86400 IN NS nic.bme.hu. bme.hu. 86400 IN NS ns2.pantel.net. ;; ADDITIONAL SECTION: ns.bme.hu. 86400 IN AAAA 2001:738:2001:8001::2 nic.bme.hu. 86400 IN A 152.66.115.1 nic.bme.hu. 86400 IN AAAA 2001:738:2001:2001::2 Received 163 bytes from 193.239.148.62#53 in 2 ms
Közeledünk, közeledünk. Végül:
chardonnay:~# host -vvv -t a www.bme.hu 152.66.115.1 Trying "www.bme.hu" Using domain server: Name: 152.66.115.1 Address: 152.66.115.1#53 Aliases: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13192 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.bme.hu. IN A ;; ANSWER SECTION: www.bme.hu. 14400 IN A 152.66.115.35 ;; AUTHORITY SECTION: bme.hu. 14400 IN NS ns2.pantel.net. bme.hu. 14400 IN NS ns.bme.hu. bme.hu. 14400 IN NS nic.bme.hu. ;; ADDITIONAL SECTION: ns.bme.hu. 14400 IN A 152.66.116.1 ns.bme.hu. 14400 IN AAAA 2001:738:2001:8001::2 nic.bme.hu. 14400 IN A 152.66.115.1 nic.bme.hu. 14400 IN AAAA 2001:738:2001:2001::2 ns2.pantel.net. 35857 IN A 212.24.160.1 Received 211 bytes from 152.66.115.1#53 in 1 ms
Most próbáljuk meg ugyanezt egy kevésbé ismert eszközzel, a dnsq nevűvel (a djbdns csomagban van):
chardonnay:~% dnsq a www.bme.hu 198.41.0.4 1 www.bme.hu: 251 bytes, 1+0+6+6 records, response, noerror query: 1 www.bme.hu authority: hu 172800 NS ns.nic.hu authority: hu 172800 NS ns2.nic.fr authority: hu 172800 NS sunic.sunet.se authority: hu 172800 NS ns1.nic.hu authority: hu 172800 NS ns2.nic.hu authority: hu 172800 NS ns3.nic.hu additional: ns.nic.hu 172800 A 193.239.148.62 additional: ns2.nic.fr 172800 A 192.93.0.4 additional: sunic.sunet.se 172800 A 192.36.125.2 additional: ns1.nic.hu 172800 A 193.239.149.3 additional: ns2.nic.hu 172800 A 193.6.16.1 additional: ns3.nic.hu 172800 A 195.70.35.250 chardonnay:~% dnsq a www.bme.hu 193.239.148.62 1 www.bme.hu: 163 bytes, 1+0+3+3 records, response, noerror query: 1 www.bme.hu authority: bme.hu 86400 NS ns.bme.hu authority: bme.hu 86400 NS nic.bme.hu authority: bme.hu 86400 NS ns2.pantel.net additional: ns.bme.hu 86400 28 \040\001\0078\040\001\200\001\000\000\000\000\000\000\000\002 additional: nic.bme.hu 86400 A 152.66.115.1 additional: nic.bme.hu 86400 28 \040\001\0078\040\001\040\001\000\000\000\000\000\000\000\002 chardonnay:~% dnsq a www.bme.hu 152.66.115.1 1 www.bme.hu: 211 bytes, 1+1+3+5 records, response, authoritative, weird ra, noerror query: 1 www.bme.hu answer: www.bme.hu 14400 A 152.66.115.35 authority: bme.hu 14400 NS ns2.pantel.net authority: bme.hu 14400 NS ns.bme.hu authority: bme.hu 14400 NS nic.bme.hu additional: ns.bme.hu 14400 A 152.66.116.1 additional: ns.bme.hu 14400 28 \040\001\0078\040\001\200\001\000\000\000\000\000\000\000\002 additional: nic.bme.hu 14400 A 152.66.115.1 additional: nic.bme.hu 14400 28 \040\001\0078\040\001\040\001\000\000\000\000\000\000\000\002 additional: ns2.pantel.net 35704 A 212.24.160.1
Talán látszik, hogy ennek az outputja scriptből könnyebben feldolgozható.
2 A DNS rekordtípusai
- A: név->IP
- www.bme.hu. IN A 152.66.115.35
- PTR: IP->név
- 35.115.66.152.in-addr.arpa. IN PTR torpapa.eik.bme.hu.
- Azért így, hogy hierarchikusan lehessen delegálni,
- MX: melyik szerver fogadja a domainbe címzett leveleket
- bme.hu. IN MX 10 nic.bme.hu.
- NS: ki nameservere egy domainnek
- bme.hu. IN NS ns.bme.hu.
- SOA: a domain "tulajdonságai"
- bme.hu. IN SOA nic.bme.hu. hostmaster.bme.hu. 2006091400 43200 14400 2592000 86400
- elsődleges nameserver, hostmaster emailcíme, sorozatszám, refresh time, retry time, expire time, minimum time.
- refresh time: ilyen gyakran frissítik magukat a secondaryk (vagy NOTIFY hatására, vagy ...)
- retry time: ennyi időnként próbálkozik egy secondary, ha elsőre nem sikerült a frissítés
- expire time: ha ennyi ideig nem volt kapcsolat a primaryval, a secondary tekintse elavultnak az adatokat és tagadja meg a választ
- minimum time: korábban az alapértelmezett TTL, ma az NXDOMAIN (nincs ilyen cím) TTL-je
- TXT: megjegyzés
- Főleg RBL-ek használják: 3.0.0.127.dnsbl.njabl.org. IN TXT "dial-up or dynamic -- 1035916206", 164.22.147.63.sbl.spamhaus.org. IN TXT "http://www.spamhaus.org/SBL/sbl.lasso?query=SBL44889"
- CNAME: átirányítás; minden, erre a névre vonatkozó queryvel kapcsolatban l. a másik megadott nevet.
- www.math.bme.hu. IN CNAME proof.math.bme.hu.
- HINFO: hardware info
- Ma már nem használják.
- stb.
3 A DNS-szolgáltatások típusai
A DNS igazából több, jól elkülöníthető szolgáltatás összessége. Ezek:
- Autoritatív DNS.
- Az autoritatív DNS-szervernek van egy adatbázisa, és az abban található adatokra vonatkozó kérdésekre válaszol. Más (pl. rekurzív) kérdésekre nem.
- Rekurzív, cache-elő DNS.
- Az ilyen szerver a DNS-fa rekurzív bejárását végzi el a kliensek számára, és az eredményeket cache-eli a gyorsabb kiszolgálás érdekében.
- Zónatranszfer (AXFR).
- Ez a szerver az autoritatív szerver adatbázisának replikálását végzi.
- Resolver stub library.
- Olyan függvénykönyvtár, amelyben a DNS-sel kapcsolatos funkciók vannak megvalósítva, hogy ne kelljen minden programban egyenként implementálni. Elsősorban rekurziv szerverrel kell tudnia szót érteni.
Ezekből az első hármat a BIND és a rá hasonlítani akaró szoftverek a közelmúltig összemosták.
4 Gyakori gondok a DNS-sel
- Poisoning
- Mára már nem igazán gond
- Glue hiánya
- foo.net IN NS ns.bar.com; bar.com IN NS ns.foo.net -> egyik se elérhető -> használjunk olyan nameservert, ami benne van abban a domainben, amire autoritatív, így glue-val átadható a címe is, nemcsak a neve
- Akkor is gond, ha nem ér körbe: sok query kell a feloldáshoz
- CNAME-láncok
- Lustaságból elhelyezett joker-bejegyzések (pl. *.com)
5 Ajánlott irodalom
- Esettanulmány, tűzfallal, kis belső hálózattal
- Megjegyzések a DNS működésével kapcsolatban
6 Potenciális zh-kérdések
- Mi a TTL szerepe a DNS-ben?
- Egy rekordot meddig cache-eljen a rekurzív, cache-elő DNS.
- Mekkora legyen egy rekord TTL-je?
- Általános esetben néhány óra. Ha fontos kiszolgáló paraméterein kívánunk változtani, akkor érdemes akár 1 másodpercre is állítani, de megvárni míg az egész interneten már csak az 1 másodperces TTL lehet és akkor szinte kiesés nélkül változtathatjuk a paramétereket.
- Mit jelent a CNAME?
- Alias az A rekordhoz.
- Mi a baj a CNAME-mel?
- Könnyen hurkokat alakíthatunk ki, illetve tovább tart egy feloldás. Rontja a DNS hatékonyságát.
- Mit jelent az NXDOMAIN?
- A kereset rekord nem létezik.
- Mi a glue?
- Egy lekérdezés alkalmával az ns kiszolgáló visszaadja a autoritatív ns IP-jét is, hogy azt ne kelljen azt is lekérdezni, így erőforrást spórol.
- Mi a baj a glueless delegációkkal?
- Ha egymásra mutató NS rekordokat adunk meg, akkor nem tudjuk feloldani az adott domain egyetlen rekordját sem.
- Mi a DNS poisoning, hogyan működik és hogy lehet ellene védekezni?
- Glue-ban nem valós adatokat kapunk, így nem a megfelelő célhoz érünk el.
- Védekezés: csak autoritatív szervertől fogadjuk el kritika nélkül a glue-ban elhelyezett adatokat. Ez minél újabb BIND9 használatával vagy más DNS implementációval érhetjük el
- Mi a baj a joker-bejegyzésekkel, és milyen esetben van velük baj egyáltalán? Pl. ha a bme.hu zónában bejegyezzük, hogy "*.bme.hu IN MX 10 mail.bme.hu", az baj? És ha azt jegyezzük be, hogy "*.hu IN A 152.66.115.35"?
- *.bme.hu IN MX 10 mail.bme.hu : Ha a mail.bme.hu csak fogadja a leveleket és utána tovább osztja, akkor jó a beállítás.
- *.hu IN A 152.66.115.35 : Ez nem jó, mert ha .hu TLD-vel rendelkező A rekordot akarunk feloldani arra mindig a 152.66.115.35 IP cimmel válaszol.
- Milyen problémákat okozott, amikor a Verisign ahelyett, hogy a nemlétező .com domainekre NXDOMAINt adott volna vissza, a saját webszerverének IP-címét adta meg?
- A nemlétező .com TLD-jű weboldalakra mind a Verisign oldala töltődött le.
- Milyen markánsan különböző alszolgáltatásokra osztható a DNS, mint komplex szolgáltatáscsoport?
- Autoritatív DNS: Az autoritatív DNS-szervernek van egy adatbázisa, és az abban található adatokra vonatkozó kérdésekre válaszol. Más (pl. rekurzív) kérdésekre nem.
- Rekurzív, cache-elő DNS: Az ilyen szerver a DNS-fa rekurzív bejárását végzi el a kliensek számára, és az eredményeket cache-eli a gyorsabb kiszolgálás érdekében.
- Zónatranszfer (AXFR): Ez a szerver az autoritatív szerver adatbázisának replikálását végzi.
- Resolver stub library: Olyan függvénykönyvtár, amelyben a DNS-sel kapcsolatos funkciók vannak megvalósítva, hogy ne kelljen minden programban egyenként implementálni. Elsősorban rekurziv szerverrel kell tudnia szót érteni
- Mit jelent az, hogy egy DNS-szerver autoritatív egy domainre?
- Az a DNS-szerver felelős a domainra vonatkozó kérelmek kiszolgálásáért. Ő a domain elsődleges vagy másodlagos NS-e.
- Mit jelent a delegáció? Mit jelent a "classless" delegáció? Mikor használnak classless ("de Groot") delegációt és miért?
- Delegáció: Az egyel magasabb szinű ns-szervernek megadjuk, hogy az adott domainért ki az autoritatív NS.
- Mikor nem a történelmi A, B vagy C osztályú IP tartományhoz szeretnénk PTR rekordot rendelni. pl. 192.168.0.32/27 alhálózatnál a 192.168.0.35 megadásához a 35.0.168.192.in-addr.arpa CNAME 35.32/27.168.192.in-addr.arpa bejegyzés szükséges. RFC2317 (Amúgy volt ez ilyen formában?)
- Soroljon fel legalább öt DNS-rekordtípust, és röviden írja le, mire valók!
- A: név->IP
- www.bme.hu. IN A 152.66.115.35
- PTR: IP->név
- 35.115.66.152.in-addr.arpa. IN PTR torpapa.eik.bme.hu.
- Azért így, hogy hierarchikusan lehessen delegálni,
- MX: melyik szerver fogadja a domainbe címzett leveleket
- bme.hu. IN MX 10 nic.bme.hu.
- NS: ki nameservere egy domainnek
- bme.hu. IN NS ns.bme.hu.
- CNAME: átirányítás; minden, erre a névre vonatkozó queryvel kapcsolatban l. a másik megadott nevet.
- www.math.bme.hu. IN CNAME proof.math.bme.hu.
- A: név->IP
- Mi a zónatranszfer?
- Amikor a másodlagos ns letölti az zóna új adatait az elsődleges ns-ről (AXFR)
- Soroljon fel legalább két DNS-szerverszoftvert!
- BIND
- djbdns (illetve annak autoritatív ns-t megvalósító alkalmazása)