{"id":1713,"date":"2017-08-06T15:11:29","date_gmt":"2017-08-06T13:11:29","guid":{"rendered":"http:\/\/miroslaw.borodziuk.eu\/?p=1713"},"modified":"2017-08-08T22:20:59","modified_gmt":"2017-08-08T20:20:59","slug":"serwer-dns-bind","status":"publish","type":"post","link":"http:\/\/miro.borodziuk.eu\/index.php\/2017\/08\/06\/serwer-dns-bind\/","title":{"rendered":"Serwer DNS Bind"},"content":{"rendered":"<p>Domain Name System\u00a0 (DNS) to drzewiasta struktura, kt\u00f3ra jest w Internecie standardowym rozwi\u0105zaniem do t\u0142umaczenia nazw domenowych na adresy IP host\u00f3w. Rozpoznawanie nazw (name resolution) to proces, kt\u00f3ry wykonuje serwer DNS. Rozpoznawanie nazw naprz\u00f3d (forward name resolution) to ustalanie adresu IP na podstawie nazwy domenowej , rozpoznawanie nazw od ty\u0142u (reverse name resolution) to ustalanie nazwy domenowej na podstawie adresu IP.\u00a0 DNS jest us\u0142ug\u0105 niezale\u017cn\u0105 od platformy i wspieran\u0105 przez ka\u017cdy system operacyjny.<\/p>\n<p><!--more--><\/p>\n<p>Przestrze\u0144 adresowa DNS (DNS name space) to hierarchiczna struktura wszystkich domen w Internecie. Korze\u0144 przestrzeni adresowej reprezentowany jest przez kropk\u0119. Poni\u017cej korzenia znajduj\u0105 si\u0119 domeny najwy\u017cszego poziomu (top-level domains &#8211; TLDs), takie jak .pl, .eu, .com czy .net.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1719 aligncenter\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/dns-300x106.jpg\" alt=\"\" width=\"552\" height=\"195\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/dns-300x106.jpg 300w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/dns.jpg 685w\" sizes=\"(max-width: 552px) 100vw, 552px\" \/><\/p>\n<p>Domeny najwy\u017cszego poziomu mog\u0105 zawiera\u0107 domeny drugiego poziomu (second level domains) takie jak np. linux.pl. P\u00f3\u017aniej domeny mog\u0105 by\u0107 trzeciego poziomu jak np. news.linux.pl. Pe\u0142na nazwa domenowa hosta to FQDN (Fully Qualified Domain Name). Dzielenie domen na pod-domeny pozwala na zarz\u0105dzanie nimi przez inne grupy administrator\u00f3w. Taka po-domena musi zosta\u0144 zarejestrowana przez akredytowanego rejestratora domen, licencjonowanego przez <i>Internet <\/i><i>Corporation for Assigned Names and Numbers <\/i>(ICANN).<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Root serwery DNS.<\/span><\/p>\n<p>Na szczycie hierarchii DNS znajduj\u0105 si\u0119 root serwery, kt\u00f3re s\u0105 zarz\u0105dzane przez r\u00f3\u017cne organizacje autoryzowane przez ICANN. Aktualnie jest trzyna\u015bcie dzia\u0142aj\u0105cych root serwer\u00f3w z pewn\u0105 ilo\u015bci\u0105 mirror\u00f3w, kt\u00f3re maj\u0105 odci\u0105\u017ca\u0107 root serwery.\u00a0 Lista root serwer\u00f3w znajduje si\u0119 w pliku <code>\/var\/named\/named.ca<\/code>, nale\u017c\u0105cym do pakietu <em>bind<\/em>.<\/p>\n<pre class=\"lang:sh decode:true\">a.root-servers.net. 198.41.0.4\r\nb.root-servers.net. 192.228.79.201\r\nc.root-servers.net. 192.33.4.12\r\nd.root-servers.net. 199.7.91.13\r\ne.root-servers.net. 192.203.230.10\r\nf.root-servers.net. 192.5.5.241\r\ng.root-servers.net. 192.112.36.4\r\nh.root-servers.net. 128.63.2.53\r\ni.root-servers.net. 192.36.148.17\r\nj.root-servers.net. 192.58.128.30\r\nk.root-servers.net. 193.0.14.129\r\nl.root-servers.net. 199.7.83.42\r\nm.root-servers.net. 202.12.27.33<\/pre>\n<p>Root serwery obs\u0142uguj\u0105 zapytania tylko dla domen najwy\u017cszego poziomu i dostarczaj\u0105 klientom adresy IP serwer\u00f3w odpowiedzialnych za dane domeny TLD.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Role jakie mog\u0105 pe\u0142ni\u0107 hosty w zwi\u0105zku DNS.<\/span><\/p>\n<p>Podstawowy serwer DNS &#8211; primary DNS server.\u00a0 Ma zwierzchni\u0105 rol\u0119 w domenie, utrzymuje oryginalne dane domeny.<\/p>\n<p>Zapasowy serwer DNS &#8211; secondary DNS server. R\u00f3wnie\u017c ma zwierzchni\u0105 rol\u0119 w domenie jednak jego dane s\u0105 kopiowane z serwera podstawowego. Taki serwer uruchamiany jest dla redundancji lub odci\u0105\u017cenia serwera podstawowego.<\/p>\n<p>Cachuj\u0105cy serwer DNS &#8211; <i>caching DNS<\/i> server. Nie odgrywa zwierzchniej roli w domenie, jego dane kopiowane s\u0105 z serwera podstawowego lub zapasowego i caschowane w pami\u0119ci operacyjnej.<i> <\/i><\/p>\n<p>Forwarduj\u0105cy serwer DNS &#8211; <em>forward<\/em><i>ing DNS<\/i> server. Nie odgrywa zwierzchniej roli w domenie, przekazuje przychodz\u0105ce zapytania od klient\u00f3w do okre\u015blonego serwera DNS.<\/p>\n<p>Klient DNS &#8211; dns client. Host, kt\u00f3ry korzysta z serwer\u00f3w DNS do rozpoznawania nazw domenowych.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Typy konfiguracji serwer\u00f3w nazw.<\/span><\/p>\n<ul>\n<li>Autorytatywny (<em>authoritative<\/em>) &#8211; zazwyczaj podstawowy lub zapasowy serwer DNS, kt\u00f3ry udziela odpowiedzi na wysy\u0142ane przez klient\u00f3w zapytania DNS odno\u015bnie jego domeny.<\/li>\n<li>Rekursywny (<em>recursive<\/em>) &#8211; zazwyczaj serwer cachuj\u0105cy, kt\u00f3ry jest w stanie odpyta\u0107 dost\u0119pny dla\u00a0 niego serwer DNS aby rozwi\u0105za\u0107 nazw\u0119 domenow\u0105, kt\u00f3rej jeszcze nie ma jeszcze w cache&#8217;u.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Strefy DNS i pliki stref.<\/span><\/p>\n<p>Przestrze\u0144 adresowa, kt\u00f3r\u0105 zarz\u0105dza dany serwer DNS nazywana jest stref\u0105, a pliki z danymi nazywane s\u0105 plikami stref lub baz\u0105 danych strefy. Pliki stref zawieraj\u0105 dyrektywy i rekordy zasob\u00f3w. Dyrektywy kontroluj\u0105 zachowanie serwera DNS i instruuj\u0105 jak przeprowadza\u0107 okre\u015blone zadania lub stosowa\u0107 ustawienia specjalne dla strefy. Rekordy zasob\u00f3w opisuj\u0105 limity strefy i maj\u0105 zastosowanie dla indywidualnych host\u00f3w lub podmiot\u00f3w. Dyrektywy w pliku strefy zaczynaj\u0105 si\u0119 od znaku $, np. $INCLUDE (dodanie dodatkowego pliku strefy), $ORIGIN (dodanie nazwy domeny do prostej nazwy hosta) i $TTL (domy\u015blna wa\u017cno\u015b\u0107 ustawie\u0144 strefy w sekundach). Rekordy zasob\u00f3w przedstawia tabela poni\u017cej.<\/p>\n<table style=\"width: 767.683px;\">\n<tbody>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #808080;\">Rekord<\/span><\/td>\n<td style=\"width: 659.683px;\"><span style=\"color: #808080;\">Opis<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #008000;\">A lub AAAA<\/span><\/td>\n<td style=\"width: 659.683px;\">Rekord adresu, okre\u015bla adres IPv4 lub IPv6 jaki ma by\u0107 mapowany dla nazwy hosta.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #008000;\">CNAME<\/span><\/td>\n<td style=\"width: 659.683px;\">Rekord nazwy kanonicznej (canonical name), przyporz\u0105dkowuje alias dla nazwy rzeczywistej.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #008000;\">MX<\/span><\/td>\n<td style=\"width: 659.683px;\">Rekord poczty. Wskazuje na list\u0119 serwer\u00f3w poczty obs\u0142uguj\u0105cych dan\u0105 domen\u0119.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #008000;\">NS<\/span><\/td>\n<td style=\"width: 659.683px;\">Rekord serwera nazw. Okre\u015bla nazw\u0119 autorytatywnego serwera nazw.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #008000;\">PTR<\/span><\/td>\n<td style=\"width: 659.683px;\">Rekord wska\u017anika. Wskazuje na r\u00f3\u017cne lokalizacje w przestrzeni nazw. Zazwyczaj jest u\u017cywany dla reverse DNS.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 90px;\"><span style=\"color: #008000;\">SOA<\/span><\/td>\n<td style=\"width: 659.683px;\">Rekord Start Of Authority. Definiuje kluczowy autorytatyene dane takie\u00a0 jak podstawowy serwer DNS, adres email administratora oraz:<\/p>\n<p><em>Serial<\/em> &#8211; ile razy pliku strefy by\u0142 aktualizowany.<\/p>\n<p><em>Refresh<\/em> &#8211; czas po jaki zapasowe serwery DNS b\u0119d\u0105 pobiera\u0107 aktualizacj\u0119 strefy.<\/p>\n<p><em>Retry<\/em> &#8211; czas przez jaki zapasowe serwery b\u0119d\u0105 czeka\u0107 przed ponownym pobraniem aktualizacji strefy.<\/p>\n<p><em>Expiry<\/em> &#8211; czas po jakim zapasowe serwery ustawi\u0105 stref\u0119 jako nie autorytatywn\u0105 je\u017celi nie mog\u0105 skontaktowa\u0107 si\u0119 z podstawowym serwerem nazw.<\/p>\n<p><em>Minimum<\/em> &#8211; czas przez jaki serwery nazw cashuj\u0105 dane strefy.<\/p>\n<p>Warto\u015bci mog\u0105 by\u0107 podane w sekundach (domy\u015blne), minutach (M), godzinach (H), dniach (D) lub tygodniach (W). Znakiem komentarza jest \u015brednik ;. Domena na samym pocz\u0105tku wskazuje na domen\u0119, kt\u00f3ra jest w\u0142a\u015bcicielem strefy. Znak @ wskazuje na warto\u015b\u0107 zmiennej $ORIGIN. IN przed SOA wskazuje na rekord Internet.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Przyk\u0142adowy plik strefy:<\/p>\n<pre class=\"lang:sh decode:true\">$TTL 86400                                         [24h, czas trzymania danych w cachu]\r\n$ORIGIN example.com                                [Nazwa domeny] \r\n@ IN SOA server1.example.com. root.examle.com. (   [Znak @ zast\u0119puj\u0119 nazw\u0119 domeny]\r\n0 ;  serial                                        [0 aktualizacji tego pliku]\r\n1D;  refresh                                       \r\n1H ; retry\r\n1W ; expire\r\n3H); minimum\r\n           IN    NS       server1.example.com.     [Nazwa serwera DNS]\r\nserver1    IN    A        192.168.0.110            [IP serwera DNS]\r\n           IN    MX   8   server1.example.com.     [Serwer poczty dla domeny. Im mniejsza liczba MX tym wi\u0119kszy priorytet]\r\n\r\nserver1    IN    A        192.168.0.110            [IP serwera poczty]\r\n           IN    MX   9   server2.example.com.     [Nazwa drugiego serwera poczty]\r\nserver2    IN    A        192.168.0.120            [IP drugiego serwera poczty]<\/pre>\n<p>Wszystkie pliki strefy s\u0105 utrzymywane na podstawowym serwerze DNS.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Domy\u015blny plik konfiguracyjny<code> \/etc\/named.conf<\/code>.<\/span><\/p>\n<pre class=\"lang:sh decode:true\">options {\r\nlisten-on port 53 { 127.0.0.1; };                          \/\/ Port i IP, na kt\u00f3rym nas\u0142uchuje serwer\r\nlisten-on-v6 port 53 { ::1; };\r\ndirectory \"\/var\/named\";                                    \/\/ Katalog, w kt\u00f3rym uruchomiany jest named\r\ndump-file \"\/var\/named\/data\/cache_dump.db\";                 \/\/ Po\u0142o\u017cenie pliku z cache.\r\nstatistics-file \"\/var\/named\/data\/named_stats.txt\";         \/\/ Po\u0142o\u017cenie pliku ze statystykami\r\nmemstatistics-file \"\/var\/named\/data\/named_mem_stats.txt\";  \/\/ Plik ze statystykami zu\u017cycia pami\u0119ci.\r\nallow-query { localhost; };                                \/\/ Lista host\u00f3w, kt\u00f3re mo\u017ce obs\u0142ugiwa\u0107 serwer.\r\n\r\nrecursion yes;                                             \/\/ Serwer b\u0119dzie pracowa\u0142 jako serwer rekursywny.\r\n\r\ndnssec-enable yes;                                         \/\/ Dyrektywa zwi\u0105zana z bezpiecze\u0144stwem DNS.\r\ndnssec-validation yes;                                     \/\/ Dyrektywa zwi\u0105zana z bezpiecze\u0144stwem DNS.\r\n\r\n\/* Path to ISC DLV key *\/\r\nbindkeys-file \"\/etc\/named.iscdlv.key\";\r\n\r\nmanaged-keys-directory \"\/var\/named\/dynamic\";\r\n\r\npid-file \"\/run\/named\/named.pid\";\r\nsession-keyfile \"\/run\/named\/session.key\";\r\n};\r\n\r\nlogging {\r\nchannel default_debug {\r\nfile \"data\/named.run\";\r\nseverity dynamic;\r\n};\r\n};\r\n\r\nzone \".\" IN {\r\ntype hint;\r\nfile \"named.ca\";\r\n};\r\n\r\ninclude \"\/etc\/named.rfc1912.zones\";                      \/\/ Plik strefy.\r\ninclude \"\/etc\/named.root.key\";<\/pre>\n<p>Plik domy\u015blnie skonfigurowany jest dla serwera DNS cache-only. Komentarze w tym pliku zaczynaj\u0105 si\u0119 od znak\u00f3w \/\/ lub mog\u0105 by\u0107 w bloku \/* *\/ tak jak w j\u0119zyku C\/C++. Opcje globalne definiowane s\u0105 w sekcji options,\u00a0 opcje indywidualnego poziomu definiowane s\u0105 wewn\u0105trz sekcji zone. Opcje indywidualnych stref nadpisuj\u0105 opcje globalne.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Domy\u015blny plik strefy <\/span><code><span style=\"color: #3366ff;\">\/etc\/named.rfc1912.zones.<\/span><\/code><\/p>\n<p>Domy\u015blnie plik ten dostarcza tylko stref\u0119 dla lokalhosta. Ka\u017cdy blok w tym pliku wskazuje na odpowiedni plik strefy w katalogu<code> \/var\/named<\/code>: <code>named.empty, named.localhost<\/code> oraz<code> named.loopback<\/code>.<\/p>\n<pre class=\"lang:sh decode:true\">zone \"localhost.localdomain\" IN {\r\ntype master;\r\nfile \"named.localhost\";\r\nallow-update { none; };\r\n};\r\n\r\nzone \"localhost\" IN {\r\ntype master;\r\nfile \"named.localhost\";\r\nallow-update { none; };\r\n};\r\n\r\nzone \"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa\" IN {\r\ntype master;\r\nfile \"named.loopback\";\r\nallow-update { none; };\r\n};\r\n\r\nzone \"1.0.0.127.in-addr.arpa\" IN {\r\ntype master;\r\nfile \"named.loopback\";\r\nallow-update { none; };\r\n};\r\n\r\nzone \"0.in-addr.arpa\" IN {\r\ntype master;\r\nfile \"named.empty\";\r\nallow-update { none; };\r\n};<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Pakiety i logi w RHEL zwi\u0105zane z BIND.<\/span><\/p>\n<ul>\n<li><span style=\"color: #008000;\">bind<\/span> &#8211; oprogramowanie do konfiguracji serwera DNS.<\/li>\n<li><span style=\"color: #008000;\">bind-libs<\/span> &#8211; biblioteki dla binda.<\/li>\n<li><span style=\"color: #008000;\">bind-utils<\/span> &#8211; zawiera takie narz\u0119dzia resolvera jak <em>dig<\/em>, <em>host<\/em> czy <em>nslookup<\/em>.<\/li>\n<\/ul>\n<p>Wszystkie komunikaty zwi\u0105zane z bindem logowane s\u0105 do pliku <code>\/var\/log\/messages<\/code>.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Bind a SELinux.<\/span><\/p>\n<p>Typ SELinux zwi\u0105zany z portem DNS to<em> dns_port_t<\/em> :<\/p>\n<pre class=\"lang:sh decode:true \"># semanage port \u2013l | grep dns_\r\ndns_port_t tcp 53\r\ndns_port_t udp 53<\/pre>\n<p>Zmienne boolean SELinux:<\/p>\n<pre class=\"lang:sh decode:true\"># getsebool \u2013a | grep ^named\r\nnamed_tcp_bind_http_port --&gt; off\r\nnamed_write_master_zones --&gt; off<\/pre>\n<p>Zmienna<em> named_tcp_bind_http_port<\/em> okre\u015bla czy named mo\u017ce wykorzystywa\u0107 port http.\u00a0 Zmienna <em>named_write_master_zones<\/em> okre\u015bla czy named mo\u017ce modyfikowa\u0107 stref\u0119 master.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Konfiguracja serwera DNS cache-only.<\/span><\/p>\n<p>1. Instalacja pakietu <em>bind<\/em> i <em>bind-utils<\/em>.<\/p>\n<pre class=\"lang:sh decode:true \"># yum \u2013y install bind bind-utils<\/pre>\n<p>2. Edycja pliku <code>named.conf<\/code> i modyfikacja poni\u017cszych dyrektyw. Pozosta\u0142e dyrektywy zostawiamy niezmienione.<\/p>\n<pre class=\"lang:sh decode:true \">options {\r\n   listen-on port 53  { any; }; \r\n   allow-query        { any; };\r\n   dnssec-enable      no;\r\n   dnssec-validation  no;\r\n   recursion          yes;\r\n}<\/pre>\n<p>3. Sprawdzenie poprawno\u015bci sk\u0142adni pliku <code>named.conf<\/code>.<\/p>\n<pre class=\"lang:sh decode:true \"># named-checkconf<\/pre>\n<p>4. Autostart i start binda.<\/p>\n<pre class=\"lang:sh decode:true \"># systemctl enable named\r\n# systemctl start named<\/pre>\n<p>5. Odblokowanie us\u0142ugi DNS na firewallu.<\/p>\n<pre class=\"lang:sh decode:true \"># firewall-cmd --permanent --add-service dns\r\n# firewall-cmd --reload<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Domain Name System\u00a0 (DNS) to drzewiasta struktura, kt\u00f3ra jest w Internecie standardowym rozwi\u0105zaniem do t\u0142umaczenia nazw domenowych na adresy IP host\u00f3w. Rozpoznawanie nazw (name resolution) to proces, kt\u00f3ry wykonuje serwer DNS. Rozpoznawanie nazw naprz\u00f3d (forward name resolution) to ustalanie adresu IP na podstawie nazwy domenowej , rozpoznawanie nazw od ty\u0142u (reverse name resolution) to ustalanie &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/miro.borodziuk.eu\/index.php\/2017\/08\/06\/serwer-dns-bind\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Serwer DNS Bind&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1715,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[],"_links":{"self":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/1713"}],"collection":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/comments?post=1713"}],"version-history":[{"count":31,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/1713\/revisions"}],"predecessor-version":[{"id":1748,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/1713\/revisions\/1748"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media\/1715"}],"wp:attachment":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/categories?post=1713"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/tags?post=1713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}