Dziś jakoś dzień "popłynął" mi w strone DNS-ów. Umieściłem na stronie DUG w FAQ szybką konfiguracje serwera dns BIND 9 . Chciałem tutaj zamieścić dokument, który stworzyłem jakiś czas temu, dla praktykantów by mogli "liznąć" konfiguracje serwera DNS. Pozdrowienia dla chłopaków :)Konfiguracja serwera Bind w wersji 9 do schematu znajdującego się poniżej. Zasada działania DNS dość ładnie opisana jest na wikipedii oraz w dokumentach RFC 1035 i RFC 1034 . Cała konfiguracja została przygotowana na maszynach wirtualnych, ale bez problemu można ją użyć na maszycnach fizycznych.

Do zrealizowania mamy następujące zadania :

  1. Skonfigurowanie na maszynach wirtualnych adresów ip.

  2. Skonfigurowanie katalogu /etc/resolv.conf.

  3. Skonfigurowanie serwera jako master.

  4. Konfiguracja plików stref.

  5. Konfiguracja serwera jako slave.

  6. Konfiguracja odwrotnego zapytania.

W tym labie skorzystam z dwóch wcześniej przygotowanych obrazów wirtualnych na których jest zainstalowany Debian 5.0 z jądrem w wersji 2.6.26-2-686. W tej chwili nie będę tworzył dodatkowych wirtualek na pc1 oraz serwer www, wszystko to będzie tworzone w obrębie jednej maszyny wirtualnej ns2. Gdy już mamy maszyny to w jednej jak i w drugiej wybieramy Ustawienia -> Sieć -> Karta1 -> Podłączona do i z listy wskazujemy Host-only Adapter. Robimy to by maszyny wirtualne nawzajem widziały się w sieci. Gdy nie mamy zainstalowanego binda wydajemy polecenie : aptitude install bind9.

 

1. Skonfigurowanie na maszynach wirtualnych adresów ip.

Uruchamiamy obydwie maszyny ns1 i ns2. Gdy maszyny zostały uruchomione czas by skonfigurować interfejsy. Żeby dodać kilka adresów do jednej karty sieciowej możemy skorzystać z aliasów ( http://linux.msstudio.com.pl/Howto/ip_alias/IP-Alias.pl.html#toc2) lub z polecenia ip (http://pl.docs.pld-linux.org/siec_narzedzia.html). Ja skorzystam z drugiej opcji czyli z polecenia ip. Sprawdzamy pod którym eth jest widoczna nasza karta sieciowa :

Następnie dodajemy adres ip 192.168.100.10 z maską 255.255.255.0 do eth1 i podnosimy interfejs :

Dodajemy drugi adres ip 192.168.100.20 z prefixem /24 :

Widzimy, że do eth1 są dopisane dwa adresy ip. Gdy sprawdzimy dopisane adresy ip na karcie eth1 uzywając polecenia ifconfig, będzie widoczne tylko jedno ip. Dzieje się tak bo ifconfig do dopisania następnego ip używa wspomnianych wcześniej aliasów.

Te same kroki robimy na maszynie ns2 :

 

Następnie sprawdzamy czy maszyny się widzą pingując adresy ip. Pingi ns1 na ns2 :

 

Ping ns2 na ns 1 :

Są odpowiedzi więc wszystko jest skonfigurowane ok.

 

2. Skonfigurowanie katalogu /etc/resolv.conf

Do pliku /etc/resolv.conf dodajemy IP serwerów DNS. Jeśli nie mamy takiego pliku w katalogu /etc utwórzmy go w ulubionym edytorze lub przy pomocy touch. Na ns1 wpisy będą następujące :

 

Na ns2 wpisy będą wyglądać tak :

Pierwszy nameserver niech będzie miał adres ip serwera na którym stoi bind.

 

3. Skonfigurowanie serwera jako master

Na maszynie ns1 edytujemy w edytorze plik /etc/bind/named.conf

 

Plik /etc/bind/named.conf składa się z bloków wyrażeń. Warto przejrzeć ten plik by zapoznać się z jego budową. Sekcja zone służy do definiowania stref obsługiwanych przez serwer. "firma.pl" jest nazwą strefy. "type" jest to typ strefy tutaj master czyli serwer główny.Mogą jeszcze występować :

slave – serwer zapasowy, uaktualniający dane z głównego serwera

hint – określa listę root-serwerów

W następnym wierszu mamy file "/etc/bind/firma.pl", który wskazuje nam ścieżkę dostępu do pliku strefy. Plikiem strefy zajmiemy się w 4 punkcie. Sprawdzenie poprawności pliku named.conf odbywa poprzez wydanie w katalogu w którym ten plik się znajduje polecenia :

 

4. Konfiguracja plików stref.

Tak jak w pliku /etc/bind/named.conf zdefiniowaliśmy ścieżkę do pliku strefy tam tworzymy ten plik. Dobrze żeby plik miał taka sama nazwę jak strefa w /etc/bind/named.conf. Żeby nie tworzyć od początku pliku skopiujemy sobie domyślny plik /etc/bind/db.local do naszego pliku firma.pl.

 

Plik domyślny wygląda tak :

 

 

; – (Średnik) w tym pliku odpowiadają za komentarz.

$ORGIN – określa nazwę domyślną domeny.Jeżeli wpis nazwy w rekordzie nie jest zakończony kropką, wartość $ORGIN dołączana jest do jej końca. Znak @ zastępuje domyślną nazwę określoną za pomocą $ORGIN.

$TTL – określa domyślną wartość czasu życia rekordu strefy.

$INCLUDE – dzięki tej dyrektywie można dołączyć plik do pliku strefy.

IN – definiuje klasę adresu tutaj internet.

SOA – (ang. Start of authority) informacje o domenie.

Serial – numer seryjny pliku. Po wprowadzeniu zmian należy zmienić numer seryjny.

Refresh – informacja dla serwerów podrzędnych jak często powinny sprawdzać aktualizacje.</ol>

Retry – gdy główny serwer nie odpowiada na zapytania o aktualizacje to wartość wpisana w tym rekordzie mówi serwerowi podrzędnemu jak często ma pytać.

Expire – gdy główny serwer jest niedostępny przez dłuższy czas ta wartość mówi serwerowi podrzędnemu jak długo ma używać posiadane dane.

Negative Cache TTL – odpowiedź negatywna jeśli żądany rekord nie istnieje.

A – (ang.Address) translacja nazwy na adres ip.

CNAME – (ang.Cannonical Name) alias

NS – (ang.Name Server) wskazanie na serwer nazw dla danej domeny.

MX – (ang.Mail Exchange) wskazanie serwera pocztowego dla danej domeny.

PTR – (ang.Pointer) translacja adresu ip na nazwę.

HINFO – (ang.Host Info) informacje o sprzęcie.

AAAA – (ang.IPv6 Address) translacja nazwy na adresy IPv6

TXT – (ang.Text) pozwala dołączyć tekst do rekordu DNS.

SRV – (ang.Service) informacje na temat usługi.

 

Gdy już wiemy co dane rekordy w pliku strefy oznaczają możemy przystąpić do jego edycji. Zamiast localhost wpisujemy swoją domenę czyli firma.pl. Zmieniamy serial, myślę że najlepszą opcją będzie wpisanie daty kiedy nastąpiła zmiana w pliku.Dalej podajemy rekordy NS czyli ns1.firma.pl. i ns2.firma.pl. nie zapominajmy o kropce na końcu.Oznacza ona że jest to pełna nazwa domeny i gdy zabraknie jej to bind stwierdzi, że musi uzupełnić nazwę i wtedy mogą się pojawić głupoty w stylu ns2.firma.pl.firma.pl. Następny rekordy to rekord A który będzie wskazywał adresy ip dla nazw. Jeszcze musimy dodać rekordy NS i A strony głównej znajdującej się na serwerze ns2 w mieście abc. Wyedytowany plik będzie wyglądał tak :

 

Sprawdzenie pliku strefy odbywa się poprzez polecenie :

 

Na drugim serwerze tworzymy w podobny sposób plik strefy, ale nadajemy mu inna nazwę by się "nie gryzły" pliki przy aktualizacji.

 

Tak samo jak poprzednio edytujemy plik strefy abc.firma.pl.

 

Sprawdzamy plik strefy abc.firma.pl :

 

 

5. Konfiguracja serwera jako slave.

Na serwerze ns2 otwieramy plik /etc/bind/named.conf i dodajemy wpis :

 

Sprawdzamy poprawnośc pliku named.conf i przechodzimy do serwera ns1. Tutaj edytujemy też plik /etc/bind/named.conf :

 

Sprawdzamy plik named.conf i startujemy daemona bind9 :

 

To samo robimy na ns2 :

 

Sprawdzenie rozwiązywania nazw na ns1 :

 

Sprawdzenie rozwiązywania nazw na ns2 :

 

 

6. Konfiguracja odwrotnego zapytania.

Na serwerze ns1 kopiujemy plik firma.pl do pliku firma.pl.rev, który bedzie naszym plikiem odwrotnych zapytań. Zamieniamy rekord A na PTR, plik powinien wyglądac następujaco :

 

Zamienione zostały tylko dwa rekordy A na poczatku zamiast nazwy jest końcowy numer adresu IP, rekord PTR i zamist adresu IP nazwa zrozumiała dla czlowieka. W pliku stref dodajemy sekcje odpowiedzialną za odwrotne zapytania :

 

i sprawdzamy na ns2 :

I wykonaliśmy nasze 6 założeń. 

Jeśli ktoś zauważy jakieś błędy, proszę o maila na kontakt.małpa.jarekw.eu.