Tartalomjegyzék
DNS szerver
- Szerző: Sallai András
- Copyright © 2011, Sallai András
- Szerkesztve: 2011, 2013, 2017, 2018
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Előfeltevések
Az iskolapélda bemutatásához kitaláltam egy olyan legfelső szintű tartománynevet (toplevel domaint), amelyet a valóságban nem használnak:
.and
A .hu, .eu, .org, stb. helyett ezt fogjuk használni. Saját tartománynevünk a „zold” lesz, vagyis egy ilyen domaint szeretnénk beállítani:
zold.and
A beállításokhoz a szerverünket el kell nevezni valahogy. Ez lesz a gépünk neve (host név vagy hostname). Ennek beállításait lásd a hostnév beállítása fejezetben. A gépnevünk a példában:
iskolazo
A szerverünket tehát így is el lehet majd érni:
iskolazo.zold.and
Feltételezzük, hogy van egy fix IP címünk, amelyen állandóan elérhetjük majd az általunk konfigurált szervert. Az iskolapéldában egy belső IP címet fogunk ehhez használni, vagyis éles szervereken ilyen nem lesz. Legyen ez a példabeli IP cím:
192.168.5.4
Ez lesz a szerverünk IP címe.
Domain Name System
A DNS az IP cím és tartománynév összerendelések feloldására kitalált rendszer. Hierarchikus felépítésű, osztott adatbázisból áll. Az Interneten névszerverek százezrei, nevek millióit szolgálják ki. Kezeli a redundanciát és jó hibatűrő képességekkel bír, és kiszolgál a fő feladata mellett néhány más információt is.
Létrehozásának célja a kényelem volt. A számítógépeket IP címekkel azonosítjuk, azok helyett viszont neveket szeretünk inkább beírni.
Ha nem lennének tartománynevek, akkor egy weboldal eléréséhez azt kellene begépelnem, például:
195.199.1.5
Mennyivel jobb e helyett egy tartománynevet gépelni.
Hosts fájl
A DNS előtt is volt névfeloldás. Ezeket hosts fájlokkal oldották meg. Konkrétan ez volt a fájl neve. Ezek a hosts fájlok ma is megtalálhatók minden gépen és használhatók is. Egy ilyen nevű állományban tárolták az IP címeket és a hozzájuk tartozó neveket. Ezek az állományok azonban idővel igen nagyra nőttek. Nagyon sűrűn kellett változtatni azokat. A hálózatok növekedése miatt egyre több ember, egyre gyakrabban töltötte le a fájlokat, így szükségszerűvé vált egy újabb megoldás.
- /etc/hosts
195.199.200.48 jupiter.zold.and 180.123.5.24 mars.sarga.and 210.100.205.8 venus.piros.and 208.24.243.238 pluto.lila.and
DNS
A DNS rendszer megalkotásában Paul Mockapetris játszotta a legnagyobb szerepet, 1983-ban, amikor az ISI (Information Science Institute) munkatársa volt.
Feladatuk általánosan
A DNS szerverek a nevek feloldását hálózati kommunikációval oldják meg. A feladatait két részre lehet osztani:
- láttatás
- látás
Illetékesség fogalma
Autoritatív - A szerver illetékes egy név dolgában. Vagyis az adott szerveren van beállít „master”-ként az adott domain.
A DNS szerkezete
A DNS hierarchikus felépítésű. Legfelül a gyökér van, amelyet több számítógép képvisel. A gyökér alatt találhatók a top-level domainek. Ezek a hu, edu, org, com, stb. A domainek a példában a nyf, a szit, a bme, az debian és kernel.
Kérdezzük le a gyökérszervereket:
dig . ns
Top-level
Legfelső szintű domain.
Az ISO-3166-1 szabvány alapján:
- gov - kormányzati szervek
- edu - oktatási intézmények Amerikában
- org - non-profit szervezetek
- net - hálózati szervezetek
- mil - katonai szervezetek
- arpa - inverz zóna és a régi Arpanet egyes részei
Zóna
- A név-fa zónákra oszlik
- Egy zóna a fa egyben kezelt része (pl. az összes TLD-t kezelő root)
- Egy zóna az illetékes szerveren általában egy fájl.
Elsődleges - másodlagos
- Elsődleges szerver → zóna adminja változtatja
- Másodlagos szerver → tükrözzük az elsődlegesről
Delegálás
A zóna egyes darabjainak kezelését más szerverekre bízzuk.
Pl: én kezelem a intezet.hu zónát. Az osztaly1 nevű aldomaint akar a cég léterehozni, és ezt az osztály1 osztályon levő szerverről akarják kezelni. Akkor a szerveremen delegálom osztaly1.intezet.hu zónát. Az osztály1 gazdája felelőse és teljes ura lesz ennek az aldomainnek.
A regisztrátoroknál bejegyzett fődomainek is tulajdonképpen delegált domainek.
A példánkban szereplő zold.and domain alá szeretne a barátunk egy barat.zold.and domaint, amelyet ő fog kezelni saját szerverén. Ekkor a barat.zold.and domaint delegálom számára.
Több színtű névmegadás
- Többszintű névmegadás delegálással lehetséges
- De nem feltétele!
- Magam is hozhatok létre olyan domaineket, amelyek pontot tartalmaznak:
- osztaly.intezet.hu
FQDN (Fully Qualified Domain Name)
A DNS rendszer hierarchikus felépítéséből következi, hogy minden név egyedi.
Hierarchia → | Minden név egyedi |
A top-level domain alatt megadok egy fő domaint, azok alatt pedig újabb aldomaineket hozhatok létre. Azok alatt pedig megint újabb domainek lehetnek. Az aldomainek így a zónák egy szegmensét jeltik. Az egyes szegmenseket ponttal (.) tagolom, mint a fenti példánkban is:
iskolazo.zold.and
vagy
barat.zold.and
vagy
info.zold.and
vagy
prog.info.zold.and
vagy
prog.and.info.zold.and
vagy
zold.and.zold.and
A zónaleírásokban, ha egy zold.and zónában vagyok, akkor a szegmensekre való hivatkozások során, nem kötelező zold.and kírása. Például írhatom ezeket a fentiek helyett:
iskolazo barat info prog.info prog.and.info zold.and
Vegyük észre az utóbbi példában, ha leírom, hogy zold.and akkor nem világos, hogy az „and” most top-level domain vagy aldomain. Ezért ha top-level domainről van szó, akkor a végén ezt egy ponttal (.) szokás jelezni.
zold.and.
Ha nem teszem ki pontot, akkor zold.and domain alatt lévő zold.and aldomainekről van szó. Így egyértelműen jelezzük, hogy a teljes domaint képviselő nevet adom meg, vagy csak egy aldomaint.
Láthattuk, hogy az .and végződés nem garantálja, hogy amit leírok annak az utolsó domaine top-level.
A top-level domainekkel a végén megadott domaint FQDN-nek nevezzük. A fentiekből pedig megtanultuk, hogy az FQDN-t mindig úgy jelezzük, hogy a domain végére egy pontot teszünk, jelezve, hogy a teljse domaint kiírtuk.
Ezek utána a Fully Qualified Domain Name leghelyesebb fordítása talán „teljes domaint képviselő név”.
Domain név megadás
A domain névben szerepelhetnek a latin ábécé angol betűi, számok és kötőjel:
- Latin ábécé angol betűi [a-z]
- Számjegyek [0-9]
- Kötőjel [-]
Aláhúzás nem lehet a domain névben.
Ma már használható ékeztes domain is. Ékezetes domain esetén egy szabály alapján meghatározott alakban írjuk a domaint, vagyis le kell kódolnunk az ékezetes domain nevet. A kódolást nem kell nekünk elvégezni, az alábbi weblapon találunk hozzá segítséget:
Inverz feloldás (reverz)
IP címből domain név
A teljesség igénye megkívánja, hogy ne csak a domain nevekből legyünk képesek IP címeket feloldani, hanem fordítva is. Ezt nevezzük inverz feloldásnak.
Biztonság
Az inverz feloldás persze nem csak a teljesség igényét szolgálja. Ma már a spamek miatt a levelezőszervereken követelmény, hogy ne fogadjunk el olyan szerverről leveleket, amelyeknek az IP címe nem oldható fel domain névvé. Sőt, ha kaptunk egy domain nevet, az legyen valós, vagyis a visszakapott doman név is feloldható legyen IP címmé.
Az inverz zóna neve
Ha adott az Interneten egy IP címünk, például 195.166.85.2, akkor a zóna nevünk amit beállítunk persze nem ez lesz. Először az IP címünknek vesszük az értékes részeit, majd leírjuk fordított sorrendben, a végére pedig a „in.addr-arpa” nevet fűzöm.
A 195.166.85.2 IP címből tehát ez lesz:
2.85.166.195.in-addr.arpa
195.166.85.2 | → | 2.85.166.195.in-addr.arpa |
Ha fenti iskolapéldánknál akarunk maradni, akkor:
192.168.5.4 | → | 4.5.168.192.in-addr.arpa |
Ha a 192.168.5.0/24 tartományunk van, amiért én felelek, akkor az egész tartományt megadhatom, ha csak a hálózat címét adom meg:
5.168.192.in-addr.arpa |
Ezek után a zónafájlban több IP címet is megadhatok:
1 PTR elso.zold.and |
2 PTR masodik.zold.and |
3 PTR harmadik.zold.and |
IPv6 esetén a Google DNS szervere példaként:
host 2001:4860:4860::8888 8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.6.8.4.1.0.0.2.ip6.arpa domain name pointer google-public-dns-a.google.com.
Névfeloldás menete
- pluto.bme.hu címet keressük
- Gépen van egy rezolver (feloldó program)
- Nem maga végzi a feloldást, csak kéri egy DNS szervertől
- Telepítéskor megadtunk két DNS szervert
- IP címet adunk meg
DNS kérés : pluto.bme.hu
- Az „én DNS szerverem” válaszol azonnal
- A gyökérszerverhez fordul megtudja hu zónáért illetékes szerverek listáját
- Az újabb névszervertől az „én DNS szerverem” most azt kérdezi ki a felelős a bme zónáért.
- Az újabb névszervertől az „én DNS szerverem” azt kérdezi hol található a pluto.
- Ezt nevezzük REKURZÍV FELOLDÁS-nak
Rekurzív feloldás
DNS-es szerverek nem végeznek minden kliensnek ilyen feloldást, csak a konfigurációban megadottaknak.
Cache -- TTL
- A névszerverek tárolják egy ideig a feloldást, hogy ha legközelebb kérik tőle azonnal tudja a választ
- hálózati forgalom csökkenése
- gyors névfeloldás
- A tárolás idejét a zóna adminisztrátora adja meg a zóna leírásánál
- TTL – Time To Live
- Ennyi másodpercig tárolják a cache szerverek az adatokat
Névszerver felosztása
- Illetékes, Autoritatív, láttató szerver
- Nem illetékes, látó szerver
- Továbbító (forwarder) - más szerverek számára gyorsítótárat szolgáltat
- Slave - Csak forwardert használ (mert például nem lát ki a Internetre)
- Nem keverendő az illetékes slave szerverrel
- Caching only (hint) - Csak gyorstáraz, sosem illetékes
Lame delegálás
Ha valahova delegálunk egy nevet, akkor azt az ottani adminisztrátorral is meg kell beszélni, hogy azt folyamatosan szolgáltassa. Ha ez nem történik meg, akkor beszélünk lame delegálásról.
DNS adatbázis rekordtípusai
A következőkben áttekintjük a DNS szerverekben használt rekordokat. A rekord neve előtt megadható, hogy milyen típusú hálózatot használunk, például IN vagyis InterNet, de az alapértelmezett, ennek megadása nem kötelező.
- SOA – Start Of Authority
- A – Address
- AAAA - Address
- NS – Name Server
- Glue rekord – speciális A rekord
- CNAME – Canonical NAME
- MX – Mail eXchanger
- TXT – TeXT
- HINFO – Hardware INFOrmation
- PTR – PoinTeR
SOA - Start of Authority rekord, zóna kezdő rekord
A SOA rekord adja meg egy zónára vonatkozó közös információkat.
zold.and. SOA iskolazo.zold.and. hostmaster.zold.and. ( 1999093001 ; Szériaszám - Serial nr. 86400 ; Frissíts gyakorisága - Refresh 1800 ; Újrapróbálkozás - Retry 604800 ; Lejár - Expire 43200) ;TTL
SOA rekord – első sor
zold.hu. SOA iskolazo.zold.and hostmaster.zold.and
- zóna neve
- elsődleges névszerver
- emailcím
úgy kapjuk, hogy az első pont karaktert (amit nem előz meg egy (backslash \) at jelre (@) cseréljük
SOA rekord – második sor
2006091801 ; Serial nr.
A slave szerverek ellenőrizhetik, hogy a náluk lévő adatok nem avultak-e el. Az elsődleges zóna adminja minden javításkor növeli ezt a számot.
Szokás: Akt. Dátum plusz a mai javítás száma két számjegyel: ÉÉÉÉHHNNVV
SOA rekord – harmadik sor
86400 ; Refresh
Másodpercben megadott szám
Frissítési idő
A Slave szervernek mennyi időnként kell megnézni, hogy nem avultak-e el az adatai
SOA rekord – negyedik sor
1800 ; Retry
Másodpercben megadott szám
Ha frissítés nem sikerült mennyi idő múlva próbálkozzunk újra.
SOA rekord – ötödik sor
604800 ; Expire
Másodpercben megadott szám
Ha nem sikerül a masterrel kommunikálni akkor ennyi ideig szolgáltatják a világnak a zónát.
SOA rekord – hatodik sor
43200 ; TTL
Másodpercben megadott szám
Azt kérjük más névszerverektől, hogy legalább ennyi ideig szolgáltassák az zónát.
TTL értékek
Fontos az ésszerű beállítás.
Szokásos értékek:
refresh | 86400 | 1 nap |
retry | 3600 | 1 óra |
expire | 604800 | 1 hét |
TTL | 86400 | 1 nap |
Ha gyors változásvárható a TTL-et érdemes kicsire venni.
TTL értékek könnyebben
A 8-as változatú Bindtól használhatók a köv. formátáumok:
1W2D3H
W | egy hét |
D | egy nap |
H | egy óra |
SOA előtti TTL
A SOA rekord előtti TTL, a zóna alapértelmezett TTL értéke. Megmondja az egyes zóna egyes rekordjai meddig érvényesek. Az egyes rekordokban ezt felülírhatjuk.
Hiba
Ha az expire idő nem nagyobb mint a refresh akkor a másodlagos szerver nem fogja szolgáltatni az adatokat.
A rekord
Az „A” rekorddal rendelünk a domain névhez IP címet.
Legyen például egy pandora.bme.hu domin:
pandora.bme.hu. A 195.199.17.8
Nem kötelező megadni a teljes FQDN-t:
pandora A 195.199.17.8
Mivel adott zónában, vagyunk, a többi egyértelmű. Ha mégis FQDN-et adunk meg akkor pont a végén!
Az iskolapéldánkban ez így néz ki:
iskolazo.zold.and. A 192.168.10.1
AAAA rekord
IPv6-os cím
iskolazo.zold.and. AAAA 2001:db8:85a3:8d3:1319:8a2e:370:7348
NS rekord
A névszerverek címe Kettő szokott lenni:
Egyik maga a master szerver, a másik a Slave szerver
Pl:
NS iskolazo.zold.and.hu. NS barat.lila.and.
Névszerver
- Ma már kötelező két névszerver megadása
- A két DNS szervernek különböző hálózatban kell lennie!
Glue rekord
Glue rekord -– Idegen (ragadvány) A rekord
A delegált zóna egyik névszervere az adott zónában van. Pl.: A gep.osztaly.valami.hu -nak saját DNS szervere van, mégis meg kell adni ezt feljebb a valami.hu zónában is!
- Különben csapdába kerülünk!
- Konkrétan:
gep.osztaly A 195.166.12.1
Az iskolapéldánkban ez például így nézhet ki:
barat.zold.and A 192.168.5.4
CNAME rekord
A hostnak becenevet adhatunk vele.
Pl:
www CNAME gep
gep.valahol.hu ekkor így is elérhető:
www.valahol.hu
Iskolapéldánkban:
www CNAME iskolazo
vagy egy ftp:
ftp CNAME iskolazo
MX rekord
A domainbe érkező leveleket fogadó szerver címe
MX 10 mail.zold.and. MX 20 mail2.zold.and.
A számoknak akkor van jelentősége, ha több (mint itt 2) mail szerver várja a leveleket. Egyik elsődleges. A másik csak akkor fogadja a leveleket, ha az első nem működik. A szám a prioritást adja meg.
TXT rekord
Tetszőleges szöveget írhatunk ide. Megjegyzés stb.
HINFO rekord
Hardverről szokás (lehetne szokás, nem szokás) írni ide információkat.
PTR rekord
Az inverz zónákat állítjuk be a PTR rekord segítségével.
- Cím név feloldásra → inverz feloldás
- Az in-addr.arpa domain alá tartozó ág szolgálja a IP címek feloldását
- Pl: 8.2.166.195.in-addr-arpa PTR valami.hu
Az iskolapélda:
4.5.168.192.in-addr.arpa PTR zold.and
Domaint akarunk magunknak
Az alábbiakban sorra vesszük, milyen lépéseket kell megtennünk, ha szeretnénk magunknak egy saját tartománynevet az Interneten.
- Meg kell néznünk nem használja-e valaki már a kívánt domain nevet.
- Ehhez használjuk a következő oldalt:
- Slave szerver szolgáltatót keresünk
- Regisztrátort keresünk
- Ha a mastert mi szolgáltatjuk: beállítjuk a szerverünkön
- Várakozási lista → 2 hét
- Ha nincs Slave szerver a regisztrátor nem csinálja meg a delegálást!
- .hu domainre gondolok
Függelék
DNS szerver programok
- bind9
- pdns-server (PowerDNS)
- pdns-tools
- pdns-recursor
- pdns-backend-ldap
- pdns-backend-mysql
- pdns-backend-opendbx
- pdns-backend-pgsql
- pdns-backend-sqlite3
- pdns-backend-tinydns
- yadifa
- maradns
- knot
- nsd
- gdnsd
DNS proxy
- dnsproxy
Feloldók:
- unbound
Nyitott DNS szerverek
- 1.1.1.1 Cloudflare
- 8.8.8.8 Google
- 8.8.4.4 Google
- 9.9.9.9 IBM
- 208.67.222.222
- 208.67.220.220
- 80.80.80.80
- 80.80.81.81
- 77.88.8.8
- 77.88.8.1
- 77.88.8.88
- 77.88.8.2
- 77.88.8.7
- 77.88.8.3