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.
- port pro naslouchání 53 – používá se pro DNS k naslouchání v dostupných rozhraních.
- Hlavní DNS – definujte svou IP adresu hlavního DNS pro naslouchání dotazu.
- Slave DNS – Definujte svůj Slave DNS, který se používá k synchronizaci informací o naší zóně k rozlišení hostitelů od Master.
- rekurze ne – Pokud je nastaveno na ano, rekurzivní dotazy způsobí, že server zaútočí DDOS.
- Název zóny – Zde definujte název své zóny definovaný jako tecminlocal.com.
- type master – Tento systém byl nakonfigurován pro hlavní server, pro nadcházející slave server to bude slave.
- tecmintlocal.fwd.zone – Tento soubor obsahuje informace o hostiteli pro tuto zónu.
- 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:
- Záhlaví – Zde je uvedeno vše, na co jsme se ptali, a jaký byl výsledek.
- Stav – Stav byl NO ERROR, to znamená, který požadavek dotazu, který jsme odeslali, byl úspěšný bez jakékoli ERROR.
- Otázka – Dotaz, který jsme vytvořili, zde můj dotaz byl masterdns.tecmintlocal.com.
- Odpověď – Požadavek na dotaz byl vyřešen, pokud jsou dostupné informace.
- Oprávnění – odpověď názvových serverů pro doménu a zónu.
- Další – Další informace týkající se jmenných serverů, jako je název hostitele a adresa IP.
- 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ář.