Y36SPS: Domain name systém 1. Seznamte se s výchozími místy uložení konfiguračních souborů serveru bind9 v Debianu nejprve provedu update apt-get update pak instalace bind9 apt-get install bind9 po kazde zmene konfigurace provest /etc/init.d/bind9 restart lze pouyit pro start/restar/stop bind9 /etc/init.d/bind9
konfiguracni soubory jsou v /etc/bind/ - konfiguruje se editaci souboru named.conf named.conf.local rndc.key kontrola spravnosti konfigurace (musim byt v adresari, kde je kontrolovany soubor) named-checkconf pokud je chyba, tak se objevi hlaska prikaz pro vyskouseni, zda mi funguje konfigurace DNS nslookup nebo - pokud zadam IP adresu, vrati hostname - pokud zadam hostname, vrati IP adresu lze i postupne nslookup > set type=ns|mx|apod. >
ns = domena, mx = mail
Pred jakoukoli editaci je vhodne si puvodni soubory zazalohovat !!! nastavit resolver server = soubor /etc/resolv.conf zde je ulozena IP adresa, kam se posilaji dotazy cd etc nejprve zrusit systemovou ochranu souboru, tzn. soubor lze po editaci ulozit chattr -i resolv.conf editace souboru v mc > etc najit soubor resolv.conf f4 = edit soubor upravit takto nameserver 127.0.0.1 search privX.fel. u me priv2.fel. = moje SLD - viz bod 5. search = zajisti, aby se vyhledavalo v cele konfigurovane domene, ne jen v domene PC test nslookup lokalhost
= vypise moji IP adresu 127.0.0.1
2. Použijte jediný root-server 192.168.9.100 = konfigurace souboru db.root cd etc/bind/ mc > db.root je vhodne si soubor nejprve zazalohovat!!! f4 = editace pak u zaznamu A. prepsat IP adresu a vse ostatni smazat = zustane pouze . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 192.168.9.100 pokud edituji z jineho prostredi nez v terminalu pres mc, pak je nutno u souboru povolit prava chmod 666
3. Cvičící provozuje na root-serveru doménu .fel. tzn. ze pro me je domena I. radu .fel.
4. Zajděte za cvičícím nahlásit číslo pracoviště, název domény, adresu primárního a sekundárního nameserveru o Váš záznam bude vypadat následovně: # host -t ns priv1.fel priv1.fel name server ns.priv1.fel. priv1.fel name server ns2.priv1.fel. aktualne bych nahlasila a nadale budu pri cvicne konfiguraci take pouzivat cislo pracoviste 2 nazev domeny priv2.fel. primarni server ns.priv2.fel. sekundarni server ns2.priv2.fel. IP pracoviste 192.168.9.165 (= moje aktualni IP adresa, zjistim pres ifconfig) POZN. – od HubneRa Cvicici u sebe musi vyplnit k ns a sn2 ip adresu. Říká se tomu Glue record (lepidlovy zaznam). Trosku to nabourava hiearchii DNS, ponevadz je na nadrazenem serveru uploze jakoby „A“ zaznam pro podrizenou domenu. Ale tak se to proste dela a jinak to delat nejde. kontrola, zda bylo nastaveno # host -t ns priv1.fel pokud je vse OK, pak se vrati vypis viz vyse
5. A(1) Nakonfigurujte SLD doménu .privX.fel., kde X je číslo vašeho pracoviště (1b) SLD domena = second level domain = domena II. radu (domena I. radu je pro mne .fel. – viz bod 3.) budu konfigurovat priv2.fel. POZOR na to, kde je potreba uvadet v konfiguraci tecku za fel!!!
konfigurace souboru named.conf.local - smazat radek include "/etc/bind/zones.rfc1918";
!!!!!!! jinak nemusi fungovat.
- pridat nasledujici zonu zone "priv2.fel" { type master; file "/etc/bind/priv2.fel"; }; v adreari /etc/bind/ vytvorit soubor priv2.fel s pouzitim sablony db.local cd /etc/bind/ cp db.local priv2.fel POZN. Bezne se umistuje konfigurace do /var/named(bind), nebo /var/cache/named(bind). Nekdy také byva recen „prefix“ pro všechny soubory co se v bindu nacitaji. Pak se dava jen nazev souboru a vse je ulozeno tam co říká prefix. editovat soubor priv2.fel do teto podoby ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.priv2.fel. jandora1.fel.cvut.cz. ( (POZOR, na konci jmena musi byt tecka a misto @ je tecka) 20110725001 604800 86400 2419200 604800 ) ; @ IN NS @ IN NS ; ns.priv2.fel.
; Serial (identifikacni cislo to je to co inkrementujeme) ; Refresh (obnovovaci frekvence (v sekundach) ; Retry (opakovane pokusy(v sekundach) ; Expire ( Expirace dat tabulek na sekundarnim serveru) ; Negative Cache TTL
ns.priv2.fel. ns2.priv2.fel. IN
A
ns2.priv2.fel.
IN
A
pc2.priv2.fel.
IN
A
192.168.9.165 (primarni server = moje IP) 192.168.9.200 (sekundarni server = IP kolegy) 192.168.2.2 (= libovolne zvolena IP adresa, ktera bude reprezentovat uvedenou domenu])
NESMI byt prazdne radky, tzn. prazdny radek je nutno zakomentovat strednikem!!! POZOR na prazdny radek na konci – nemel by byt, muze zlobit!!! POZN. Pro ucely zkousky muze byt sekundarni server odstranen. Pak se nevyplnuje ani nahore.
uprava polozky Serial: puvodni 2 uprava 20110725001 = yyyymmddsss (s = serial number) tuto polozku editovat PO KAZDE EDITACI SOUBORU !!! POZN. v radku @ IN NS ns.priv2.fel. musí byt NS, to urcuje typ zaznamu. NS = name server. Ten se urcuje jmenem. Server se jmenuje ns, ale jsou na nej smerovany další domeny jako pop3, imap, www, nejveciborec.priv2.fel. Jmeno se pak dále uvadi jako „A“ zaznam. Existuje ještě hodne dalsich druhu zanamu. Z tech nejhdulezitejsich : MX = Mail eXchange – definice postovniho serveru CNAME = Alias na jmeno. PTR = Reverzni zaznam – z ip umi udelat jmeno. TXT = Textovy zaznam – drive pro poznamky, dnes uz se moc nepouziva. po dokonceni editace upravit Serial: restart bindu po konfiguraci - z rootu /etc/init.d/bind9 restart test nslookup pc2.priv2.fel. = mela by se vratit IP 192.168.2.2 (tecka za "fel" neni nutna, ale takto je prikaz jednoznacny) --- NENI V ZADANI LABORKY, POSTUP UVEDEN JEN PRO PRIKLAD --nakonfigurovat reverzni domenu = k prekladu IP adres zpet na jmena v adresari /etc/bind/ editace souboru named.conf.local= pridat nasledujici zonu zone "9.168.192.in-addr.arpa" { type master; file "/etc/bind/rev.9.168.192.in-addr.arpa"; }; v /etc/bind zalozit novy soubor cp db.local rev.9.168.192.in-addr.arpa nazev muze byt libovolny, ale MUSI byt zachovan konec "in-addr.arpa" pro lepsi prehlednost volim nazev shodny se zonou edit souboru rev.9.168.192.in-addr.arpa obsah prepsat naprosto stejne jako je obsah priv2.fel a zeditovat do teto podoby ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.priv2.fel. jandora1.fel.cvut.cz. ( 20110728001 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire
604800 )
; Negative Cache TTL
; 2.168.192.in-addr.arpa. IN NS 2.168.192.in-addr.arpa. IN NS ; 165 IN PTR ns.priv2.fel. 200 IN PTR ns2.priv2.fel. 2 IN PTR pc2.priv2.fel.
ns.priv2.fel. ns2.priv2.fel.
6. B(1) Nakonfigurujte doménu třetího řádu cokoliv.privX.fel (1b) postup stejny jako u bodu 5., ale s cokoli.priv2.fel vysledek do etc/bind/named.conf.local pridat dalsi zonu zone "cokoli.priv2.fel" { type master; file "/etc/bind/cokoli.priv2.fel"; }; edit souboru cokoli.priv2.fel ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.cokoliv.priv2.fel. jandora1.fel.cvut.cz. ( 20110728001 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.cokoliv.priv2.fel. @ IN NS ns2.cokoliv.priv2.fel. ; ns.cokoliv.priv2.fel. IN A 192.168.9.165 ns2.cokoliv.priv2.fel. IN A 192.168.9.200 pc12.cokoliv.priv2.fel. IN A 192.168.2.12
7. C(1) Nakonfigurujte doménu třetího řádu cokoliv2.privN.fel, kde N je číslo pracoviště vašeho kamaráda (= vyžaduje domluvu s ním) (1b) nakonfiguruji domenu cokoliv2.priv3.fel pridat domenu cokoli2.priv3.fel do named.conf.local zone "cokoliv2.priv3.fel" { type master; file "/etc/bind/cokoliv2.priv3.fel"; };
zalozit soubor cokoliv2.priv3.fel a zeditovat takto ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.cokoliv2.priv3.fel. jandora1.fel.cvut.cz. ( 20110108001 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.cokoliv2.priv3.fel. @ IN NS ns2.cokoliv2.priv3.fel. ; ns.cokoliv2.priv3.fel. IN A 192.168.9.165 ns2.cokoliv2.priv3.fel. IN A 192.168.9.200 pc3.cokoliv2.priv3.fel. IN A 192.168.2.3 pokud moji domenu cokoliv2.priv2.fel spravuje nekdo jiny, pak musim zeditovat soubor priv2.fel takto kolega musi svuj soubor priv3.fel zeditovat takto: ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.priv3.fel. hordos.fel.cvut.cz. ( 20110801007 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.priv3.fel. @ IN NS ns2.priv3.fel. cokoliv2.priv3.fel. IN NS ns.cokoliv2.priv3.fel. cokoliv2.priv3.fel. IN NS ns2.cokoliv2.priv3.fel. ; ns.priv3.fel. IN A 192.168.9.160 ns2.priv3.fel. IN A 192.168.9.165 mine.priv3.fel. IN A 192.168.9.115 ns.cokoliv2.priv3.fel. IN A 192.168.9.165 (spravovani domeny kamarada je na moji IP) ns2.cokoliv2.priv3.fel. IN A 192.168.9.160 (zaloha je na IP kamarada)
8. V obou doménách použijte jako primární server váš server, jako sekundární server vašeho kamaráda zonu v named.conf.local zeditovat takto zone "priv2.fel" { type master; file "/etc/bind/priv2.fel"; allow-transfer { 192.168.9.200; }; }; zone "priv1.fel" { type slave; file "/var/lib/bind/priv1.fel"; masters { 192.168.9.200; }; }; test nslookup ns.priv1.fel pokud je spravne, pak vrati IP adresu kontrola pohybu tail /var/log/syslog NEBO v adresari /var/lib/bind se vytvori soubor priv1.fel
9. Pro obě domény nakonfigurujte slave server na serveru vašeho kamaráda konfigurace pro domenu cokoli.priv2.fel – pro jakoukoli jinou by to bylo obdobne edit souboru named.conf.local takto zone "cokoliv.priv2.fel" { type master; file "/etc/bind/cokoliv.priv2.fel"; allow-transfer { 192.168.9.160; }; }; zone "cokoliv.priv3.fel" { type slave; file "/var/lib/bind/priv3.fel"; masters { 192.168.9.160; }; };
10. Nasměrujte MX záznam pro doručování pošty pro doménu privX.fel na váš hostitel (ns.privX.fel) edit souboru priv2.fel takto
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.priv2.fel. jandora1.fel.cvut.cz. ( 20110802008 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.priv2.fel. @ IN NS ns2.priv2.fel. cokoliv2.priv2.fel. IN NS ns.cokoliv2.priv2.fel. cokoliv2.priv2.fel. IN NS ns2.cokoliv2.priv2.fel. ; ns.priv2.fel. IN A 192.168.9.165 ns2.priv2.fel. IN A 192.168.9.200 pc2.priv2.fel. IN A 192.168.2.2 ns.cokoliv2.priv2.fel. IN A 192.168.9.200 ns2.cokoliv2.priv2.fel. IN A 192.168.9.165 ; @ IN MX 10 ns.priv2.fel. test - vrati zaznam o nastaveni MX nslookup > set type=mx > priv2.fel. zpet = exit
11. D(3) Nasměrujte záložní MX záznam pro doručování pošty pro doménu privX.fel na hostitel vašeho kamaráda (ns2.privX.fel) (tato a předchozí úloha celkem 3b, pokud vše je správně, jinak 0) edit souboru priv2.fel takto ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.priv2.fel. jandora1.fel.cvut.cz. ( 20110801007 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.priv2.fel. @ IN NS ns2.priv2.fel. cokoliv2.priv2.fel. IN NS ns.cokoliv2.priv2.fel. cokoliv2.priv2.fel. IN NS ns2.cokoliv2.priv2.fel. ; ns.priv2.fel. IN A 192.168.9.165
ns2.priv2.fel. pc2.priv2.fel. ns.cokoliv2.priv2.fel. ns2.cokoliv2.priv2.fel. ; @ IN MX 10 @ IN MX 20
IN IN IN IN
A A A A
192.168.9.200 192.168.2.2 192.168.9.200 192.168.9.165
ns.priv2.fel. ns2.priv2.fel.
Cim vyssi cislo (10, 20,...) tim mensi priorita. Mail serveru muze byt nekolik.
12. E(1) Nastavte A záznam v doméně cokoliv.privX.fel pro váš host (jméno JA) i host vašeho kamaráda (jméno ON) (1b) edit souboru cokoliv.priv2.fel ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.cokoliv.priv2.fel. jandora1.fel.cvut.cz. ( 20110802003 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.cokoliv.priv2.fel. @ IN NS ns2.cokoliv.priv2.fel. ; ns.cokoliv.priv2.fel. IN A 192.168.9.165 ns2.cokoliv.priv2.fel. IN A 192.168.9.200 pc12.cokoliv.priv2.fel. IN A 192.168.2.12 JA IN A 192.168.9.165 ON IN A 192.168.9.200
13. Zablokujte možnost AXFR přenosu jiným hostitelům než vašemu sekundárnímu DNS a root serveru (cvičící) (1b) AXFR = zonove prenosy zeditovat soubor named.conf takto: zone "priv2.fel" { type master; file "/etc/bind/priv2.fel"; allow-transfer { 192.168.9.200; 192.168.9.100; localhost; }; }; Adresu je mozna lepsi zada i s maskou .../32 znaci ze jde o jednu adresu. Vice adres se oddeluje strednikem.
14. Umožněte cvičícímu použít Váš DNS server z ip 192.168.9.100 (resolving i AXFR) (pokud to nejede, celkem 0b) POZN. Nechapu co mysli resolving, Pravdepodobne provadeni rekrusivnich dotazu. Pak je potreba do globalni konfigurace bindu pridat : allow-recursion { 172.16.0.0/12; 192.168.1.0/24; localhost; }; pripadne jeste allow-query { 172.16.0.0/12; 192.168.1.0/24; localhost; }; IP adresy nastavit podle konkretni site. Kopiruju to z meho DNS serveru. edit souboru named.conf.options = pridat posledni dva radky options { directory "/var/cache/bind"; // ... // }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-recursion { 192.168.9.100/32; localhost; }; allow-query { 192.168.9.100/32; localhost; }; };
15. Zajistěte synchronizaci se serverem kamaráda, tzn použití jeho serveru dává stejné výsledky (3b) Odzkouseno prubezne.
16. Ověřte funkčnost konfigurace Odzkouseno prubezne.
Bonusové body: 50min - 2b 65min - 1b >75min - 0b
F1 - Help Pro běh testovacího skriptu Cvičícímu budete muset nahlásit číslo svého pracoviště - to je pořadové číslo počítače od 1 do 20, 1 je PC nejblíže cvičícímu (cvičící má PC 0), 20 je pracoviště nejblíže dveřím. Číslování jde od okna směrem ke zdi po řádcích. Dále musíte k číslu pracoviště nahlásit IP adresu, tu zjistíte příkazem ifconfig -a Testovací skript je _hodně_ benevolentní a ověřený, že jeho výstup vede ke spokojenosti studentů. Je bohužel pomalejší, protože pokud testovaná věc není OK, trvá timeout až několik vteřin.
BIND Pro start/stop/restart bindu použijte Debian skript: /etc/init.d/bind9 <start|stop|restart|reload> Log bindu na Debianu je uložen v souboru /var/log/daemon.log.. Bind je velice náchylný na chyby v konfiguráku, nenechte se napálit chybějícím středníkem či složenou závorkou.