Ubuntu Server – DNS i hosty wirtualne apache

article-thumbnail

W poprzednim wpisie omówiłem, jak zainstalować i skonfigurować serwer stron internetowych Apache2. Dzisiaj pora na poznanie serwera DNS na Linuksie, którym jest BIND. Umożliwi nam to skonfigurowanie systemu hostów wirtualnych, który jest dostarczony wraz z już zainstalowanym przez nas serwerem www.

Instalacja DNS’a

Zanim zainstalujemy potrzebne składniki, zaktualizujmy repozytorium menadżera pakietów apt.

sudo apt update
sudo apt upgrade

Teraz pobierzmy niezbędne składniki.

sudo apt install bind9 -y

Konfiguracja DNS

Na początek przejdźmy do edycji pliku konfiguracyjnego BINDa. Wpisujemy polecenie

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

Usuwamy znak komentarza ( // ) z opcji forwarders i wpisujemy do środka wybrane przez nas adresy IP serwerów DNS. Ja użyłem adresów DNS firmy Google. Są to 8.8.8.8 i 8.8.4.4.

Następnie zapisujemy zmiany i zamykamy edytor. Kolejnym krokiem jest użycie polecenia

sudo systectl restart bind9

W tym momencie nasz DNS powinien już działać, i pozwalać komputerom, które z niego korzystają na używanie nazw domenowych zamiast adresów IP. Aby sprawdzić, czy rzeczywiście tak jest, ustaw na komputerze klienckim adres DNS’a na adres serwera i użyj polecenia np.

ping google.com

Jeżeli wszystko działa, to DNS jest skonfigurowany poprawnie do tego zadania.

Konfiguracja Hostów wirtualnych

Najpierw stwórzmy nowego użytkownika, tak samo jak w poprzednim wpisie.

sudo adduser –shell /usr/sbin/nologin <nazwa>

Następnie tworzymy katalog public_html w profilu tego użytkownika, i zmieniamy mu właściciela.

sudo mkdir /home/<użytkownik>/public_html
sudo chown <grupa>:<użytkownik> /home/<użytkownik>/public_html

Kolejnym krokiem, jest przejście do katalogu /etc/apache2/sites-avaible i skopiowanie pliku 0000-default.conf.

cd /etc/apache2/sites-available/
sudo cp 0000-default.conf <nazwa domeny hosta>.conf

Następnie edytujemy skopiowany plik konfiguracyjny.

sudo nano <nazwa domeny hosta>.conf

Uzupełniamy go tak, aby znalazły się w nim poniższe linie.

ServerName <nazwa domeny>
ServerAlias <alternatywna nazwa domeny>
ServerAdmin root@<nazwa domeny>
DocumentRoot /home/<użytkownik>/public_html

Przykładowo u mnie wygląda to tak

Teraz musimy włączyć naszego hosta poleceniami

sudo a2ensite test.local
sudo systemctl restart apache2

Następnie przechodzimy do katalogu /etc/bind/. Chcemy skopiować plik db.empty i zmienić nazwę tejże kopii na nazwę naszej domeny. Na przykład:

Kolejnym krokiem jest edycja tak stworzonego pliku. Powinien on wyglądać tak jak na poniższym zdjęciu (oczywiście z wszelkie nazwy musicie dostosować do własnych potrzeb).

Następnie edytujemy plik named.conf.local. Uzupełniamy go o następujące linie.

zone „<nazwa domeny>” {
type master;
file „/etc/bind/<domena>”;
};

U mnie wygląda to następująco.

Teraz musimy sprawdzić, czy wszystko działa. W tym celu najpierw użyjmy polecenia

sudo named-checkzobe <domena> /etc/bind/<domena>

A następnie restartujemy usługę DNS i sprawdzamy jej status

sudo systemctl restart bind9.services
sudo systemctl status bind9.services

Na końcu przejdźmy do przeglądarki i wpiszmy w pasku adresu http://test.local.

Dodawanie lokalnej nazwy domenowej komputerom fizycznym, polega na wykonaniu tych samych czynności co konfiguracja BIND’a, czyli kolejno:
1. Kopiujemy plik db.empty i zmieniamy nazwę tak otrzymanego pliku.
2. Uzupełniamy go o nazwę domeny, adresu IP i nazwę serwera nazw.
3. Dodajemy odpowiedni wpis do pliku named.conf.local.
4. Restartujemy usługę.