Jak skonfigurować BIND jako serwer DNS sieci prywatnej na CentOS 7

wprowadzenie

ważną częścią zarządzania konfiguracją i infrastrukturą serwera jest utrzymywanie łatwego sposobu wyszukiwania interfejsów sieciowych i adresów IP według nazwy, poprzez skonfigurowanie właściwego systemu nazw domen (DNS). Używanie w pełni kwalifikowanych nazw domen (FQDNs) zamiast adresów IP do określania adresów sieciowych ułatwia konfigurację usług i aplikacji oraz zwiększa łatwość obsługi plików konfiguracyjnych. Skonfigurowanie własnego DNS dla sieci prywatnej to świetny sposób na usprawnienie zarządzania serwerami.

w tym samouczku omówimy, jak skonfigurować wewnętrzny serwer DNS, używając oprogramowania BIND name server (BIND9) na CentOS 7, które może być używane przez wirtualne Serwery prywatne (VPS) do rozwiązywania prywatnych nazw hostów i prywatnych adresów IP. Zapewnia to centralny sposób zarządzania wewnętrznymi nazwami hostów i prywatnymi adresami IP, co jest niezbędne, gdy środowisko rozszerza się na więcej niż kilka hostów.

wersja Ubuntu tego poradnika znajduje się tutaj.

wymagania wstępne

aby ukończyć ten samouczek, musisz wykonać następujące czynności:

  • niektóre serwery, które działają w tym samym centrum danych i mają włączoną sieć prywatną
  • nowy VPS służący jako główny serwer DNS, NS1
  • Opcjonalnie: Nowy VPS służący jako dodatkowy serwer DNS, NS2
  • dostęp Root do wszystkich powyższych (kroki 1-4 tutaj)

jeśli nie jesteś zaznajomiony z koncepcjami DNS, zaleca się przeczytanie przynajmniej trzech pierwszych części naszego wprowadzenia do zarządzania DNS.

przykładowe hosty

dla przykładowych celów Zakładamy, że:

  • mamy dwa istniejące VPS o nazwie „host1” i „host2”
  • oba VPS istnieją w centrum danych nyc3
  • oba VPS mają włączoną sieć prywatną (i znajdują się w podsieci 10.128.0.0/16)
  • oba VPS są w jakiś sposób związane z naszą aplikacją internetową, która działa na „example.com”

przy tych założeniach decydujemy, że sensowne jest użycie schematu nazewnictwa, który używa „nyc3.example.com” aby odnieść się do naszej prywatnej podsieci lub strefy. Dlatego prywatna w pełni kwalifikowana nazwa domeny host1 (FQDN) będzie „host1.nyc3.example.com”. zapoznaj się z poniższą tabelą odpowiednie szczegóły:

Host rola prywatny FQDN prywatny adres IP
ogólny host 1 host1.nyc3.example.com 10.128.100.101
host2 Generic Host 2 host2.nyc3.example.com 10.128.200.102

Uwaga: istniejące ustawienia będą różne, ale przykładowe nazwy i adresy IP zostaną użyte do zademonstrowania, jak skonfigurować serwer DNS, aby zapewnić działający wewnętrzny DNS. Powinieneś być w stanie łatwo dostosować tę konfigurację do własnego środowiska, zastępując nazwy hostów i prywatne adresy IP własnymi. Nie jest konieczne używanie nazwy regionu centrum danych w schemacie nazewnictwa, ale używamy jej tutaj, aby zaznaczyć, że hosty te należą do prywatnej sieci danego centrum danych. Jeśli korzystasz z wielu centrów danych, możesz skonfigurować wewnętrzny DNS w każdym z nich.

nasz cel

pod koniec tego samouczka będziemy mieli podstawowy serwer DNS, ns1 i opcjonalnie dodatkowy serwer DNS, ns2, który będzie służył jako kopia zapasowa.

oto tabela z przykładowymi nazwami i adresami IP:

Host rola prywatny FQDN prywatny adres IP
NS1 podstawowy serwer DNS ns1.nyc3.example.com 10.128.10.11
NS2 dodatkowy serwer DNS ns2.nyc3.example.com 10.128.20.12

zacznijmy od zainstalowania naszego podstawowego serwera DNS, ns1.

zainstaluj BIND na serwerach DNS

Uwaga: tekst podświetlony na Czerwono jest ważny! Często będzie używany do oznaczenia czegoś, co należy zastąpić własnymi ustawieniami lub że powinno zostać zmodyfikowane lub dodane do pliku konfiguracyjnego. Na przykład, jeśli widzisz coś takiego jak host1.nyc3.przykład.com, zastąp go FQDN własnego serwera. Podobnie, jeśli widzisz host1_private_IP, zastąp go prywatnym adresem IP własnego serwera.

na obu serwerach DNS, ns1 i NS2, zainstaluj BIND za pomocą yum:

  • sudo yum install bind bind-utils

Potwierdź monit, wpisujący.

teraz, gdy BIND jest zainstalowany, skonfigurujmy podstawowy serwer DNS.

Konfiguracja podstawowego serwera DNS

konfiguracja Binda składa się z wielu plików, które są zawarte w głównym pliku konfiguracyjnym, named.conf. Te nazwy plików zaczynają się od „named”, ponieważ jest to nazwa procesu, który uruchamia BIND. Zaczniemy od konfiguracji pliku opcji.

Configure Bind

proces Binda jest znany jako nazwany. Jako takie, wiele plików odnosi się do „named” zamiast „BIND”.

w ns1 otwórz pliknamed.confdo edycji:

  • sudo vi /etc/named.conf

nad istniejącym blokiem options utwórz nowy blok ACL o nazwie „trusted”. W tym miejscu zdefiniujemy listę klientów, od których będziemy zezwalać na rekurencyjne zapytania DNS (np. serwery znajdujące się w tym samym centrum danych co ns1). Korzystając z naszego przykładowego prywatnego adresu IP, dodamy ns1, NS2, host1 i host2 do naszej listy zaufanych klientów:

/etc/named.conf-1 z 4
acl "trusted" { 10.128.10.11; # ns1 - can be set to localhost 10.128.20.12; # ns2 10.128.100.101; # host1 10.128.200.102; # host2};

teraz, gdy mamy naszą listę zaufanych klientów DNS, będziemy chcieli edytować blokoptions. Dodaj prywatny adres IP ns1 do dyrektywylisten-on port 53 i skomentuj linię listen-on-v6:

/etc/named.conf-2 z 4
options { listen-on port 53 { 127.0.0.1; 10.128.10.11; };# listen-on-v6 port 53 { ::1; };...

poniżej tych wpisów Zmień dyrektywęallow-transfer na „none” na prywatny adres IP ns2. Ponadto Zmieńallow-query dyrektywę z „localhost” na „trusted”:

/etc/named.conf — 3 z 4

na końcu pliku dodaj następującą linię:

/etc/named.conf-4 z 4
include "/etc/named/named.conf.local";

teraz zapisz i zakończnamed.conf. Powyższa konfiguracja określa, że tylko twoje własne serwery („zaufane”) będą mogły odpytywać Twój serwer DNS.

następnie skonfigurujemy plik lokalny, aby określić nasze strefy DNS.

Konfiguracja lokalnego pliku

w ns1 otwórz pliknamed.conf.local do edycji:

  • sudo vi /etc/named/named.conf.local

plik powinien być pusty. Tutaj określimy nasze strefy do przodu i do tyłu.

Dodaj strefę do przodu z następującymi liniami (zastąp nazwę strefy własną):

/etc/named / named.conf.local — 1 of 2
zone "nyc3.example.com" { type master; file "/etc/named/zones/db.nyc3.example.com"; # zone file path};

zakładając, że nasza podsieć prywatna to 10.128.0.0/16, dodaj strefę odwrotną za pomocą następujących linii (zauważ, że nasza nazwa strefy odwrotnej zaczyna się od „128.10”, która jest odwrotnością oktetową „10.128”):

/etc/named/named.conf.local — 2 of 2
zone "128.10.in-addr.arpa" { type master; file "/etc/named/zones/db.10.128"; # 10.128.0.0/16 subnet };

Jeśli Twoje serwery obejmują wiele prywatnych podsieci, ale znajdują się w tym samym centrum danych, należy podać dodatkową strefę i plik strefy dla każdej odrębnej podsieci. Po zakończeniu dodawania wszystkich żądanych stref Zapisz i zamknij plik named.conf.local.

teraz, gdy nasze strefy są określone w BIND, musimy utworzyć odpowiednie pliki stref do przodu i do tyłu.

Utwórz plik strefy Forward

plik strefy forward jest miejscem, w którym definiujemy rekordy DNS dla przeszukiwania DNS forward. Oznacza to, że gdy DNS otrzyma Zapytanie o nazwę, „host1.nyc3.example.com” na przykład zajrzy do pliku strefy forward, aby rozwiązać odpowiedni prywatny adres IP host1.

stwórzmy katalog, w którym będą znajdować się nasze pliki strefowe. Według naszego nazwiska.conf.konfiguracja lokalna, ta lokalizacja powinna być /etc/named/zones:

  • sudo chmod 755 /etc/named
  • sudo mkdir /etc/named/zones

teraz edytujmy nasz plik strefy forward:

  • sudo vi /etc/named/zones/db.nyc3.example.com

najpierw będziesz chciał dodać rekord SOA. Wymień zaznaczony NS1 FQDN na własny FQDN, a następnie wymień drugi „nyc3.example.com” z własną domeną. Za każdym razem, gdy edytujesz plik strefy, powinieneś zwiększyć wartość seryjną przed ponownym uruchomieniem procesunamed–zwiększymy go do „3”. Powinno to wyglądać mniej więcej tak:

/etc/named/zones / db.nyc3.przykład.com-1 z 3

następnie dodaj rekordy serwera nazw z następującymi liniami (zamień nazwy na własne). Zauważ, że druga kolumna określa, że są to rekordy „NS”:

/etc/named/zones/db.nyc3.example.com — 2 z 3
; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.

następnie dodaj rekordy a dla Twoich hostów, które należą do tej strefy. Obejmuje to każdy serwer, którego nazwę chcemy zakończyć”. nyc3.example.com ” (zastąp nazwy i prywatne adresy IP). Używając naszych przykładowych nazw i prywatnych adresów IP, dodamy rekordy dla ns1, NS2, host1 i host2 w ten sposób:

/etc/named/zones/db.nyc3.example.com — 3 z 3

Zapisz i zamknij plik db.nyc3.example.com.

nasz ostatni przykładowy plik strefy do przodu wygląda następująco:

/etc/named/zones/db.nyc3.example.com — complete

Przejdźmy teraz do plików strefy odwrotnej.

Create Reverse Zone File(s)

Reverse zone file to miejsce, w którym definiujemy rekordy DNS PTR dla odwrotnego wyszukiwania DNS. Oznacza to, że gdy DNS otrzyma zapytanie według adresu IP, na przykład „10.128.100.101”, będzie szukał w pliku (- ACH) strefy odwrotnej, aby rozwiązać odpowiedni FQDN, „host1.nyc3.example.com ” w tym przypadku.

W ns1, dla każdej strefy odwrotnej określonej w plikunamed.conf.local, Utwórz plik strefy odwrotnej.

Edytuj plik strefy odwrotnej, który odpowiada strefie odwrotnej zdefiniowanej wnamed.conf.local:

  • sudo vi /etc/named/zones/db.10.128

w taki sam sposób, jak plik strefy przedniej, zamień podświetlony NS1 FQDN na własny FQDN, a następnie zamień drugi „nyc3.example.com” z własną domeną. Za każdym razem, gdy edytujesz plik strefy, powinieneś zwiększyć wartość seryjną przed ponownym uruchomieniem procesunamed–zwiększymy go do „3”. Powinno to wyglądać mniej więcej tak:

/etc/named/zones / db.10.128-1 z 3

następnie dodaj rekordy serwera nazw z następującymi liniami (zamień nazwy na własne). Należy zauważyć, że druga kolumna określa, że są to rekordy „NS”:

/etc/named/zones/db.10.128-2 z 3
; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.

następnie dodajPTR rekordy dla wszystkich serwerów, których adresy IP znajdują się w podsieci pliku strefy, który edytujesz. W naszym przykładzie obejmuje to wszystkie nasze hosty, ponieważ wszystkie znajdują się w podsieci 10.128.0.0/16. Zauważ, że pierwsza kolumna składa się z dwóch ostatnich oktetów prywatnych adresów IP Twoich serwerów w odwróconej kolejności. Pamiętaj, aby zastąpić nazwy i prywatne adresy IP, aby pasowały do Twoich serwerów:

/etc/named/zones / db.10.128-3 z 3

Zapisz i zamknij plik strefy odwrotnej (powtórz tę sekcję, jeśli chcesz dodać więcej plików strefy odwrotnej).

nasz ostatni przykładowy plik strefy odwrotnej wygląda następująco:

/etc/named/zones / db.10.128-kompletne

Sprawdź składnię konfiguracji BIND

uruchom następujące polecenie, aby sprawdzić składnię plików named.conf*:

  • sudo named-checkconf

Jeśli nazwane pliki konfiguracyjne nie zawierają błędów składniowych, powrócisz do zachęty powłoki i nie zobaczysz komunikatów o błędach. Jeśli występują problemy z plikami konfiguracyjnymi, przejrzyj komunikat o błędzie i sekcję Konfiguracja podstawowego serwera DNS, a następnie spróbuj ponownie named-checkconf.

polecenie named-checkzone może być użyte do sprawdzenia poprawności plików stref. Pierwszy argument określa nazwę strefy, a drugi określa odpowiedni plik strefy, który jest zdefiniowany w named.conf.local.

na przykład, aby sprawdzić „nyc3.example.com” konfiguracja strefy forward, uruchom następujące polecenie (Zmień nazwy, aby pasowały do strefy forward I pliku):

  • sudo named-checkzone nyc3.example.com /etc/named/zones/db.nyc3.example.com

i do sprawdzenia „128.10.in-addr.arpa” konfiguracja strefy odwrotnej, uruchom następujące polecenie (Zmień numery, aby pasowały do strefy odwrotnej i Pliku):

  • sudo named-checkzone 128.10.in-addr.arpa /etc/named/zones/db.10.128

gdy wszystkie pliki konfiguracji i strefy nie zawierają błędów, powinieneś być gotowy do ponownego uruchomienia usługi BIND.

Uruchom BIND

Uruchom BIND:

  • sudo systemctl start named

teraz będziesz chciał go włączyć, więc uruchomi się podczas rozruchu:

  • sudo systemctl enable named

twój podstawowy serwer DNS jest teraz skonfigurowany i gotowy do odpowiadania na zapytania DNS. Przejdźmy do tworzenia wtórnego serwera DNS.

Konfiguracja dodatkowego serwera DNS

w większości środowisk dobrym pomysłem jest skonfigurowanie dodatkowego serwera DNS, który będzie odpowiadał na żądania, jeśli podstawowy stanie się niedostępny. Na szczęście dodatkowy serwer DNS jest znacznie łatwiejszy w konfiguracji.

na ns2 Edytuj pliknamed.conf:

  • sudo vi /etc/named.conf

Uwaga: jeśli wolisz pominąć te instrukcje, możesz skopiować pliknamed.conf I zmodyfikować go tak, aby nasłuchiwał na prywatnym adresie IP ns2 i nie zezwalał na transfery.

nad istniejącym blokiemoptions utwórz nowy blok ACL o nazwie „trusted”. W tym miejscu zdefiniujemy listę klientów, z których będziemy zezwalać na rekurencyjne zapytania DNS (tj. serwery znajdujące się w tym samym centrum danych co ns1). Korzystając z naszego przykładowego prywatnego adresu IP, dodamy ns1, NS2, host1 i host2 do naszej listy zaufanych klientów:

/etc/named.conf-1 z 4
acl "trusted" { 10.128.10.11; # ns1 - can be set to localhost 10.128.20.12; # ns2 10.128.100.101; # host1 10.128.200.102; # host2};

teraz, gdy mamy naszą listę zaufanych klientów DNS, będziemy chcieli edytować blokoptions. Dodaj prywatny adres IP ns1 do dyrektywylisten-on port 53 i skomentuj linię listen-on-v6:

/etc/named.conf — 2 z 4
options { listen-on port 53 { 127.0.0.1; 10.128.20.12; };# listen-on-v6 port 53 { ::1; };...

Zmień allow-query dyrektywę z „localhost” na „trusted”:

/etc / named.conf — 3 z 4
...options {... allow-query { trusted; }; # allows queries from "trusted" clients...

na końcu pliku dodaj następującą linię:

/etc/named.conf-4 z 4
include "/etc/named/named.conf.local";

teraz zapisz i zakończnamed.conf. Powyższa konfiguracja określa, że tylko twoje własne serwery („zaufane”) będą mogły odpytywać Twój serwer DNS.

następnie skonfigurujemy plik lokalny, aby określić nasze strefy DNS.

Zapisz i zakończnamed.conf.

teraz Edytuj pliknamed.conf.local:

  • sudo chmod 755 /etc/named
  • sudo vi /etc/named/named.conf.local

Zdefiniuj strefy slave, które odpowiadają strefom master na głównym serwerze DNS. Zauważ, że typ to „slave”, plik nie zawiera ścieżki i istnieje dyrektywa masters, która powinna być ustawiona na prywatny IP głównego serwera DNS. Jeśli zdefiniowałeś wiele stref odwrotnych na głównym serwerze DNS, upewnij się, że dodałeś je wszystkie tutaj:

/etc/named / named.conf.local

teraz zapisz i zamknijnamed.conf.local.

uruchom następujące polecenie, aby sprawdzić poprawność plików konfiguracyjnych:

  • sudo named-checkconf

po sprawdzeniu, Uruchom BIND:

  • sudo systemctl start named

Włącz BIND, aby uruchomić podczas rozruchu:

sudo systemctl enable named

teraz masz podstawowe i drugorzędne serwery DNS dla nazwy sieci prywatnej i rozdzielczości adresu IP. Teraz musisz skonfigurować swoje serwery, aby korzystały z prywatnych serwerów DNS.

Konfiguracja klientów DNS

zanim wszystkie twoje serwery w „zaufanym” ACL będą mogły odpytywać twoje serwery DNS, musisz skonfigurować każdy z nich, aby używał ns1 i ns2 jako serwerów nazw. Proces ten różni się w zależności od systemu operacyjnego, ale w przypadku większości dystrybucji Linuksa polega on na dodaniu serwerów nazw do pliku /etc/resolv.conf.

Klienci CentOS

na CentOS, RedHat i Fedora Linux VPS, po prostu edytuj plikresolv.conf :

  • sudo vi /etc/resolv.conf

następnie dodaj następujące wiersze na górze pliku (zastąp domenę prywatną oraz prywatne adresy IP ns1 i NS2):

/etc / resolv.conf
search nyc3.example.com # your private domainnameserver 10.128.10.11 # ns1 private IP addressnameserver 10.128.20.12 # ns2 private IP address

teraz zapisz i zakończ. Twój Klient jest teraz skonfigurowany do korzystania z serwerów DNS.

Klienci Ubuntu

na Ubuntu i Debian Linux VPS możesz edytować plikhead, który jest poprzedzony resolv.conf podczas rozruchu:

  • sudo vi /etc/resolvconf/resolv.conf.d/head

dodaj następujące wiersze do pliku (zastąp domenę prywatną oraz prywatne adresy IP ns1 i NS2):

/etc/resolvconf / resolv.conf.aby wygenerować nowy plikresolv.conf

search nyc3.example.com # your private domainnameserver 10.128.10.11 # ns1 private IP addressnameserver 10.128.20.12 # ns2 private IP address

Uruchom teraz resolvconf, aby wygenerować nowy plik resolv.conf plik:

  • sudo resolvconf -u

serwery DNS.

Testuj klientów

użyjnslookup—dołączonego do pakietu „bind-utils”—aby sprawdzić, czy twoi klienci mogą odpytywać twoje serwery nazw. Powinieneś być w stanie to zrobić na wszystkich klientach, które skonfigurowałeś i są w „zaufanym” ACL.

wyszukiwanie do przodu

na przykład, możemy wykonać wyszukiwanie do przodu, aby pobrać adres IP host1.nyc3.example.com uruchamiając następujące polecenie:

  • nslookup host1

zapytanie „host1” rozszerza się do „host1.nyc3.example.com ze względu nasearch opcja jest ustawiona na Twojej prywatnej subdomenie, a zapytania DNS będą próbować szukać tej subdomeny przed szukaniem hosta w innym miejscu. Wyjście powyższego polecenia będzie wyglądać następująco:

Output:
Server: 10.128.10.11Address: 10.128.10.11#53Name: host1.nyc3.example.comAddress: 10.128.100.101

Odwrotne wyszukiwanie

aby przetestować odwrotne wyszukiwanie, odpytaj serwer DNS z prywatnym adresem IP host1:

  • nslookup 10.128.100.101

powinieneś zobaczyć wyjście, które wygląda następująco:

  • nslookup 10.128.100.101

powinieneś zobaczyć wyjście, które wygląda następująco:

Output:
Server: 10.128.10.11Address: 10.128.10.11#5311.10.128.10.in-addr.arpa name = host1.nyc3.example.com.

jeśli wszystkie nazwy i adresy IP są poprawne, oznacza to, że pliki stref są poprawnie skonfigurowane. Jeśli otrzymasz nieoczekiwane wartości, Sprawdź pliki stref na głównym serwerze DNS (np. db.nyc3.example.com Idb.10.128).

Gratulacje! Twoje wewnętrzne serwery DNS są teraz poprawnie skonfigurowane! Teraz zajmiemy się prowadzeniem twoich zapisów strefowych.

utrzymywanie rekordów DNS

teraz, gdy masz działający wewnętrzny DNS, musisz utrzymywać rekordy DNS, aby dokładnie odzwierciedlały środowisko serwera.

dodawanie hosta do DNS

za każdym razem, gdy dodajesz hosta do swojego środowiska (w tym samym centrum danych), będziesz chciał dodać go do DNS. Oto lista kroków, które musisz wykonać:

Podstawowy serwer nazw

  • plik strefy do przodu: Dodaj rekord „a” dla nowego hosta, zwiększ wartość „Serial”
  • plik strefy odwrotnej: Dodaj rekord „PTR” dla nowego hosta, zwiększ wartość „Serial”
  • Dodaj prywatny adres IP nowego hosta do „zaufanego” ACL (named.conf.optionsnastępnie Przeładuj bind:
    • sudo systemctl reload named

    wtórny serwer nazw

    • dodaj prywatny adres IP nowego hosta do „zaufanego” ACL (named.conf.options)

    następnie przeładuj bind:

    • sudo systemctl reload named

    Skonfiguruj Nowy Host, aby korzystał z twojego DNS

    • Skonfiguruj resolv.conf aby korzystać z serwerów DNS
    • Testuj za pomocą nslookup

    usuwanie hosta z DNS

    jeśli usuwasz hosta ze swojego środowiska lub chcesz go po prostu usunąć z DNS, po prostu usuń wszystkie rzeczy, które zostały dodane podczas dodawania serwera do DNS (tj. odwrotność powyższych kroków).

    podsumowanie

    teraz możesz odwoływać się do prywatnych interfejsów sieciowych swoich serwerów po nazwie, a nie po adresie IP. Ułatwia to konfigurację usług i aplikacji, ponieważ nie musisz już pamiętać prywatnych adresów IP, a pliki będą łatwiejsze do odczytania i zrozumienia. Ponadto teraz możesz zmienić konfiguracje, aby wskazywać nowe serwery w jednym miejscu, podstawowym serwerze DNS, zamiast edytować różne rozproszone pliki konfiguracyjne, co ułatwia konserwację.

    Po skonfigurowaniu wewnętrznego DNS, a pliki konfiguracyjne używają prywatnych FQDNs do określania połączeń sieciowych, ważne jest, aby serwery DNS były prawidłowo utrzymywane. Jeśli obie usługi staną się niedostępne, usługi i aplikacje, które na nich polegają, przestaną działać poprawnie. Dlatego zaleca się skonfigurowanie DNS z co najmniej jednym serwerem pomocniczym i utrzymywanie działających kopii zapasowych wszystkich z nich.

Related Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *