Domain Name Service (DNS) to usługa internetowa, która mapuje adresy IP i w pełni kwalifikowane nazwy domen (FQDN) do siebie. W ten sposób DNS łagodzi potrzebę zapamiętywania adresów IP. Komputery obsługujące DNS nazywane są serwerami nazw. Ubuntu zawiera BIND (Berkley Internet Naming Daemon), najpopularniejszy program służący do utrzymywania serwera nazw w systemie Linux.,
w monicie terminala wprowadź następujące polecenie, aby zainstalować dns:
sudo apt install bind9
bardzo przydatnym pakietem do testowania i rozwiązywania problemów z DNS jest dnsutils
pakiet. Bardzo często te narzędzia będą już zainstalowane, ale aby sprawdzić i / lub zainstalowaćdnsutils
wprowadź następujące ustawienia:
sudo apt install dnsutils
Konfiguracja
istnieje wiele sposobów konfiguracji BIND9. Niektóre z najczęstszych konfiguracji to buforujący serwer nazw, serwer główny i serwer pomocniczy.,
-
Po skonfigurowaniu jako buforujący serwer nazw BIND9 znajdzie odpowiedź na zapytania o nazwy i zapamięta odpowiedź, gdy domena zostanie ponownie zapytana.
-
jako główny serwer BIND9 odczytuje dane strefy z pliku na swoim komputerze i jest autorytatywny dla tej strefy.
-
jako drugi serwer BIND9 pobiera dane strefy z innego serwera nazw, który jest autorytatywny dla strefy.
przegląd
pliki konfiguracyjne DNS są przechowywane w katalogu/etc/bind
., Podstawowym plikiem konfiguracyjnym jest /etc/bind/named.conf
, który w układzie dostarczonym przez pakiet zawiera tylko te pliki.
podstawowe serwery nazw były kiedyś opisane w pliku/etc/bind/db.root
. Jest to teraz dostarczane zamiast tego przez plik /usr/share/dns/root.hints
dostarczony z pakietem dns-root-data
I znajduje się w pliku konfiguracyjnym named.conf.default-zones
powyżej.
możliwe jest skonfigurowanie tego samego serwera jako buforującego serwera nazw, podstawowego i wtórnego: wszystko zależy od stref, które obsługuje., Serwer może być początkiem władzy (SOA) dla jednej strefy, jednocześnie zapewniając dodatkową usługę dla innej strefy. Cały czas świadcząc usługi buforowania dla hostów w lokalnej sieci LAN.
buforowanie serwera nazw
domyślna konfiguracja działa jak serwer buforowania. Po prostu odkomentuj i edytuj /etc/bind/named.conf.options
aby ustawić adresy IP serwerów DNS dostawcy usług internetowych:
forwarders { 1.2.3.4; 5.6.7.8;};
Uwaga
Zamień
1.2.3.4
I5.6.7.8
z adresami IP rzeczywistych serwerów nazw.,
aby włączyć nową konfigurację, uruchom ponownie serwer DNS. Z monitu terminala:
sudo systemctl restart bind9.service
Zobacz dig, aby uzyskać informacje na temat testowania buforującego serwera DNS.
serwer główny
w tej sekcji BIND9 zostanie skonfigurowany jako serwer główny dla domeny example.com
. Po prostu zamień example.com
na FQDN (w pełni kwalifikowaną nazwę domeny).,
Prześlij plik strefy
aby dodać strefę DNS do BIND9, zamieniając BIND9 w serwer główny, najpierw edytuj /etc/bind/named.conf.local
:
zone "example.com" { type master; file "/etc/bind/db.example.com";};
Uwaga
Jeśli bind będzie Otrzymuj automatyczne aktualizacje pliku tak jak w przypadku DDNS, a następnie użyj
/var/lib/bind/db.example.com
zamiast/etc/bind/db.example.com
zarówno tutaj, jak i w poleceniu Kopiuj poniżej.,
teraz Użyj istniejącego pliku strefy jako szablonu, aby utworzyć /etc/bind/db.example.com
plik:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Edytuj nowy plik strefy /etc/bind/db.example.com
I Zmień localhost.
do FQDN Twojego serwera, pozostawiając dodatkowy .
na końcu., Zmiana 127.0.0.1
na adres IP serwera nazw i root.localhost
na prawidłowy adres e-mail, ale z .
zamiast zwykłego symbolu @
, ponownie pozostawiając .
na końcu. Zmień komentarz, aby wskazać domenę, dla której ten plik jest przeznaczony.
Utwórz rekord A dla domeny podstawowej, example.com
. Utwórz również rekord A dlans.example.com
, serwera nazw w tym przykładzie:
musisz zwiększyć numer seryjny za każdym razem, gdy wprowadzasz zmiany w pliku strefy., Jeśli dokonasz wielu zmian przed ponownym uruchomieniem BIND9, po prostu zwiększ Serial raz.
teraz możesz dodać rekordy DNS do dolnej części pliku strefy. Zobacz wspólne typy rekordów po szczegóły.,
Uwaga
wielu administratorów lubi używać ostatnio edytowanej daty jako numeru seryjnego strefy, na przykład 2020012100, który jest yyyymmddss (gdzie ss to numer seryjny)
Po wprowadzeniu zmian w pliku strefy BIND9 musi być zrestartowane, aby zmiany weszły w życie:
sudo systemctl restart bind9.service
plik odwróconej strefy
teraz, gdy strefa jest ustawiona i rozwiązuje nazwy na adresy IP, Strefa odwrotna musi być dodana, aby DNS mógł rozwiązać adres na nazwę.,
Edytuj /etc/bind/named.conf.local
I dodaj następujące elementy:
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192";};
Uwaga
Zamień
1.168.192
na pierwsze trzy oktety tego, co sieć, której używasz. Należy również odpowiednio nazwać plik strefy/etc/bind/db.192
. Powinien pasować do pierwszego oktetu Twojej sieci.,
teraz Utwórz plik /etc/bind/db.192
plik:
sudo cp /etc/bind/db.127 /etc/bind/db.192
następna edycja /etc/bind/db.192
zmieniając te same opcje co /etc/bind/db.example.com
:
numer seryjny w strefie odwrotnej musi być zwiększany przy każdej zmianie. Dla każdego rekordu skonfigurowanego w /etc/bind/db.example.com
, czyli dla innego adresu, musisz utworzyć rekord PTR w /etc/bind/db.192
.,
Po utworzeniu pliku strefy odwrotnej uruchom ponownie BIND9:
sudo systemctl restart bind9.service
Serwer wtórny
Po skonfigurowaniu serwera głównego serwer wtórny jest wysoce zalecany w celu utrzymania dostępności domeny, jeśli podstawowa stanie się niedostępna.
najpierw, na serwerze głównym, transfer strefy musi być dozwolony., Dodaj opcję allow-transfer
do przykładowej definicji strefy Forward I Reverse w /etc/bind/named.conf.local
:
Uwaga
Zastąp
192.168.1.11
adresem IP Twojej drugiej strony Nameserver.
Restart BIND9 na serwerze podstawowym:
sudo systemctl restart bind9.service
następnie na serwerze wtórnym zainstaluj pakiet bind9 w taki sam sposób, jak na serwerze podstawowym., Następnie Edytuj/etc/bind/named.conf.local
I dodaj następujące deklaracje dla stref Forward I Reverse:
Uwaga
Zastąp
192.168.1.10
adresem IP głównego serwera nazw.,
Uruchom ponownie BIND9 na drugim serwerze:
sudo systemctl restart bind9.service
W /var/log/syslog
powinieneś zobaczyć coś podobnego do następującego (niektóre linie zostały podzielone, aby pasowały do formatu tego dokumentu):
uwaga
Uwaga: strefa jest przenoszona tylko wtedy, gdy numer seryjny na głównym jest większy niż na drugim., Jeśli chcesz, aby twój główny DNS powiadamiał Inne drugorzędne serwery DNS o zmianach strefy, możesz dodać
also-notify { ipaddress; };
do/etc/bind/named.conf.local
jak pokazano w poniższym przykładzie:
Uwaga
domyślnym katalogiem dla nieautoryzowanych plików stref jest
/var/cache/bind/
. Ten katalog jest również skonfigurowany w AppArmor, aby umożliwić demonowi pisanie do niego. Aby uzyskać więcej informacji na temat AppArmor zobacz bezpieczeństwo-AppArmor.,
Rozwiązywanie problemów
Ta sekcja obejmuje diagnozowanie problemów z konfiguracjami DNS i BIND9.
testowanie
resolv.conf
pierwszym krokiem w testowaniu BIND9 jest dodanie adresu IP serwera nazw do resolvera hostów. Główny serwer nazw powinien być skonfigurowany, podobnie jak inny host, aby dokładnie sprawdzić rzeczy. Zobacz konfigurację klienta DNS, aby uzyskać szczegółowe informacje na temat dodawania adresów serwera nazw do klientów sieciowych., Na końcu twoja linia nameserver
w /etc/resolv.conf
powinna wskazywać 127.0.0.53
I powinieneś mieć search
parametr dla Twojej domeny. Coś takiego:
nameserver 127.0.0.53search example.com
aby sprawdzić, którego serwera DNS używa lokalny resolver, Uruchom:
systemd-resolve --status
Uwaga
powinieneś również dodać adres IP drugiego serwera nazw do konfiguracji klienta na wypadek, gdyby główny stał się niedostępny.,
dig
jeśli zainstalowałeś pakiet dnsutils możesz przetestować swoją konfigurację za pomocą narzędzia DNS lookup dig:
-
Po zainstalowaniu BIND9 użyj dig przeciwko interfejsowi loopback, aby upewnić się, że nasłuchuje na porcie 53.,i>
Jeśli skonfigurowałeś BIND9 jako buforujący serwer nazw „wykop” zewnętrzną domenę, aby sprawdzić czas zapytania:
dig ubuntu.com
zwróć uwagę na czas zapytania pod koniec wyjścia polecenia:
;; Query time: 49 msec
Po Drugim wykopie powinna być poprawa:
;; Query time: 1 msec
ping
teraz aby zademonstrować, w jaki sposób aplikacje wykorzystują DNS do rozwiązywania nazwy hosta, użyj narzędzia Ping do wysłania żądania ICMP echo:
ping example.com
testuje to, czy serwer nazw może rozwiązać nazwę ns.example.com
na adres IP., Wyjście polecenia powinno wyglądać następująco:
named-checkzone
świetnym sposobem na przetestowanie plików stref jest użycienamed-checkzone
narzędzie zainstalowane z pakietembind9
. To narzędzie pozwala upewnić się, że konfiguracja jest poprawna przed ponownym uruchomieniem BIND9 i wprowadzeniem zmian w życie.,
-
aby przetestować nasz przykładowy plik strefy Forward wprowadź następujące polecenie z wiersza polecenia:
named-checkzone example.com /etc/bind/db.example.com
Jeśli wszystko jest poprawnie skonfigurowane, powinieneś zobaczyć wyjście podobne do:
zone example.com/IN: loaded serial 6OK
-
podobnie, aby przetestować plik strefy odwrotnej wprowadź następujące polecenie:
zone example.com/IN: loaded serial 6OK
-
ID=”97e09ba220″>
wyjście powinno być podobne do:
zone 1.168.192.in-addr.arpa/IN: loaded serial 3OK
uwaga
numer seryjny pliku strefy będzie prawdopodobnie inny.,
szybkie tymczasowe rejestrowanie zapytań
za pomocą narzędziarndc
można szybko włączać i wyłączać rejestrowanie zapytań, bez ponownego uruchamiania usługi lub zmiany pliku konfiguracyjnego.
aby włączyć logowanie zapytań, Uruchom:
sudo rndc querylog on
podobnie, aby go wyłączyć, Uruchom:
sudo rndc querylog off
dzienniki zostaną wysłane do sysloga i pojawią się w /var/log/syslog
domyślnie:
Uwaga
ilość logów generowanych przez włączenie
querylog
może być ogromna!,
Logowanie
BIND9 ma szeroki wachlarz dostępnych opcji konfiguracji logowania, ale dwa główne z nich to kanał i kategoria, które konfigurują, gdzie idą logi i jakie informacje są rejestrowane, odpowiednio.
Jeśli nie są skonfigurowane żadne Opcje logowania, domyślna konfiguracja to:
logging { category default { default_syslog; default_debug; }; category unmatched { null; };};
zamiast tego skonfigurujmy BIND9, aby wysyłał wiadomości debugowania związane z zapytaniami DNS do osobnego pliku.
musimy skonfigurować kanał, aby określić, do którego pliku mają być wysyłane wiadomości, oraz kategorię., W tym przykładzie Kategoria zapisze wszystkie zapytania. Edytuj /etc/bind/named.conf.local
I dodaj:
logging { channel query.log { file "/var/log/named/query.log"; severity debug 3; }; category queries { query.log; };};
Uwaga
opcja debugowania może być ustawiona od 1 do 3. Jeśli poziom nie jest określony, poziom 1 jest domyślny.,
-
ponieważ Demon o nazwie działa jako użytkownik bind, należy utworzyć katalog
/var/log/named
I zmienić właściciela:sudo mkdir /var/log/namedsudo chown bind:bind /var/log/named
-
Teraz uruchom ponownie BIND9, aby zmiany efekt:
sudo systemctl restart bind9.service
powinieneś zobaczyć plik /var/log/named/query.log
wypełnij informacjami o zapytaniu. Jest to prosty przykład opcji logowania BIND9. Aby zapoznać się z opcjami zaawansowanymi, Zobacz więcej informacji.,
popularne typy rekordów
Ta sekcja obejmuje niektóre z najpopularniejszych typów rekordów DNS.
-
A
rekord: ten rekord mapuje adres IP do nazwy hosta.www IN A 192.168.1.12
-
CNAME
rekord: używany do tworzenia aliasu do istniejącego rekordu A. Nie można utworzyć rekorduCNAME
wskazującego na inny rekordCNAME
.web IN CNAME www
-
MX
rekord: używany do określenia, do którego adresu e-mail ma być wysyłany., Musi wskazywać naA
rekord, a nie naCNAME
.@ IN MX 1 mail.example.com.mail IN A 192.168.1.13
-
NS
rekord: używany do definiowania, które serwery obsługują kopie strefy. Musi wskazywać naA
rekord, a nie naCNAME
. Tutaj definiowane są serwery podstawowe i wtórne.@ IN NS ns.example.com.@ IN NS ns2.example.com.ns IN A 192.168.1.10ns2 IN A 192.168.1.11
więcej informacji
-
Upstream BIND9 dokumentacja
-
Bind9.net posiada linki do dużej kolekcji zasobów DNS i BIND9.,
-
DNS i BIND to popularna książka już w piątym wydaniu. Istnieje teraz również DNS i BIND na książce IPv6.
-
świetnym miejscem, aby poprosić o pomoc BIND9 i zaangażować się w społeczność Ubuntu Server, jest kanał IRC #ubuntu-server na freenode.
Ostatnia aktualizacja 10 miesięcy temu. Pomóż ulepszyć ten dokument na forum.