Skonfiguruj serwer DNS Master-Slave za pomocą narzędzi „Bind” w RHEL/CentOS 6.5
Serwer nazw domen (DNS) używany do rozpoznawania nazw dla dowolnych hostów. Główne serwery DNS (Serwer podstawowy) to oryginalne procedury obsługi danych strefy, a podrzędny serwer DNS (Serwer dodatkowy) to tylko serwery zapasowe, które są używane do kopiowania tych samych informacji o strefie z serwery główne. Master Server rozpozna nazwy wszystkich hostów, które zdefiniowaliśmy w bazie danych strefy i użyje protokołu UDP, ponieważ protokoły UDP nigdy nie korzystają z procesu potwierdzenia, podczas gdy tcp używa potwierdzenia. Serwery DNS również korzystają z protokołów UDP, aby jak najszybciej rozwiązać żądanie zapytania.
Jak działa DNS?
Zrozumienie DNS może być nieco mylące dla początkujących. Oto krótkie wyjaśnienie działania DNS.
Załóżmy, że jeśli będziemy musieli uzyskać dostęp do dowolnej strony internetowej, co zrobimy? Po prostu wpisz www.google.com w przeglądarce i naciśnij Enter. Hmm, to wszystko, co wiemy, ale faktem jest, jak ból przechodzi przez to DNS, gdy o nas pyta. Gdy wpiszemy www.google.com, system wyszuka www.google.com. Za każdym razem, gdy wpisujemy nazwę domeny, na końcu www.google.com pojawia się . (kropka), która mówi, aby przeszukać serwer główny przestrzeni nazw.
Na całym świecie dostępnych jest 13 serwerów głównych, na których można rozwiązać zapytanie. Na początku, gdy naciśniemy Enter jako www.google.com, nasza przeglądarka przekaże żądanie do naszego lokalnego programu rozpoznawania nazw, który zawiera wpis o informacjach o naszym głównym i podrzędnym serwerze DNS. Jeśli nie mają informacji na temat żądanego zapytania, przekażą żądanie do domeny najwyższego poziomu (TLD), jeśli TLD powie, że nie znam żądania, może to być autorytatywny serwer, zna Twoje żądanie, przekaże je na autorytatywne serwery, tutaj tylko www.google.com został zdefiniowany jako adres 72.36.15.56.
W międzyczasie autorytatywny serwer przekaże odpowiedź TLD, a TLD zostanie przekazana do serwera root, a root przekaże informacje przeglądarce, w związku z czym przeglądarka będzie buforować żądanie DNS do wykorzystania w przyszłości. Zatem te długie procesy zostaną rozwiązane w ciągu milisekund. Jeśli nie znają żądania, odpowiedzą jako NXDOMAIN. Oznacza to, że w bazie danych Zone nie znaleziono żadnych rekordów. Mamy nadzieję, że dzięki temu zrozumiesz, jak działa DNS.
Przeczytaj także: Skonfiguruj serwer pamięci podręcznej DNS w systemie Ubuntu
Moje środowisko testowe
W tym artykule używam 3 maszyn, 2 do konfiguracji serwera (master i slave) i 1 do 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
Pakiety wymagań
bind, bind-utils, bind-chroot
Używane pliki konfiguracyjne
config file : /etc/named.conf
script file : /etc/init.d/named
Używane porty i protokoły
53, UDP
Skonfiguruj główny serwer DNS
Najpierw sprawdź adres IP, nazwę hosta i wersję dystrybucji głównego serwera DNS, zanim przejdziesz do konfiguracji.
sudo ifconfig | grep inet
hostname
cat /etc/redhat-release
Po potwierdzeniu, że powyższe ustawienia są prawidłowe, czas przejść dalej i zainstalować wymagane pakiety.
sudo yum install bind* -y
Instalacja i konfiguracja Bindu
Po zainstalowaniu wymaganych pakietów zdefiniuj teraz pliki stref w głównym pliku konfiguracyjnym „named.conf”.
sudo vim /etc/named.conf
Poniżej znajduje się mój wpis w pliku named.conf. Zmień plik konfiguracyjny zgodnie ze swoimi potrzebami.
//
// 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";
Poniżej znajduje się wyjaśnienie każdej konfiguracji, której użyliśmy w powyższym pliku.
- port nasłuchiwania 53 – używany przez DNS do nasłuchiwania w dostępnych interfejsach.
- Główny DNS – zdefiniuj swój główny adres IP DNS, na którym chcesz odsłuchiwać zapytanie.
- Slave DNS – zdefiniuj swój Slave DNS, który jest używany do synchronizowania informacji o naszej strefie w celu rozpoznania hostów z Master.
- rekurencja nie – jeśli jest ustawiona na tak, zapytania rekurencyjne spowodują atak DDOS na serwerze.
- Nazwa strefy – zdefiniuj tutaj nazwę swojej strefy, zdefiniowaną jako tecminlocal.com.
- wpisz master – ponieważ ten system został skonfigurowany dla serwera głównego, w przypadku przyszłego serwera podrzędnego będzie to serwer podrzędny.
- tecmintlocal.fwd.zone – ten plik zawiera informacje o hoście dla tej strefy.
- zezwól na brak aktualizacji – jeśli żadna nie zostanie ustawiona. nie będzie używać dynamicznego DNS (DDNS).
Tworzenie plików strefy głównej
Na początek zdefiniujmy wejście do strefy wyszukiwania do przodu. Tutaj musimy utworzyć pliki strefy w nazwie, którą zdefiniowaliśmy w pliku named.conf, jak poniżej.
tecmintlocal.fwd.zone
tecmintlocal.rev.zone
Do tworzenia plików strefy forward używamy przykładowych plików konfiguracyjnych, w tym celu musimy skopiować przykładowe pliki konfiguracyjne.
sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone
Kiedyś skopiowałeś pliki konfiguracyjne, teraz edytuj te pliki stref za pomocą edytora vim.
sudo vim /var/named/tecmintlocal.fwd.zone
Przed zdefiniowaniem informacji o naszym hoście w pliku strefy przesyłania, najpierw rzuć okiem na przykładowy plik strefy.
To jest moja konfiguracja strefy forwardowej. Dołącz poniższy wpis i wprowadź zmiany zgodnie ze swoimi potrzebami.
$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
Zapisz i zamknij plik za pomocą wq!. Po edycji wyszukiwania do przodu wygląda to jak poniżej: Użyj TAB, aby uzyskać przyzwoity format w pliku strefy.
Teraz utwórz plik wyszukiwania wstecznego, utworzyliśmy już kopię pliku pętli zwrotnej w nazwie tecmintlocal.rev.zone. Dlatego używamy tego pliku do skonfigurowania wyszukiwania wstecznego.
sudo vim /var/named/tecmintlocal.rev.zone
Przed zdefiniowaniem informacji o naszym hoście w pliku strefy odwrotnej rzuć okiem na przykładowy plik wyszukiwania wstecznego, jak pokazano poniżej.
To jest moja konfiguracja strefy odwrotnej. Dołącz poniższy wpis i wprowadź zmiany według potrzeb.
$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.
Zapisz i zamknij plik za pomocą wq!. Po edycji wyszukiwania wstecznego wygląda to jak poniżej: Użyj TAB, aby uzyskać przyzwoity format pliku strefy.
Przed sprawdzeniem, czy w konfiguracji nie występują błędy w konfiguracji, sprawdź własność grupy plików wyszukiwania do przodu i wyszukiwania wstecznego.
sudo ls -l /var/named/
Tutaj widzimy, że oba pliki są własnością użytkownika root, ponieważ pliki, które tworzymy z przykładowych plików, są dostępne pod /var/named/. Zmień grupę na nazwaną w obu plikach, używając następujących poleceń.
sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone
Po ustaleniu prawidłowej własności plików zweryfikuj je ponownie.
sudo ls -l /var/named/
Teraz przed uruchomieniem usługi DNS sprawdź błędy w plikach strefy. Najpierw sprawdź plik named.conf, a następnie sprawdź inne pliki strefy.
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
Domyślnie iptables był uruchomiony, a nasz serwer DNS był ograniczony do localhost, jeśli klient chce rozpoznać nazwę z naszego serwera DNS, musimy zezwolić na żądanie przychodzące, w tym celu musimy dodać regułę przychodzącą iptables dla portu 53.
sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Teraz sprawdź, czy reguły zostały poprawnie dodane w łańcuchu INPUT.
sudo iptables -L INPUT
Następnie zapisz reguły i uruchom ponownie zaporę.
sudo service iptables save
sudo service iptables restart
Uruchom nazwaną usługę i ustaw ją jako trwałą.
sudo service named start
sudo chkconfig named on
sudo chkconfig --list named
Na koniec przetestuj skonfigurowane pliki głównej strefy DNS (do przodu i do tyłu), używając narzędzi dig i nslookup.
dig masterdns.tecmintlocal.com [Forward Zone]
dig -x 192.168.0.200
nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com
Fajny! skonfigurowaliśmy główny DNS, teraz musimy skonfigurować serwer podrzędny DNS. Przejdźmy dalej do konfiguracji serwera podrzędnego. Nie zajmie to dużo czasu w przypadku konfiguracji głównej.
Skonfiguruj podrzędny serwer DNS
Na maszynie Slave również musimy zainstalować te same pakiety bind, które pokazano na maszynie Master, więc zainstalujmy je za pomocą następującego polecenia.
sudo yum install bind* -y
Otwórz i edytuj plik „named.conf” dla naszej bazy danych stref i nasłuchiwania portów.
sudo vim /etc/named.conf
Wprowadź zmiany zgodnie z ilustracją i zgodnie ze swoimi wymaganiami.
//
// 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";
Uruchom usługę DNS za pomocą.
sudo service named start
Po ponownym uruchomieniu usługi wiązania nie musimy indywidualnie definiować informacji o strefie, ponieważ nasz zezwól na transfer zreplikuje informacje o strefie z serwera głównego, jak pokazano na obrazku poniżej.
sudo ls -l /var/named/slaves
Sprawdź informacje o strefie za pomocą polecenia cat.
sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone
Następnie otwórz port DNS 53 w iptables, aby zezwolić na połączenie przychodzące.
sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Zapisz reguły iptables i uruchom ponownie usługę iptables.
sudo service iptables save
sudo service iptables restart
Uczyń usługę trwałą podczas uruchamiania systemu.
sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables
Otóż to!. Teraz czas skonfigurować nasze komputery klienckie i sprawdzić nazwę hosta.
Skonfiguruj maszynę kliencką
Po stronie klienta musimy przypisać wpis Podstawowy (192.168.0.200) i Dodatkowy DNS (192.168.0.201) w ustawieniach sieci, aby uzyskać przypisaną nazwę hosta. Aby to zrobić, uruchom polecenie setup, aby zdefiniować wszystkie te wpisy, jak pokazano na obrazku.
setup
W przeciwnym razie edytuj plik „/etc/reslov.conf” i dodaj następujące wpisy.
vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201
Teraz sprawdź adres IP, nazwę hosta i serwer nazw.
ifconfig | grep inet
hostname
nslookup tecmintlocal.com
Teraz sprawdź wyszukiwanie DNS do przodu i do tyłu za pomocą.
dig masterdns.tecmintlocal.com
dig -x 192.168.0.200
Zrozumienie wyników kopania:
- Nagłówek – zawiera wszystko, o co prosiliśmy i jaki był wynik.
- Stan – Status to BRAK BŁĘDU, co oznacza, że wysłane przez nas zapytanie zakończyło się sukcesem i nie wystąpiło żaden BŁĄD.
- Pytanie – zapytanie, które zadaliśmy, tutaj moje zapytanie brzmiało: masterdns.tecmintlocal.com.
- Odpowiedź – żądanie zapytania zostało rozwiązane, jeśli są dostępne informacje.
- Urząd – odpowiedź serwerów nazw dla domeny i strefy.
- Dodatkowe – dodatkowe informacje dotyczące serwerów nazw, takie jak nazwa hosta i adres IP.
- Czas zapytania – ile czasu zajęło rozpoznanie nazw z powyższych serwerów.
Na koniec sprawdź nasz węzeł i wykonaj polecenie 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
Wreszcie konfiguracja została zakończona. Tutaj pomyślnie skonfigurowaliśmy zarówno podstawowy (główny), jak i podrzędny (drugi) serwer DNS. Mamy nadzieję, że wszyscy dokonali konfiguracji bez żadnych problemów. Jeśli napotkasz jakiekolwiek problemy podczas konfiguracji, możesz zostawić komentarz.