3. DNS - imenska storitev¶
3.1 Kaj je DNS¶
DNS je porazdeljen in hierarhičen sistem, ki pretvarja človeku prijazna imena v podatke, ki jih potrebujejo računalniki. Najpogosteje gre za pretvorbo domenskega imena v IP naslov, vendar DNS hrani še veliko več: - naslove strežnikov, - poštne strežnike, - avtoritativne strežnike, - storitvene zapise, - obratne preslikave, - v določenih okoljih informacije za LDAP, Kerberos ali druge interne storitve.
3.2 Zakaj DNS obstaja¶
Brez DNS bi morali uporabniki in aplikacije uporabljati gole IP naslove. To ni praktično, ni pregledno in ni prilagodljivo. DNS loči identiteto storitve od trenutnega omrežnega naslova.
To omogoča: - spremembo IP naslova brez spremembe uporabniške navade, - lažje migracije storitev, - redundanco, - več imen za isto storitev, - eno ime za več strežnikov, - hierarhično upravljanje imen.
3.3 Ključna ideja: ime kot abstrakcija¶
Ko uporabnik vpiše intranet.podjetje.si, ne razmišlja o omrežni topologiji. Razmišlja o storitvi. DNS je zato več kot tehnična tabela. Je infrastruktura pomena.
To je zelo dober učiteljski poudarek: uporabniki si zapomnijo storitev, ne naslova stroja.
3.4 Kako DNS deluje¶
Poenostavljen potek: 1. odjemalec vpraša lokalni resolver, 2. ta po potrebi vpraša naprej druge strežnike, 3. odgovor se vrne nazaj odjemalcu, 4. odgovor se zaradi TTL pogosto shrani v predpomnilnik.
Pomembno za razumevanje: - DNS ni ena sama baza, - odgovori lahko pridejo iz cachea, - napačen odgovor lahko ostane v obtoku do izteka TTL, - diagnostika mora vedno upoštevati vprašanje: "Ali gledam svež ali predpomnjen odgovor?"
3.5 Vrste DNS strežnikov¶
- rezolver / caching strežnik - poizveduje v imenu odjemalcev in odgovore hrani v cacheu,
- avtoritativni strežnik - vir resnice za cono,
- primarni in sekundarni strežnik - redundanca in prenos con,
- lokalni resolver na odjemalcu - del operacijskega sistema ali lokalne storitve.
3.6 Pogosti DNS zapisi¶
- A - ime -> IPv4
- AAAA - ime -> IPv6
- CNAME - alias na drugo ime
- MX - poštni strežnik za domeno
- NS - avtoritativni strežniki za cono
- PTR - obratna preslikava IP -> ime
- TXT - tekstovni metapodatki
- SRV - iskanje storitev
- CAA - omejitve glede izdajateljev certifikatov
3.7 Dobre prakse pri DNS¶
- vedno jasno loči javni in interni DNS,
- cone poimenuj smiselno in dokumentiraj,
- upravljaj TTL premišljeno,
- za kritične cone imej redundanco,
- omeji prenos con,
- ne uporabljaj improviziranih imen, ki se čez pol leta nihče več ne spomni,
- za spremembe načrtuj čas širjenja zapisov,
- redno preverjaj usklajenost DNS z dejanskim stanjem storitev.
3.8 Varnostni problemi DNS¶
DNS je kritičen zato, ker če odpove DNS, uporabnik pogosto dobi občutek, da je "padel internet". V resnici je lahko padel le sistem imen.
Pogoste grožnje: - zastrupljanje predpomnilnika, - neavtoriziran prenos con, - napačne delegacije, - odprti resolverji, - DDoS zloraba, - napačna usmeritev prometa po migraciji, - lažni interni DNS strežniki.
3.9 DNSSEC¶
DNSSEC ni šifriranje vsebine, ampak mehanizem za preverjanje avtentičnosti in celovitosti DNS odgovorov.
Zelo pomembno:
- DNSSEC ne skriva informacij,
- DNSSEC pomaga dokazati, da odgovor ni bil podtaknjen ali spremenjen.
3.10 Tipični problemi¶
pingdeluje po IP, ne deluje pa po imenu,- zapis je pravilen, klient pa ga še ne vidi zaradi TTL,
- spletni strežnik je pripravljen, DNS pa kaže na stari IP,
- certifikat velja za domeno, uporabnik pa dostopa prek IP naslova,
- notranji in zunanji DNS se ne ujemata,
- reverse DNS ni pravilno nastavljen.
3.11 Kaj mora dijak razumeti¶
- DNS ni "okras", ampak temeljna infrastrukturna storitev,
- od njega je odvisnih ogromno drugih servisov,
- napačen DNS pogosto izgleda kot "splošna mrežna napaka",
- poimenovanje v omrežju je del arhitekture, ne le estetike.