Jak wykonać pełną konfigurację serwera DNS BIND9 przy użyciu nazwy hosta?


53

Potrzebuję kompletnego przewodnika krok po kroku, w jaki sposób stworzyć taką konfigurację serwera.

Czy ktoś może mi pomóc?

Odpowiedzi:


119

Kompletny serwer DNS na serwerze Ubuntu 12.

Przede wszystkim zmień adres IP serwera z DHCP na STATIC, aby użyć tego polecenia

sudo nano /etc/network/interfaces

i dodaj:

auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-nameservers

Uruchom ponownie demony sieciowe

sudo /etc/init.d/networking restart

Przed skonfigurowaniem serwera DNS w systemie Linux Ubuntu musisz najpierw utworzyć nazwę domeny, a następnie kontynuować. Najpierw sprawdzisz, czy to polecenie hostname

sudo nano /etc/hostname

 nefitari       

(To jest moja nazwa hosta serwera Ubuntu, twoja może być inna. Możesz to zmienić w zależności od potrzeb)

Teraz po nazwie hosta musisz utworzyć nazwę domeny dla swojego serwera. Powiedz servername.domain.com. Lepiej jest, aby za każdym razem, gdy konfigurujesz serwer do użytku domowego, nie używaj .com, ale .hom lub .net lub cokolwiek innego. Podaj poniższe polecenie

  sudo nano /etc/hosts

dodaj, jeśli go nie ma:

  127.0.0.1   localhost

  192.168.1.5     nefitari.autun.hom    nefitari

W moim pliku 127.0.0.1 jest dla lokalnego hosta i zmieniłem drugi adres IP 127.0.1.1 z adresem IP mojego serwera, który jest 192.168.1.5, teraz wprowadzam nazwę mojej domeny, mając najpierw moją nazwę hosta nefitari, potem moją nazwę domeny autun.hom, a następnie alias nefitari . Możesz wybrać własny, hostname.abc.net lub hostname.home.lan itp., Ale pamiętaj, że zmiana na ten plik wymaga zrestartowania serwera, a następnie zalogowania się. Ponowne uruchomienie jest konieczne

Teraz zainstaluj BIND9

 sudo apt-get install bind9

Po instalacji po prostu skonfiguruj poniższe pliki krok po kroku

  • Opcje nazwane.conf
  • Named.conf.local
  • /etc/resolv.conf

Teraz skonfiguruj plik o nazwie .conf.options Ten plik służy do adresów IP DNS. Oznacza to, że Twój serwer musi połączyć się z jakimś DNS poza nim. Kiedy kupujesz nazwę domeny od usługodawcy internetowego, zwykle daje ci swoje własne adresy IP DNS. Możesz użyć otwartych adresów IP DNS Google'a lub czegoś podobnego. W moim przypadku korzystam z własnych adresów IP DNS usługodawcy internetowego.

 sudo nano /etc/bind/named.conf.options
 forwarders {
 # Give here your ISP DNS IP’s
192.168.1.1;    # gateway or router   
182.176.39.23;
182.176.18.13;
68.87.76.178;
  };

*** Zapisz plik i wyjdź *** za pomocą kontrolki x naciśnij y i nadpisz plik

Teraz edytuj plik o nazwie.conf.local Jest to plik, w którym definiujemy strefy do przodu i strefy do tyłu. Oznacza to, że kiedy wprowadzimy nazwę domeny, przełoży ją ona na adres IP, a kiedy wprowadzimy adres IP, po prostu zamieni go na nazwę.

sudo nano /etc/bind/named.conf.local

pokaże:

# Our forward zone
zone "autun.hom" {
 type master;
 file "/etc/bind/zones/db.autun.hom";
 };

# Our reverse Zone 
# Server IP 192.168.1.5 
zone "1.168.192.in-addr.arpa" {
  type master;
  file "/etc/bind/zones/db.192";
 };

*** Zapisz plik i wyjdź *** za pomocą kontrolki x naciśnij y i nadpisz plik

Teraz utworzymy te dwa pliki bazy danych db.autun.hom i db.192 w folderze stref

Najpierw utwórz strefy katalogu w / etc / bind /

  sudo mkdir /etc/bind/zones

Przed utworzeniem plików pozwól mi wyjaśnić, że mam różne urządzenia

Adresy IP urządzeń

  • Sam serwer 192.168.1.5
  • Brama 192.168.1.1
  • Win7pc 192.168.1.50

Teraz w katalogu stref utworzymy najpierw dwa pliki db.autun.hom . Właśnie kopiuję plik db.local już obecny w folderze / etc / bind do folderu stref, zmieniając jego nazwę na db.autun.hom . Umieszczę te adresy IP w moim pliku db.autun.hom. Zaczynajmy

sudo cp /etc/bind/db.local  /etc/bind/zones/db.autun.hom

Teraz użyj poniższego polecenia, aby edytować plik

sudo nano /etc/bind/zones/db.autun.hom

 ;
 ; BIND data file for local loopback interface
 ;
 $TTL    604800
 @       IN      SOA     nefitari.autun.hom. webuser.autun.hom. (
                          2         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
  ;
autun.hom.      IN  NS  nefitari.autun.hom.
autun.hom.      IN  A   192.168.1.5
   ;@               IN  A   127.0.0.1
   ;@               IN  AAAA    ::1
nefitari            IN  A   192.168.1.5
gateway         IN  A   192.168.1.1
win7pc          IN  A   192.168.1.50
www     IN  CNAME   autun.hom.

Zapisz i wyjdź

  • Webuser.autun.hom. to adres e-mail, który uzyska dostęp do serwera nazw. Możesz napisać dowolną nazwę zamiast webuser, np. Admin, root lub host master itp.
  • Autun.hom. to mój NS oznacza serwer nazw
  • Autun. Dom. Zmiana na IP 192.168.1.5
  • @ IN A 127.0.0.1 i AAAA :: 1 można skomentować, nie powinno być to potrzebne, ponieważ plik db.local jest już obecny w pliku / etc / bind, to tylko kopia tego pliku. Więc nie musisz go usuwać
  • Zmiana Nefitari na IP 192.168.1.5
  • Brama do IP 192.168.1.1
  • Win7pc możesz nazwać komputery z systemem Windows lub klientów Linux na dowolną nazwę, ale pamiętaj, że adres IP tego klienta musi być poprawnie wstawiony do pliku. W moim przypadku podałem adres IP systemu Windows 192.168.1.50
  • Wreszcie, używam CNAME oznacza kanoniczną nazwę, to tylko alias do nefitari. Oznacza, że ​​możesz uzyskać dostęp do swojego serwera, wpisując www.autun.hom zamiast nefitari.autun.hom. Możesz to pominąć lub skomentować. To zależy od ciebie.

Teraz utwórz plik strefy wyszukiwania wstecznego

sudo cp /etc/bind/db.127    /etc/bind/zones/db.192

Teraz użyj poniższego polecenia, aby edytować plik

sudo nano /etc/bind/zones/db.192

   ;
   ; BIND reverse data file for local loopback interface
   ;
   $TTL    604800
   @       IN      SOA     nefitari.autun.hom. webuser.autun.hom. (
                          2         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
   ;
        IN  NS  nefitari.
1   IN  PTR gateway.autun.hom.
5   IN  PTR nefitari.autun.hom.
50  IN  PTR win7pc.autun.hom.

Zapisz i wyjdź

Teraz, kiedy skończysz z plikiem strefy, musisz sprawdzić, czy działa poprawnie, czy nie, wprowadzając poniższe polecenie dla pliku strefy przesyłania dalej

named-checkzone autun.hom /etc/bind/zones/db.autun.hom
zone autun.hom /IN: loaded serial   2
Ok

Teraz sprawdź plik strefy odwrotnej

named-checkzone autun.hom /etc/bind/zones/db.192
zone autun.hom /IN: loaded serial   2
Ok 

Jeśli wyjście nazwanej strefy kontrolnej jest takie samo jak powyżej, to działa dobrze, w przeciwnym razie popełniłeś błąd w pliku.

Teraz edytuj plik resolv.conf

sudo nano /etc/resolv.conf

nameserver      192.168.1.5
domain      autun.hom
search      autun.hom

Wpisz następujące wiersze do pliku resolv.conf i zapisz go

Uruchom ponownie powiązanie

sudo /etc/init.d/bind9 restart

Po rozpoczęciu wiązania sprawdź ustawienia w pliku dziennika

tail -f /var/log/syslog

nie może zawierać żadnego błędu w dzienniku

Sprawdzanie stref przekazywania

host –l autun.hom

Dane wyjściowe powinny się podobać

 autun.hom name server nefitari.autun.hom.
 autun.hom has address 192.168.1.5
 gateway.autun.hom has address 192.168.1.1
 nefitari.autun.hom has address 192.168.1.5
 win7pc.autun.hom has address 192.168.1.50

Teraz użyj NSLOOKUP

nslookup autun.hom

WYNIK

Server: 192.168.1.5
Address: 192.168.1.5#53

Name: autun.hom
Address: 192.168.1.5

Użyj DIG

 dig gateway.autun.hom

 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35612
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

 ;; QUESTION SECTION:
 ;gateway.autun.hom         IN  A

 ;; ANSWER SECTION:
 gateway.autun.hom      604800  IN  A   192.168.1.1

 ;; AUTHORITY SECTION:
 Autun.hom.     604800  IN      NS  nefitari.autun.hom. 

 ;; ADDITIONAL SECTION:
 Nefitari.autun.hom.    604800  IN      A   192.168.1.5

 ;; Query time: 12 msec
 ;; SERVER: 192.168.1.5#53(192.168.1.5)
 ;; WHEN: Thu Aug 8 01:56:25 2013
 ;; MSG SIZE  rcvd: 90

Dane wyjściowe powinny być podobne do powyższych, sprawdź status: NOERROR oznacza, że ​​to rozwiązuje sprawdź SEKCJA ODPOWIEDZI: gateway.autun.hom jest rozdzielony na 192.168.1.1

Sprawdzanie strefy odwrotnej

 host 192.168.1.1

Wynik

 1.1.168.192.in-addr.arpa domain name pointer gateway.autun.hom

Jeśli pojawi się błąd jak poniżej

 host 1.1.168.192.in-addr.arpa. not found: 3(NXDOMAIN)

Oznacza to, że popełniłeś błąd w pliku /etc/bind/named.conf.local w strefie odwrotnej. Jeśli adres IP twojego serwera to 192.168.1.5, strefa odwrotna wygląda następująco:

zone "**1.168.192**.in-addr.arpa" {
 correct ip reversing
};

Czasami ludzie popełniali błąd podczas odwracania adresu IP jak (tylko przykład)

zone "**0.168.192**.in-addr.arpa" {
incorrect ip reversing
};

Użyj NSLOOKUP

nslookup 192.168.1.1

Server: 192.168.1.5
Address: 192.168.1.5#53

1.1.168.192.in-addr.arpa    name=gateway.autun.hom

Jeśli pojawią się błędy typu NXDOMAIN lub SERVFAIL, oznacza to, że jeden z plików strefy nie działa poprawnie

Teraz możesz pingować Ubuntu.com lub wykopać Ubuntu.com po raz pierwszy, aby rozwiązać nazwę Ubuntu.com, potrwa kilka milisekund, ale kiedy uruchomisz ją po raz drugi , zajmie to 1, 2 lub 3 sekundy, zwykle od 1 do 10 miliardów sekundy są normalne i oznacza to, że Twój DNS działa poprawnie

Konfigurowanie klientów

strona okna

  • otwarte połączenia sieciowe
  • wybierz zmień ustawienia adaptera
  • wybierz właściwości
  • wybierz wersję protokołu internetowego IPv4

i tutaj podaj adres IP (w moim przypadku jest to 192.168.1.50 czy pamiętasz win7pc)

  • Adres IP 192.168.1.50
  • Maska podsieci 255.255.255.0
  • Brama domyślna 192.168.1.1
  • podstawowy DNS 192.168.1.5 (mój nowy adres IP serwera DNS BIND)
  • w tym samym oknie wybierz Advance
  • wybierz zakładkę DNS
  • Wpisz poniżej pole tekstowe W sufiksie DNS dla tego połączenia: autun.hom
  • kliknij ok
  • kliknij na zatwierdź ustawienie przy wyjściu
  • Kliknij OK

i skończysz z otwartym CMD

ping gateway

musi dać ci kilka odpowiedzi

podobnie

ping 192.168.1.1 or 5

musi dać ci kilka odpowiedzi

Przetestuj swój serwer w świecie zewnętrznym

Teraz możesz pingować Ubuntu.com lub wykopać Ubuntu.com po raz pierwszy, aby rozwiązać nazwę Ubuntu.com, potrwa kilka milisekund, ale kiedy uruchomisz go po raz drugi, zajmie to od 1 do 10 miliardów sekund, jego normalny czas i oznacza to, że Twój DNS działa poprawnie Konfigurowanie klientów

strona okna

otwórz połączenia sieciowe wybierz zmień ustawienia adaptera wybierz właściwości wybierz protokół internetowy wersja IPv4

i tutaj podaj adres IP (w moim przypadku jest to 192.168.1.50 czy pamiętasz win7pc)

Adres IP 192.168.1.50

Maska podsieci 255.255.255.0

Brama domyślna 192.168.1.1

podstawowy DNS 192.168.1.5 (mój nowy adres IP serwera DNS BIND)

wybierz Advance (w tym samym oknie)

wybierz zakładkę DNS

Wpisz poniżej pole tekstowe W sufiksie DNS dla tego połączenia: autun.hom

kliknij ok

kliknij na zatwierdź ustawienie przy wyjściu

kliknij ok

i skończysz z otwartym CMD

Kod:

 ping gateway

musi dać ci kilka odpowiedzi

podobnie

Kod:

 ping 192.168.1.1 or 5

musi dać ci kilka odpowiedzi, których możesz użyć Kod NSLOOKUP :

 nslookup gateway

KLIENCI LINUX

Kod:

 sudo nano /etc/network/interfaces

wpisz następujące wiersze

Kod:

 auto eth0
 iface eth0 inet dhcp

Teraz uruchom ponownie Network Deamons

Kod:

 sudo /etc/init.d/networking restart

w celu wymuszenia klienta odnowienia polecenia IP

Kod:

 sudo dhclient -r

Teraz uzyskaj nowy adres IP:

Kod:

 sudo dhclient

Jeśli korzystasz z serwera DHCP w swojej sieci, wprowadź nazwę domeny i serwer nazw w pliku dhcpd.conf; na przykład mam serwer DNS o nazwie nefitari.autun.hom, a adres IP to 192.168.1.5, jak pod

Kod:

 option domain-name "nefitari.autun.hom";
 option domain-name-server  192.168.1.5;

źródło


7
Szkoda, że ​​ta strona ma 3726 wyświetleń uniq, a odpowiedź ma tylko jedną opinię. Jeśli było ci to pomocne, oceń to!
fotanus,

12
Ta odpowiedź jest poprawna, z wyjątkiem części dotyczącej edycji /etc/resolv.conf. Od Ubuntu 12.04 nie edytujesz tego pliku ręcznie, ale konfigurujesz w tym celu resolvconf. Ustaw RESOLVCONF = tak w / etc / default / bind9, aby nazwa BIND 9 zarejestrowała swój lokalny adres nasłuchiwania 127.0.0.1 z resolvconf podczas uruchamiania. Upewnij się, że /etc/resolv.conf jest dowiązaniem symbolicznym ../run/resolvconf/resolv.conf.
jdthood

1
błędy syslog - (network unreachable) resolving './NS/IN': 2001:500:3::42#53pochodzą z wiązania próbującego rekurencyjnie rozwiązywać zapytania przy użyciu ipv6. Edycja /etc/default/bind9i używanie OPTIONS="-u bind -4"to naprawia. Więcej informacji: serverfault.com/questions/77325/unreachable-resolving-domain
nie łatka

Właśnie dostałem konfigurację z serwerem Ubuntu 16.04 i nadal działa. Poradnik Serverguide na temat DNS to koszmar w porównaniu do tego wyjaśnienia. Jednak musiałem poprawić jeden błąd w aukcji: w pliku db.192zanim IN NS nefitari.to @brakuje. Musiałem także dodać nazwę FQDN, więc moja działająca linia wyglądała tak @ IN NS nefitari.autun.hom., zignorowałem sekcję resolv.conf i postępowałem zgodnie z radą jdthood. Link był już tam z domyślnej instalacji serwera.
CatMan

1
@fotanus Myślę, że to dlatego, że tak długo ludzie zapomnieli przewinąć do góry, aby głosować \
CodyBugstein

1

Odpowiedź jest tylko dodatkiem do powyższego świetnego opisu.

Porada dotycząca rozwiązywania problemów

Bądź bardzo ostrożny z wieloma ”. w plikach konfiguracyjnych, ponieważ każdy z nich jest ważny. Brak pojedynczego „”. może zatrzymać działanie serwera DNS. Nie należy liczyć na wyraźne komunikaty o błędach.

Nauczyłem się, że dobrą praktyką jest używanie bardziej wymownego numeru seryjnego. Bardzo ważne jest zwiększanie numeru seryjnego przy każdej modyfikacji konfiguracji, np. Dodawane są nowe wpisy. Jeśli nie zostanie zwiększony, pomocniczy DNS nie zsynchronizuje nowych ustawień. Sugerowany format to YYYYMMDDss, gdzie ssjest „stary” numer seryjny. Dlatego podczas zwiększania należy zwiększyć sso +1 i ustawić datę na bieżącą datę. Uznałem to za bardzo pomocne przy rozwiązywaniu problemów z konfiguracją. W syslog wyraźnie widać datę i numer seryjny użytego pliku.

W Ubuntu 16.04 zmiana resolv.conf jest przestarzała. Jak pisze jdthood w swoim komentarzu, zastąp ten krok następującą procedurą: - Zmień / etc / default / bind9: nowa będzie wyglądać tak:

   # run resolvconf?
   RESOLVCONF=yes

   # startup options for the server
   OPTIONS="-u bind"

   # use this when you have trouble with IPV6
   #OPTIONS="-u bind -4"

zobacz komentarz z nie-łaty dotyczący problemów z IPV6.

  • umieść dowiązanie symboliczne /etc/resolv.conf w /run/resolvconf/resolv.conf

     cd /etc
     sudo ln -s /etc/resolv.conf /run/resolvconf/resolv.conf
    

Konfiguracja offline

Konfiguracja jest dokładnie taka sama, a nawet nieco łatwiejsza, ponieważ możesz po prostu pominąć sekcje przesyłania. Nie muszą być obecne, więc nie trzeba edytować /etc/bind/names.con.options.

Sieci klasy B.

Jest kilka drobnych zmian wymaganych, aby działało to w przypadku sieci klasy B (zanim pojawią się komentarze, nie ma powodu, dla którego sieć lokalna, nawet w domu, nie mogłaby być klasą B zamiast sieci klasy C) . W tym przykładzie używam numeru sieci 172.20.xx (myślę, że formalną notacją jest 172.20.0.0. Więcej informacji na google rfc1918).

Użyj opisu z pierwszej odpowiedzi, zamień wszystkie adresy IP 192.168.xx na 172.20.xx, użyj dla adresu IP serwera 172.20.0.100 i zmodyfikuj pliki w następujący sposób:

  • nazwa pliku db.192staje się db.172.
  • plik named.conf.localotrzymuje inną sekcję strefy odwrotnej:

    zone "20.172.in-addr.arpe" {
    type master;
    file "/etc/bind/zones/db.172";
    }
    
  • Plik stref odwrotnych zmienia się na:

    ;
    ; BIND reverse data file for 172.20.x.x
    ;
    $TTL    604800
    @       IN      SOA     nefitari.autun.hom. webuser.autun.hom. (
                 2017022102         ; more intuitive serial YYYYMMDDss, here ss=02
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
    
    ; note: the '@'was missing from in the initial description
    @       IN  NS  nefitari.autun.hom.    
    
    100.0   IN  PTR nefitari.autun.hom. 
    121.0   IN  PTR client1.autun.hom.
    130.0   IN  PTR client2.autun.hom.
    33.0    IN  PTR client3.autun.hom.
    

Reszta jest taka sama.

Mam nadzieję, że jest to przydatne dla kogoś.


Czy to działa, jeśli chcesz używać zarówno adresów 172.16, jak i 172.20?
kojow7

@ kojow7. Bardzo dobre pytanie. Nie wiem, ale aby się dowiedzieć, możesz albo zaznaczyć drugą strefę i drugi plik zwrotny. Łatwo go przetestować za pomocą polecenia nslookup. A może lepiej, po prostu użyj maski sieci, która zawiera zarówno 172.16. i 172,20. Maska sieci nie byłaby tak prosta jak 255.255.0.0, ale zawierałaby inne liczby oprócz 0 i 255, ale w sieci można znaleźć samouczki, jak to wymyślić, na wypadek, gdybyś jeszcze tego nie wiedział. Jeśli go rozwiązałeś, rozważ opublikowanie go tutaj z korzyścią dla innych.
CatMan,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.