- wprowadzenie
- wymagania wstępne
- przykładowe hosty
- nasz cel
- zainstaluj BIND na serwerach DNS
- Konfiguracja podstawowego serwera DNS
- Configure Bind
- Konfiguracja lokalnego pliku
- Utwórz plik strefy Forward
- Create Reverse Zone File(s)
- Sprawdź składnię konfiguracji BIND
- Uruchom BIND
- Konfiguracja dodatkowego serwera DNS
- Konfiguracja klientów DNS
- Klienci CentOS
- Klienci Ubuntu
- Testuj klientów
- wyszukiwanie do przodu
- Odwrotne wyszukiwanie
- utrzymywanie rekordów DNS
- dodawanie hosta do DNS
- Podstawowy serwer nazw
- wtórny serwer nazw
- Skonfiguruj Nowy Host, aby korzystał z twojego DNS
- usuwanie hosta z DNS
- podsumowanie
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.conf
do 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:
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
:
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”:
na końcu pliku dodaj następującą linię:
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ą):
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”):
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:
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”:
; 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:
Zapisz i zamknij plik db.nyc3.example.com
.
nasz ostatni przykładowy plik strefy do przodu wygląda następująco:
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:
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”:
; 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:
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:
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:
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
:
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”:
...options {... allow-query { trusted; }; # allows queries from "trusted" clients...
na końcu pliku dodaj następującą linię:
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:
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):
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):
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
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.options
nastę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.