DNS

Adam Krumplovič, xkrumpl@fi.muni.cz


Obsah


Co je to DNS a proč se používá

DNS je zkratka anglického Domain Name System někdy bývá uváděno také jako Domain Name Service. Provádí překlad ip adres ze špatně zapamatovatelného číslicového tvaru (případně dvojtečkového hexa hybridu ipv6) na jména, která se nám vybaví podstatně lépe. Její jediná funkce tedy spočívá v tom, že pomáhá lidské paměti. V malých LAN je DNS celkem zbytečná, ale zkuste si představit Internet bez jmen domén a www serverů. Dalším příkladem nezbytnosti této služby je elektronická pošta, posílat emaily na adresu kas@147.251.48.1 by asi taky nebylo to pravé. Méně známou feature je tzv. reverzní mapování, možnost překladu i opačným směrem, tedy jméno stroje na ip adresu. Alternativou k DNS bylo NIS/YP.

Systém domén


Jak to funguje

Vše je založeno na architektuře klient - server. Respektive množina klientů a množina serverů. Zdůrazňuji množinu serverů, protože ty si mezi sebou musí vyměňovat dotazy klientů, případně replikovat DNS záznamy. Pro Internet je tedy nezbytné aby byly všechny servery spolu propojeny v jedné globální struktuře a každý z nich přijal své místo v této struktuře. Naopak klienti v některých případech potřebují znát jen ip adresu v číselném tvaru některého z DNS serverů zapojeného v globální struktuře.

Příklad: klient chce zjistit ip adresu FQDN www.microsoft.cz . Nejdříve se dozví IP adresu nameserveru pro doménu prvního řádu (cz). Poté se zeptá nameserveru pro cz na IP adresu nameserveru pro doménu druhého řádu (microsoft.cz). A nakonec mu nameserver pro microsoft.cz prozradí IP adresu www.microsoft.cz.


Vlastnosti DNS


Tools

Linux - man resolver (resolver je součástí knihovny libc)

Domain Information Groper
dig @nameserver jmeno_stroje [typ_zaznamu]
dig @nameserver -x 123.123.123.123
host [-t typ_zaznamu] jmeno_stroje nameserver

windows
nslookup jmeno_stroje

Serverové implementace

BIND (
isc.org/isc/bind9)
- vznik 80 léta minulého století (Paul Vixie)
- nejrozšířenější
- aktuální verze je 9, ale hodně se používá 8
djbdns (cr.yo.to/djbdns.html)
- autor qmailu Daniel J. Bernstein
- jako qmail je složeno z mnoha malých částí (modulů), proto vyšší bezpečnost než BIND, ale závislost na modulech a dalších nadstavbových knihovnách.
- $500 odměna za nalezení bezpečnostní chyby

Konfigurace BINDu

Následující konfigurace je pro fiktivní doménu middlearth.cz, správce ma email gandalf@middlearth.cz a náš nameserver je spojen se světem a ve spolupráci s root servery umí přeložit i adresy z Internetu. Konfigurace je pro primární nameserver.
=========== /etc/named.conf ===================================================
#globalni vopsny -> man named.conf
options {
        directory "/var/named";
};

#svet
 zone "." {
         type hint;
         file "root.hinty";
 };

#moje fiktivni domena
zone "middlearth.cz" {
        type master;
        file "zony/middlearth.cz";
};

#vnitrni reverzni
zone "0.168.192.in-addr.arpa" {
        type master;
        file "zony/192.168.0";
};

======= konec named.conf ======================================================

Dopředný pro zónu kde su autorita
======= /var/named/zony/middlearth.cz =========================================
$TTL 3D
@       IN      SOA     middlearth.cz. gandalf.middlearth.cz. (
                        200407031       ; dnesni datum+dnesni seriove cislo
                        1D              ; refresh
                        3H              ; retry
                        4W              ; expire
                        1D )            ; minimum TTL
                NS      middlearth.cz.
;;                NS      dalsi.nameserver.cz. ; zaloha by mela byt mimo nasi domenu!
;;                MX      10 middlearth.cz.  ; Postou se ted nezabyvame
                TXT     "4d4m's test"

;;;;;  hlavni masiny

ns              A       192.168.0.3
middlearth.cz   A       192.158.0.3
ftp             CNAME   middlearth.cz.
gw              A       192.168.0.1


;;;;;  dalsi compy:

widlak          A       192.168.0.2
pepik           CNAME   widlak.
shire           CNAME   ns.
starej          A       192.168.0.4

======= konec middlearth.cz ========================================

Reverzní pro zónu kde su autorita
======= /var/named/192.168.0 =======================================
$TTL 3D
@       IN      SOA     middlearth.cz. gandalf.middlearth.cz. (
                        200407031       ; dnesni datum+dnesni seriove cislo
                        1D              ; refresh
                        3H              ; retry
                        4W              ; expire
                        1D )            ; minimum TTL
                NS      middlearth.cz.
;;                NS      dalsi.nameserver.cz.  ; zaloha by mela byt mimo nasi domenu!
;;                MX      10 middlearth.cz.  ; Postou se ted nezabyvame
                TXT     "4d4m's test"


;;;; hlavni

1       PTR     gw
3       PTR     middlearth.cz.

;;;; dalsi masiny

2       PTR     widlak
4       PTR     starej


======= konec 192.168.0 ========================================


Dále potřebujeme soubor root.hinty s adresami root serverů. Ten je často aktualizován, proto je vhodné si jej čas od času stáhnout na ftp.internic.net. Úvodní část jeho obsahu vypadá asi takto:

======= /var/named/root.hinty ========================================
. IN    SOA     A.ROOT-SERVERS.NET. NSTLD.VERISIGN-GRS.COM. (
                                  2004030701 ;serial
                                  1800 ;refresh every 30 min
                                  900 ;retry every 15 min
                                  604800 ;expire after a week
                                  86400 ;minimum of a day
                                  )
$TTL 518400
. NS A.ROOT-SERVERS.NET.
. NS H.ROOT-SERVERS.NET.
. NS C.ROOT-SERVERS.NET.
. NS G.ROOT-SERVERS.NET.
. NS F.ROOT-SERVERS.NET.
. NS B.ROOT-SERVERS.NET.
. NS J.ROOT-SERVERS.NET.
. NS K.ROOT-SERVERS.NET.
. NS L.ROOT-SERVERS.NET.
. NS M.ROOT-SERVERS.NET.
. NS I.ROOT-SERVERS.NET.
. NS E.ROOT-SERVERS.NET.
. NS D.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. A 198.41.0.4
H.ROOT-SERVERS.NET. A 128.63.2.53
C.ROOT-SERVERS.NET. A 192.33.4.12
G.ROOT-SERVERS.NET. A 192.112.36.4
F.ROOT-SERVERS.NET. A 192.5.5.241
B.ROOT-SERVERS.NET. A 192.228.79.201
J.ROOT-SERVERS.NET. A 192.58.128.30
K.ROOT-SERVERS.NET. A 193.0.14.129
L.ROOT-SERVERS.NET. A 198.32.64.12
M.ROOT-SERVERS.NET. A 202.12.27.33
I.ROOT-SERVERS.NET. A 192.36.148.17
E.ROOT-SERVERS.NET. A 192.203.230.10
D.ROOT-SERVERS.NET. A 128.8.10.90
$TTL 172800
PS. NS NS.DOLEH.COM.
PS. NS DNS3.GOV.PS.
PS. NS DNS1.GOV.PS.
PS. NS SLAVE1.STH.NETNOD.SE.
PRO. NS A.IANA-SERVERS.NET.
PRO. NS B.IANA-SERVERS.NET.
MUSEUM. NS NIC.ICOM.ORG.
MUSEUM. NS NS-EXT.VIX.COM.
MUSEUM. NS NS.ICANN.ORG.
MUSEUM. NS NIC.MUSEUM.
MUSEUM. NS NS1.GETTY.EDU.
COOP. NS NS1.NIC.COOP.
COOP. NS NS2.NIC.COOP.
AERO. NS MERAPI.SWITCH.CH.
AERO. NS NS3.KNIPP.DE.
AERO. NS DNS7.DENIC.DE.
AERO. NS TLD1.AERODNS.AERO.
AERO. NS TLD2.AERODNS.AERO.
BY. NS NS.RIPE.NET.
BY. NS NS2.FREE.NET.
BY. NS ARWENA.NASK.WAW.PL.
BY. NS DNS.BELPAK.BY.
BY. NS NS1.OPEN.BY.
BY. NS NS.RU.NET.
======= konec root.hinty =============================================
.
.
.

Pro vyšší bezpečnost bysme měli BIND spouštět se změněným kořenovým adresářem. Pro to je nutná následující adresářová struktura.
/namedchroot
  \--- named
       \--- dev
       \--- etc
             \--- named
       \--- var
             \--- run

Pro logování je třeba mít správný čas, proto: cp /etc/localtime /namedchroot/named/etc/ a dále přesměrovat logováni syslogu pro named na /namedchroot/named/dev/log . Špatný nápad není ani vytvoření chrootovaného null: mknod /namedchroot/named/dev/null c 1 3

Chrootovaný BIND se spouští named -t adresar_chrootnuti

Význam některých slov v zónových záznamech

AIP adresa RFC 1035
AAAAIPv6 adresaRFC 1886
CNAMEDalší název pro stejnou IP adresuRFC 1035
HINFOInformace o hardware k usnadnění orientaceRFC 1035
MXMail Exchanger - poštovní server pro danou doménuRFC 1035
NSNameserver pro danou doménuRFC 1035
PTRUkazatel RFC 1035
RPZodpovědná osobaRFC 1183
SOAStart of authority RFC 1035
TXTTextový řetězecRFC 1035


Hinty