8. cvičení - Systém DNS

Cíle cvičení

Manuální překlad jména na IP adresu a obráceně

K dotazu na překlad doménových jmen na IP adresu a naopak se dá v Linuxu i ve Windows použít program nslookup.

Na linuxu je k dotazům na DNS servery možné použít další programy jako dig, host nebo resolveip.

Úkol: Zjistit IP adresy ke jménům seznam.cz a google.cz.

Úkol: K IP adrese 158.194.80.13 zjistit jméno.

Zjistit způsob rekurzivního překladu jména na IP adresu

Postup rekurzivního překladu jména na IP adresu je popsán ve slidech k 8. přednášce.

Úkol: Vysvětlit úplný postup rekurzivního překladu nějakého jména (například seznam.cz) z uzlu v nějaké doméně (například inf.upol.cz).

Dotazy na DNS server

DNS servery spravují různé druhy záznamů. Například A záznamy obsahují asociaci jména s IPv4 adresou, AAAA to samé pro IPv6, MX záznamy obsahují jména mail serverů pro doménu a čísla reprezentující jeho prioritu, CNAME obsahují aliasy jmen na jiná jména, NS obsahují jméno autoritativního jmenného serveru pro doménu, PTR ukazují na kanonické jméno, používají se pro reverzní překlad IP adresy, SOA označují autoritativní záznamy o DNS zóně atd.

Další typy záznamů lze najít na Wikipedii.

Úkol: Pomocí programu nslookup nebo dig najít na OpenDNS serveru 208.67.222.222 jméno a IP adresu mail serveru pro doménu upol.cz, alias pro www.post.cz, IPv6 adresu pro ipv6.google.com.

Manuální překlad jména na IP adresu a obráceně, Zjistit způsob rekurzivního překladu jména na IP adresu a Dotazy na DNS server jsou za 1 bod.

Konfigurace resolveru

IP adresy lze ke jménům získat pomocí dotazu na DNS server nebo mohou být zapsané lokálně v konfiguračním souboru operačního systému.

Pro lokální asociaci jména s IP adresou se na linuxu používá soubor /etc/hosts. Ve windows je to soubor C:\WINDOWS\system32\drivers\etc\hosts. Oba tyto soubory mají stejnou syntaxi. Každý řádek reprezentuje jednu asociaci IP adresy se jménem.

DNS servery, kterých se má OS ptát na překlad jmen se ve Windows dají nastavit pomocí dialogu síťových rozhraní.
Na linuxu k tomuto účelu slouží soubor /etc/resolv.conf. V něm se dají jednak nastavit DNS servery a dále potom doména, ve které se budou hledat neúplná jména.

Úkol: Lokálně asociovat nějaké jméno s IP adresou nějakého serveru. Například IP adresy www.seznam.cz s adresou najdu-tam-co-neznam.cz.

Úkol: Na linuxu i na windows přenastavit DNS tak, aby se OS na překlad jmen dotazoval OpenDNS serverů s adresami 208.67.222.222 pro primární server a 208.67.220.220 pro sekundární server..

Zachycení a inspekce DNS query paketu

DNS query dotazy a odpovědi mají následující strukturu.

Úkol: Zachytit DNS query dotaz a odpovědi a popsat alespoň 4 položky v jeho hlavičce.

Úkol: Popsat jednotlivé části těla DNS query.

Konfigurace resolveru a zachycení a inspekce DNS query paketu jsou za 1 bod.

Konfigurace DNS serveru

Na linuxu lze jako DNS server použít Bind. V distribuci Debian GNU/Linux ho lze nainstalovat pomocí příkazů:

apt-get update
apt-get install bind9

Jeho konfigurační soubory se nacházejí v adresáři /etc/bind/. Novou zónu test.local je možné přidat zápisem následující konfigurace do souboru named.conf.local v /etc/bind/:

// dopredny preklad
zone "test.local" {
	type master;
	file "/etc/bind/db.test.local";
};

// reverzni preklad
zone "70.1.10.in-addr.arpa" {
	type master;
	file "/etc/bind/db.10.1.70";
};

Konfigurace této zóny pro dopředný překlad se následně provádí v souboru /etc/bind/db.test.local. Minimální konfigurace vypadá takto:

$TTL	604800
@	IN	SOA	test.local. root.test.local. (
			2010112300	; Serial
			604800		; Refresh
			86400		; Retry
			2419200		; Expire
			604800 )	; Negative Cache TTL

	IN	NS	ns.test.local.

ns	IN	A	10.1.70.2

Konfigurace reverzního překladu se provádí v souboru /etc/bind/db.10.1.70. Minimální konfigurace vypadá takto:

$TTL 604800
@       IN      SOA     test.local. root.test.local. (
                        2010112300
                        10800
                        1800
                        1209600
                        604800 )

        IN      NS      ns.test.local.
        
2       IN      PTR     ns.test.local.

Nakonec je třeba Bind restartovat, aby se změny projevily. To se provede pomocí příkazu /etc/init.d/bind9 restart.

Další informace lze najít například v článku o DNS na Abclinuxu nebo zde.

Úkol (za 0,75 bodu): V linuxu vytvořit zónu test.local pro podsíť 10.1.L.0 (kde L je poslední číslo z IP adresy hostitelského stroje) a v ní nakonfigurovat alespoň jeden A záznam a jeden CNAME záznam a k těmto záznamům nastavit i reverzní překlad.

Ve windows je napřed potřeba doinstalovat DNS službu. Ta se nachází v sekci Add roles.

Další postup je popsán zde. Je sice pro Windows 2003 server, ale stejný postup je platný i pro Windows 2008 server

Úkol (za 0,75 bodu): Ve windows vytvořit zónu local pro podsíť 10.1.L.0 (kde L je poslední číslo z IP adresy hostitelského stroje) a v ní nakonfigurovat alespoň jeden A záznam a jeden CNAME záznam a k těmto záznamům nastavit i reverzní překlad.

Napsat obdobu programu resolveip

Úkol (za 0,5 bodu): Pro windows a Linux napsat alternativu programu resolveip se syntaxí:

resolveip name1 [name2 […]]

kde name1, name2, ... jsou jména.

Pro každé takto zadané jméno program vypíše:

Například pro dotaz:

resolveip google.cz www.root.cz www.post.cz

by mohla odpověď vypadat takto:

Oficialni jmeno: google.cz
Alternativni jmena (aliasy): 

IP adresy:
74.125.87.105 –> hb-in-f105.1e100.net
74.125.87.147 –> hb-in-f147.1e100.net
74.125.87.99 –> hb-in-f99.1e100.net
74.125.87.103 –> hb-in-f103.1e100.net
74.125.87.104 –> hb-in-f104.1e100.net

Oficialni jmeno: root.cz
Alternativni jmena (aliasy): www.root.cz 

IP adresy:
91.213.160.118 –> www.root.cz

Oficialni jmeno: email.seznam.cz
Alternativni jmena (aliasy): www.post.cz

IP adresy:
77.75.76.6 -> email.seznam.cz

K implementaci budete potřebovat struktury hostent a in_addr a dále funkce:

A pro windows verzi ještě strukturtu WSADATA a funkci int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);.

Další informace je možné nalézt na serveru Builder.cz: