Vyhledávání na webu

Nastavte Master-Slave DNS Server pomocí nástrojů "Bind" v RHEL/CentOS 6.5


Domain Name Server (DNS) používaný pro překlad názvů na libovolné hostitele. Hlavní servery DNS (Primární server) jsou původní obslužné nástroje pro data zóny a server Slave DNS (Sekundární server) jsou pouze záložní servery, které se používají ke kopírování informací o stejné zóně z hlavní servery. Master Server vyřeší jména pro všechny hostitele, které jsme definovali v zónové databázi, a použije protokol UDP, protože protokoly UDP nikdy nepoužívají potvrzovací proces, zatímco tcp používá potvrzování. Servery DNS také používají protokoly UDP k vyřešení požadavku dotazu co nejdříve.

Jak DNS funguje?

Pochopení DNS může být pro nováčky trochu matoucí. Zde je stručné vysvětlení, jak DNS funguje.

Řekněme, co uděláme, pokud budeme potřebovat přístup k nějaké webové stránce? Stačí do prohlížeče zadat www.google.com a stisknout Enter. Hmm, to je vše, co víme, ale faktem je, jak bolestivě to DNS prochází, když se nás dotazuje. Zatímco zadáváme www.google.com, systém bude hledat www.google.com. Kdykoli zadáme název domény, na konci adresy www.google.com se zobrazí . (tečka), která říká, že se má prohledat kořenový server jmenného prostoru.

Globálně je k vyřešení dotazu k dispozici 13 kořenových serverů. Nejprve, když stiskneme enter jako www.google.com, náš prohlížeč předá požadavek našemu místnímu resolveru, který má záznam o našem hlavním a podřízeném serveru DNS. Pokud nemají informace o takto požadovaném dotazu, předají požadavek doméně nejvyšší úrovně (TLD), pokud TLD řekne neznám požadavek, může to být autoritativní server, který zná vaši požadavek, přepošle na autoritativní servery, zde byla jako adresa 72.36.15.56 definována pouze www.google.com.

Mezitím autoritativní server poskytne odpověď na TLD a TLD předá kořenovému serveru a root poskytne informace prohlížeči, takže prohlížeč uloží požadavek DNS pro budoucí použití. Tento dlouhý proces se tedy vyřeší během milisekund. Pokud požadavek neznají, odpoví jako NXDOMAIN. To znamená, že v databázi zóny nebyl nalezen žádný záznam. Doufám, že vám to pomůže pochopit, jak DNS funguje.

Přečtěte si také: Nastavení serveru mezipaměti DNS v Ubuntu

Moje testovací prostředí

Pro tento článek používám 3 stroje, 2 pro nastavení serveru (master a slave) a 1 pro klienta.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
Balíčky požadavků
bind, bind-utils, bind-chroot
Použité konfigurační soubory
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Port a použité protokoly
53, UDP

Nastavte hlavní server DNS

Nejprve ověřte IP adresu, název hostitele a verzi distribuce hlavního serveru DNS, než budete pokračovat v nastavení.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Jakmile potvrdíte, že výše uvedená nastavení jsou správná, je čas přejít k instalaci požadovaných balíčků.

sudo yum install bind* -y

Instalace a konfigurace Bind

Po instalaci požadovaných balíčků nyní definujte soubory zóny v hlavním konfiguračním souboru ‚named.conf‘.

sudo vim /etc/named.conf

Níže je uveden můj záznam v souboru named.conf, změňte konfigurační soubor podle svých potřeb.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Následuje vysvětlení každé konfigurace, kterou jsme použili ve výše uvedeném souboru.

  1. port pro naslouchání 53 – používá se pro DNS k naslouchání v dostupných rozhraních.
  2. Hlavní DNS – definujte svou IP adresu hlavního DNS pro naslouchání dotazu.
  3. Slave DNS – Definujte svůj Slave DNS, který se používá k synchronizaci informací o naší zóně k rozlišení hostitelů od Master.
  4. rekurze ne – Pokud je nastaveno na ano, rekurzivní dotazy způsobí, že server zaútočí DDOS.
  5. Název zóny – Zde definujte název své zóny definovaný jako tecminlocal.com.
  6. type master – Tento systém byl nakonfigurován pro hlavní server, pro nadcházející slave server to bude slave.
  7. tecmintlocal.fwd.zone – Tento soubor obsahuje informace o hostiteli pro tuto zónu.
  8. allow-update none – Pokud nebude nastavena žádná. nebude používat dynamické DNS (DDNS).

Vytváření souborů hlavní zóny

Nejprve si definujme vstup do zóny dopředného vyhledávání. Zde musíme vytvořit soubory zóny pod názvem toho, co jsme definovali v souboru named.conf, jak je uvedeno níže.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

K vytváření souborů dopředných zón používáme vzorové konfigurační soubory, k tomu musíme zkopírovat vzorové konfigurační soubory.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Po zkopírování konfiguračních souborů nyní upravte tyto soubory zón pomocí editoru vim.

sudo vim /var/named/tecmintlocal.fwd.zone

Před definováním našich informací o hostiteli v souboru dopředné zóny se nejprve rychle podívejte na soubor vzorové zóny.

Toto je moje konfigurace dopředné zóny, připojte níže uvedený záznam a proveďte změny podle svých potřeb.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

Uložte a ukončete soubor pomocí wq!. Po úpravě dopředného vyhledávání to vypadá níže: Použijte TAB k získání slušného formátu v souboru zóny.

Nyní vytvořte soubor zpětného vyhledávání, již jsme vytvořili kopii souboru zpětné smyčky s názvem tecmintlocal.rev.zone. Tento soubor tedy používáme ke konfiguraci našeho zpětného vyhledávání.

sudo vim /var/named/tecmintlocal.rev.zone

Před definováním informací o hostiteli v souboru reverzní zóny se rychle podívejte na ukázkový soubor zpětného vyhledávání, jak je znázorněno níže.

Toto je moje konfigurace reverzní zóny, připojte níže uvedený záznam a proveďte změny podle potřeby.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

Uložte a ukončete soubor pomocí wq!. Po úpravě zpětného vyhledávání to vypadá níže: Použijte TAB k získání slušného formátu v souboru zóny.

Před kontrolou chyb v konfiguraci zkontrolujte skupinové vlastnictví souborů pro dopředné a zpětné vyhledávání.

sudo ls -l /var/named/

Zde vidíme, že oba soubory jsou ve vlastnictví root uživatelů, protože soubory, které vytvoříme z ukázkových souborů, jsou dostupné pod /var/named/. Změňte skupinu na pojmenovanou u obou souborů pomocí následujících příkazů.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Po nastavení správného vlastnictví souborů je znovu ověřte.

sudo ls -l /var/named/

Nyní před spuštěním služby DNS zkontrolujte chyby v souborech zóny. Nejprve zkontrolujte soubor named.conf a poté zkontrolujte soubory ostatních zón.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

Ve výchozím nastavení běžel iptables a náš DNS server je omezen na localhost, pokud chce klient přeložit jméno z našeho DNS serveru, pak musíme povolit příchozí požadavek, k tomu musíme přidat pravidlo pro příchozí iptables pro port 53.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Nyní ověřte, zda byla pravidla správně přidána do řetězce INPUT.

sudo iptables -L INPUT

Dále uložte pravidla a restartujte firewall.

sudo service iptables save
sudo service iptables restart

Spusťte pojmenovanou službu a nastavte ji jako trvalou.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Nakonec otestujte nakonfigurované soubory hlavní zóny DNS (vpřed a vzad) pomocí nástrojů dig & nslookup.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Chladný! nakonfigurovali jsme Master DNS, nyní musíme nastavit Slave DNS Server. Pojďme vpřed k nastavení podřízeného serveru, toto nezabere mnoho času jako hlavní nastavení.

Nastavte podřízený DNS server

Na Slave stroji také musíme nainstalovat stejné balíčky vazeb, jaké jsou uvedeny v Master, takže je nainstalujme pomocí následujícího příkazu.

sudo yum install bind* -y

Otevřete a upravte soubor „named.conf“ pro naši databázi zón a naslouchání portů.

sudo vim /etc/named.conf

Proveďte změny, jak je znázorněno, podle vašich požadavků.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Spusťte službu DNS pomocí.

sudo service named start

Po restartování vazební služby nemusíme definovat informace o zóně jednotlivě, protože náš povolit přenos replikuje informace o zóně z hlavního serveru, jak je znázorněno na obrázku níže.

sudo ls -l /var/named/slaves

Ověřte informace o zóně pomocí příkazu cat.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

Dále otevřete port DNS 53 na iptables, abyste povolili příchozí připojení.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Uložte pravidla iptables a restartujte službu iptables.

sudo service iptables save
sudo service iptables restart

Zajistěte trvalou službu při spouštění systému.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

A je to!. Nyní je čas nakonfigurovat naše klientské počítače a zkontrolovat název hostitele.

Konfigurace klientského počítače

Na straně klienta musíme v nastavení sítě přiřadit položky Primární (192.168.0.200) a Sekundární DNS (192.168.0.201), abychom získali přiřazení názvu hostitele. Chcete-li to provést, spusťte příkaz setup a definujte všechny tyto položky, jak je znázorněno na obrázku.

setup

V opačném případě upravte soubor „/etc/reslov.conf“ a přidejte následující položky.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Nyní ověřte vyhledání IP adresy, názvu hostitele a jmenného serveru.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Nyní zkontrolujte dopředné a zpětné vyhledávání DNS pomocí.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Porozumění výstupu vykopávky:

  1. Záhlaví – Zde je uvedeno vše, na co jsme se ptali, a jaký byl výsledek.
  2. Stav – Stav byl NO ERROR, to znamená, který požadavek dotazu, který jsme odeslali, byl úspěšný bez jakékoli ERROR.
  3. Otázka – Dotaz, který jsme vytvořili, zde můj dotaz byl masterdns.tecmintlocal.com.
  4. Odpověď – Požadavek na dotaz byl vyřešen, pokud jsou dostupné informace.
  5. Oprávnění – odpověď názvových serverů pro doménu a zónu.
  6. Další – Další informace týkající se jmenných serverů, jako je název hostitele a adresa IP.
  7. Doba dotazu – Jak dlouho trvalo vyřešení názvů z výše uvedených serverů.

Nakonec zkontrolujte náš uzel a proveďte ping.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Nakonec je nastavení dokončeno, zde jsme úspěšně nakonfigurovali primární (hlavní) i podřízený (sekundární) server DNS, doufáme, že všichni nastavili bez problémů. Pokud se při nastavování setkáte s nějakým problémem, neváhejte a napište komentář.