MikoAndras.hu

Mikó András személyes oldalai

Webfejlesztő tudásbázis, első rész: DNS

Bátran kijelenthetjük, hogy napjaink Internetjének egyik alapja a DNS, azaz a domain név szolgáltatás. Ez a szolgáltatás segít nekünk abban, hogy ne kelljen IP címeket megjegyeznünk, hanem névvel hivatkozhassuk különböző gépekre. Bár egy IPv4-es címet még viszonylag könnyű lehet fejben tartani (pl. 192.168.0.1), de gondoljunk egy IPv6-os címre (pl. 2001:0db8:85a3:0000:0000:8a2e:0370:7334).

Persze nem csak ennyi a dolga a DNS-nek. Későbbiekben szó lesz majd a VirtualHost-okról, ami nagy vonalakban annyit jelent, hogy egyetlen IP címmel rendelkező webszerver több különböző domaint is ki tud szolgálni. Így értelemszerűen kevés lenne IP cím alapján meghívni a webszervert a böngészőben, mert  nem tudná, hogy melyik domainre vagyunk kíváncsiak.

Két nagy csoportra bonthatjuk a szolgáltatást. Az egyik a forward, a másik a reverse DNS.

Forward DNS

Forward DNS-nél a nevekre hivatkozunk és az IP címet kapjuk válaszul. Ennek legegyszerűbb példája, ha mondjuk megkérdezzük rendszerünket, milyen IP cím tartozik az index.hu domain-hez:

~$ nslookup index.hu
Server: 85.25.128.10
Address: 85.25.128.10#53
Non-authoritative answer:
Name: index.hu
Address: 217.20.130.97

A válaszban láthatjuk a kérést kiszolgáló szerver címét is. Hogy miért nem volt ez autoritatív válasz, arra majd később rátérek.

A DNS-ek rekordokból épülnek fel. A legtöbbet használt rekordok az alábbiak:

  • A: címrekord. IPv4 címmel tér vissza. Feladata a hosztnév és a hozzátartozó IP cím összerendelése. Egyetlen IP címre több A rekord is mutathat. Ilyenkor “round-robin”-ról beszélünk, azaz a névkiszolgáló felváltva válaszolja a hozzá tartozó IP címeket. Felhasználása terhelés-elosztásnál hasznos.
  • AAAA: címrekord. IPv6 címmel tér vissza. Feladata ugyanaz, mint az A rekordé.
  • CNAME: Kanonikus névrekord. Egy másik rekordra mutat. (Egy IP címre elegendő egyetlen A rekordot létrehozni, a többi domain-nel hivatkozhatunk CNAME-mel az előzőre. Így ha módosítani kell az IP címet, azt elegendő egyetlen rekordban megtenni, a többi követni fogja azt.)
  • MX: mail exchange rekord. A domain-hez tartozó levélkiszolgáló szerver IP címét/IP címeit tartalmazza. Tartalmaz prioritást is, azaz ha az első szerver nem elérhető, a levelet megpróbálja a következő szervernek kézbesíteni. Azonos prioritás terhelés-elosztást jelent.
  • NS: névszerver rekord. Megadja egy domain autoritatív DNS kiszolgálóinak címét. (lásd fenti példa)
  • SOA: start of authority record. Irányadó információk az adott domain-ről. (Elsődleges névkiszolgálók, rendszergazda email címe, frissítési időköz (TTL), stb.)

Annak jelzésére, hogy a domain név teljes, a név végére pontot teszünk. Valójában a TLD-vel egyező karaktersorra (pl.: hu, eu, com) való végződés nem garantálja, hogy a név FQDN: elképzelhető és tökéletesen szabályos a jupiter.arizona.eu.osztaly.intezet.hu domain név is.

A DNS rekordban szereplő @ karakter magát a domain-t jelöli. Pl a valami.hu névtérben az alábbi két rekord ugyanazt jelenti:

@ A 1.2.3.4
valami.hu A 1.2.3.4

A DNS bejegyzések egyik korlátja, hogy MX rekord nem hivatkozhat CNAME-re, csak A rekordra.

Reverse DNS

Itt az IP címhez rendelünk nevet. Ezt általában az Internet szolgáltatónk teszi meg helyettünk. Egyetlen IP címhez csak egyetlen reverse DNS bejegyzés (PTR rekord) tartozhat.

A levélszerverek azonosításhoz e kettőt együtt ellenőrzik az alábbiak szerint:
Megkapja a szerver a küldő szerver IP címét. Az alapján lekérdezi a hozzá tartozó reverse DNS rekordot, majd visszaellenőrzi, hogy a kapott reverse név az eredetileg kapott IP címre mutat -e. Ha valahol hibádzik a dolog, levelünk jó eséllyel spam-nek lesz nézve.

, ,

One thought on “Webfejlesztő tudásbázis, első rész: DNS

MINDEN VÉLEMÉNY SZÁMÍT!

Email cím (nem tesszük közzé) A kötelezően kitöltendő mezőket * karakterrel jelöljük

*

*

A következő HTML tag-ek és tulajdonságok használata engedélyezett: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>