Wyszukiwanie w witrynie

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.

  1. port nasłuchiwania 53 – używany przez DNS do nasłuchiwania w dostępnych interfejsach.
  2. Główny DNS – zdefiniuj swój główny adres IP DNS, na którym chcesz odsłuchiwać zapytanie.
  3. 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.
  4. rekurencja nie – jeśli jest ustawiona na tak, zapytania rekurencyjne spowodują atak DDOS na serwerze.
  5. Nazwa strefy – zdefiniuj tutaj nazwę swojej strefy, zdefiniowaną jako tecminlocal.com.
  6. wpisz master – ponieważ ten system został skonfigurowany dla serwera głównego, w przypadku przyszłego serwera podrzędnego będzie to serwer podrzędny.
  7. tecmintlocal.fwd.zone – ten plik zawiera informacje o hoście dla tej strefy.
  8. 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:

  1. Nagłówek – zawiera wszystko, o co prosiliśmy i jaki był wynik.
  2. 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.
  3. Pytanie – zapytanie, które zadaliśmy, tutaj moje zapytanie brzmiało: masterdns.tecmintlocal.com.
  4. Odpowiedź – żądanie zapytania zostało rozwiązane, jeśli są dostępne informacje.
  5. Urząd – odpowiedź serwerów nazw dla domeny i strefy.
  6. Dodatkowe – dodatkowe informacje dotyczące serwerów nazw, takie jak nazwa hosta i adres IP.
  7. 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.