8. Cvičení – DNS - Počítačové sítě

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 ma 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 adesu

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

Ú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ánamy obrahují asociaci jména s IPv4 adresou, AAAA to samé pro IPv6, MX záznamy obsahují jména mailerverů pro doménu a číslá reprezentující jejo prioritu, CNAME obsahují aliasy jmen na jiná jména, NS obsahují jméno autoritativního jmeného serveru pro doménu, PTR ukazují na kanonické jméno, používají se pro reverzní překlad IP adresy, SOA označují autoritatnivní záznamy o dns zoně.

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

Úkol: Pomocí programu nslookup nebo dig najít na OpenDNS serveru 208.67.222.222 jméno a IP adresu mailserveru 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 adesu 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 Windouws 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 popisat alespoň 4 položky v jeho hlavičce.

Úkol: Popsat jednotlivé čásťi 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. Lze ho nainstalovat pomocí přikazů:

apt-get update
apt-get install bind9

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

; dopredny preklad
zone "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 zony 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 zonu local pro podsíť 10.1.L.0 (kde L je poslední číslo z IP adresy fyzického stroje) a v ní nakonfiguruovat alespoň jeden A záznam a jeden CNAME záznam.

Ve Windows je napřed potřeba doinstalovat dns službu. K tomu je zapotřebí k virtuálnímu stroji připojit iso image instalačního cd Windows 2003. To se dá provést v konzoli qemu (přepne se na ni stiskem ctrl+alt+2) pomocí příkazu:

change ide1-cd0 /cesta/k/iso-souboru.iso

Další postup je popsán zde.

Úkol (za 0,75 bodu): Ve Windows vytvořit zonu local pro podsíť 10.1.L.0 (kde L je poslední číslo z IP adresy fyzického stroje) a v ní nakonfiguruovat alespoň jeden A záznam a jeden CNAME záznam.

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: