Administrace Unixu (DNS) 1. Konfigurace DNS serveru Důležité pojmy: doména: podstrom v DNS hierarchii. (např. cuni.cz se všemi poddoménami). zóna: jeden uzel v DNS hierarchii. (např. cuni.cz bez poddomén). reverzní doména/zóna: pro překlad z IP adresy na DNS jméno. (např. 168.192.in-addr.arpa) Označení nameserverů: autoritativní nameserver: server odpovědný za data určité zóny. primární nameserver: získává data z konfiguračního souboru. sekundární nameserver: získává data z primárního nameserveru. rekurzivní nameserver: při řešení dotazu prochází DNS hierarchii od kořene. forwarding nameserver: všechny dotazy přeposílá na jiný nameserver (odpovědi většinou ukládá do cache). Každý nameserver může sloužit ve více rolích. Zdroj: http://cs.wikipedia.org/wiki/domain_name_system
2. Konfigurace master dns serveru (bind) Konfigurační soubory a adresáře: /var/named/etc/namedb/named.conf - hlavní konfigurační soubor. /var/named/etc/namedb/master/ - adresář pro ukládání zónových souborů masteru. /var/named/etc/namedb/slave/ - adresář pro ukládání zónových souborů slave. 1. Definovat zónu. > /var/named/etc/named.conf zone myzone.swi { type master; file master/myzone.swi ; 2. Vytvořit zónový soubor > /var/named/master/myzone.swi $TTL 86400 ; 24 hours could have been written as 24h or 1d $ORIGIN myzone.swi. @ IN SOA ns1.myzone.swi. hostmaster.myzone.swi. ( 2009031201 ; serial 3H ; refresh 180 ; retry 1w ; expire 3h ; minimum ) IN NS ns1.myzone.swi. ; authoritative nameservers IN NS ns2.myzone.swi. ; server host definitions ; name ttl rr data ns1 IN A XX.XX.XX.XX ; name server definition alpha IN A XX.XX.XX.XX wwww IN CNAME alpha.myzone.swi. ; www server definition... Formát záznamu: name ttl class rr data 3. Start dns serveru > /etc/rc.conf named_enable= YES
Úkol: Na VPC D si nakonfigurujte primární DNS pro vaši doménu. Jméno domény je libovolné ale pod TLD swi. Pro každé vaše VPC vytvořte v doméně A záznam. 4. Testování a detekce problémů zkontrolovat logy jestli server korektně naběhl ( /var/log/daemon ) ověřit přes netstat nebo lsof jestli server naslouchá na síti dotazem přes program dig $ dig [@<dns server>] [-t <rr>] jmeno Pokud už bind běží lze ho ovládat programem rndc ( /etc/rndc.key a /var/named/etc/rndc.key).
3. Konfigurace slave dns serveru (bind) Definovat zónu. > /var/named/etc/namedb/named.conf zone myzone.swi { type slave; file slave/myzone.swi ; masters { 192.168.56.81; Zónový soubor je automaticky stažen z master DNS, není třeba ho vytvářet. Úkol: Nakonfigurujte slave DNS server pro vaši doménu na VPC B. Ověřte, že se zóna zkopírovala z master serveru a že každá změna v master DNS je okamžitě promítnuta na slave. Jak funguje transfer z masteru na sekundár? AXFR Zone transfer. IXFR Incremental zone transfer. Notify master explicitně upozorní slave, že nastala změna. Manuál bindu: http://www.zytrax.com/books/dns/ Defalutní chování povoluje zone transfer pro libovolný uzel. dig -t axfr domena.swi dig -t ifxr=n domena.swi DNS záznamy jsou sice z principu veřejné, přesto nechceme aby mohl každý vypsat všechny záznamy v doméně. options {... // ban everyone by default allow-transfer { none;... zone "example.com" {... // explicity allow the slave(s) in each zone allow-transfer { XX.XX.XX.XX; Úkol: Zabezpečte své zóny tak, aby pouze slave servery mohly provést transfer zóny.
4. Rekurzivní nameserver Volba v sekci options: allow-recursion { address_match_list specifikuje klienty pro které server funguje jako rekurzivní nameserver. Pro funkčnost rekurzivního nameserveru je potřeba aby měl server specifikované kořenové nameservery. Internetové kořenové servery jsou specifikovány v souboru /var/named/etc/root.hint zone. { type hint; file etc/root.hint ; Úkol: Na VPC R si nakonfigurujte rekurzivní nameserver pro potřebu vašich sítí. To znamená, že by neměl umožňovat rekurzi pro počítače z jiných než z vašich sítí. Zapojení domény TLD swi do DNS hierarchie Problém: Kořenové nameservery neznají naši TLD swi. Řešení: Náš rekurzivní server bude zároveň autoritativní pro doménu swi. zone "swi" { type slave; file "slave/swi.slave"; masters { 172.17.0.2; Na adrese 172.17.0.2 běží primární autoritativní nameserver pro TLD swi, který má povolený zone transafer. Obdobný trik využijeme pokud chce mít pouze lokálně viditelnou doménu. Typicky firma.cz je veřejná doména a hide.firma.cz nebo in.firma.cz je pouze lokálně viditelná doména. Úkol: U cvičícího si zaregistrujte DNS servery pro svou doménu. Nastavte váš rekurzivní DNS server tak, aby dokázal resolvovat i jména z domény swi. Úkol: všechny své VPC nastavte tak aby:
hostname se shodovalo se jménem v DNS. používal se váš rekurzivní nameserver. za resolvovaná jména se automaticky doplňovala vaše doména. Např. Příkaz: ping www fungoval stejně jako ping www.myzone.swi. 5. Forwarding nameserver Dotazy jsou přesměrovány na jiný nameserver. Lze udělat i na úrovni zóny. Options { forward only; forwarders { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ;... ] } zone somezone.tld { type forward; forwarders { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ;... ] } Využití: Využíváme rekurzivní nameserver od ISP a chceme pouze přidat další cache. Využíváme rekurzivní nameserver od ISP a chceme udělat odbočku (naší doménu).
6. Delegace poddomény $ORIGIN myzone.swi. @ IN SOA ns1.myzone.swi. hostmaster.myzone.swi. ( subdomain IN NS ns1.otherzone.swi. IN NS ns.subdomain.myzone.swi. ns.subdomain IN A XX.XX.XX.XX ; GLUE ZAZNAM. V nadřazené doméně vytvoříme NS záznamy pro poddoménu. Pokud nějaký NS záznam se odkazuje na jméno v delegované subdoméně, musíme vytvořit glue záznam. Nevytvářejte glue záznamy zbytečně!! Úkol: Delegujte část své domény svému kolegovi a nastavte DNS servery pro doménu, kterou vám delegoval váš kolega.
7. Reverzní domény Pro adresu U.X.Y.Z je v DNS hledán PTR záznam Z.Y.X.U.in-addr.arpa. Jinak stejně jako dopředná zóna. Pro adresu 192.168.24.66 je v DNS hledán PTR záznam 66.24.168.192.in-addr.arpa. Ukázka reverzní zóny: $ORIGIN 24.168.192.in-addr.arpa. @ IN SOA ns1.myzone.swi. hostmaster.myzone.swi. ( 66 IN PTR jmeno.myzone.swi. V reverzní doméně nemají záznamy typu A smysl. Stejně jako záznamy typu PTR v dopředné doméně!! Úkol: Nakonfigurujte si na VPC D a B reverzní domény pro IP rozsahy, které máte přidělené. Do rekurzivního nameserveru přidejte i domény 168.192.in-addr.arpa, 16.172.in-addr.arpa a 17.172.inaddr.arpa stejný trik jako u domény swi. Jak otestovat funkčnost reverzní domény: host 192.168.24.66 dig -t ptr 66.24.168.192.in-addr.arpa dig -x 192.168.24.66
Problém: Jak delegovat poddoménu pro adresový rozsah např. 192.168.24.64/28? Řešení: Nepěkný ošklivá věc. Pro podsíť 192.168.24.64/28 vytvoříme zónu 64/28.24.168.192.in-addr.arpa. Pro každou adresu v této podsíti vytvoříme alias: XX.24.168.192.in-addr.arpa IN CNAME XX.64/28.24.168.192.in-addr.arpa V doméně 66.24.168.192.in-addr.arpa je tedy nutno vytvořit 14 záznamů. $TTL 2d # 172800 seconds $ORIGIN 24.168.192.IN-ADDR.ARPA. @ IN SOA ns1.myzone.swi. hostmaster.myzone.swi. ( 2009031901 ; serial number 3h ; refresh 15m ; update retry 3w ; expiry 3h ; minimum )... ; definition of our target 192.168.24.64/28 subnet 64/28 IN NS ns1.example.com. 64/28 IN NS ns2.example.com. ; IPs addresses in the subnet - all need to be defined ; except 64 and 79 since they are the subnets ; broadcast and multicast addresses not hosts/nodes 65 IN CNAME 65.64/28 66 IN CNAME 66.64/28 67 IN CNAME 67.64/28... 78 IN CNAME 79.64/28 ; end of 192.168.24.64/28 subnet
8. Load balancing přes DNS Přes více záznamů stejného typu. Bind defalutně vrací záznamy stejného typu v pořadí round-robin. Chování je možno změnit directivou rrset-order v options. 9. Dynamický update zone myzone.swi { allow-update { 127.0.0.1; } } $ nsupdate > server 127.0.0.1 > zone myzone.swi > update add new.myzone.swi 86400 IN A 192.168.0.1 > send Poznámky: Při prvním updatu si bind vytváří journal file (zónový soubor +.jnl ). V OpenBSD ale proces named nemá práva na jeho vytvoření. Pokud chceme ručně editovat dynamicky spravovanou zónu musíme ji nejprve zmrazit ( rndc freeze <zone>) a po editaci opět rozmrazit (rndc unfreeze <zone>). Pro praktické použití je vhodné to doplnit a nějakou formu autentizace. Využití: počítače v síti se mohou zaregistrovat do DNS (většinou ve spolupráci s DHCP serverem). Služby v sítí se mohou zaregistrovat do DNS (záznam typu SRV).
10. Jak v IPv6 Místo A záznamu se pro IPv6 adresy používají AAAA záznamy. Pro reverzní záznamy se používá doména ip6.arpa. Dělení po jednotlivých číslicích + vyhneme se triku, který byl nutný v IPv4 - záznam je poměrně dlouhý. $ORIGIN 8.0.3.0.e.1.8.1.7.0.1.0.0.2.ip6.arpa. 0.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0 PTR www.ksi.ms.mff.cuni.cz. 11. Bezpečnost Komunikační kanály je potřeba kryptograficky zabezpečit. V DNS se používají dva typy: TSIG: Zabezpečení sdíleným klíčem - symetrická kryptografie. (2) a (3). DNSSEC: Digitální podpisy asymetrická kryptografie. (4) a (5).