Na początku musimy podłączyć do naszego serwera jakiegoś klienta. Będzie nim host z zainstalowanym systemem Ubuntu Desktop 16.04. W ustawieniach naszego Virtual Box'a klient i serwer muszą mieć ustawione na swoich interfejsach sieciowych Sieć wewnętrzną i taką samą jej nazwę - u nas LAN-Ubuntu.
Sprawdzamy na kliencie (Ubuntu Desktop) ustawienia karty sieciowej. Uruchamiamy terminal i wydajemy polecenie ip a. Widzimy, że interfejs enp0s3 nie ma przypisanego adresu IP i dlatego teraz musimy go skonfigurować.
Możemy to zrobić poprzez konfigurację pliku interfaces lub w trybie graficznym, uruchamiając Sieć. Tam wybieramy Przewodowe, włączamy je i wchodzimy w Opcje, gdzie wprowadzamy adres IP, maskę, bramę i DNS. Wykorzystujemy adresację z podsieci, obowiązującej na serwrze.
Po kliknięciu przycisku Zapisz wyłączamy i włączamy kartę sieciową (suwak w prawym górnym rogu). Widać, że konfiguracja została pobrana właściwie.
Możemy też w terminalu sprawdzić poleceniem ip a. Jak widać, wszystko się zgadza.
Teraz pozostaje nam już tylko sprawdzić połączenie między klientem, a serwerem wykorzystując polecenie ping. Ping z klienta na serwer.
A teraz ping z serwera na klienta. Jak widać pingi działają w obie strony.
Zanim przejdziemy do instalacji serwera dhcp, powinniśmy sprawdzić czy mamy dostęp do Internetu. Wykonujemy do poleceniem: ping 8.8.8.8 oraz ping www.google.pl. Jak widać nie mamy połączenia z adresem www.google.pl ale mamy połączenie z adresem 8.8.8.8. Oznacza to, że brak nam serwera DNS odpowiedzialnego za tłumaczenie nazw domenowych.
Uruchamiamy plik resolv.conf poleceniem sudo nano /etc/resolv.conf i dopisujemy adres "goooglowskiego" serwera DNS wpisem nameserver 8.8.8.8. Zapisujemy zmiany i sprawdzamy połączenie.
Następnie wykonujemy do polecenie: ping www.google.pl i widzimy, że połączenie działa prawidłowo.
To rozwiązanie ma jedną wadę. Po restarcie systemu (bądź sieci) plik ten jest nadpisywany. Dlatego najlepiej edytować plik /etc/network/interfaces i tam dopisać adres serwera DNS (nawet dwa) - tak jak wyżej. Zapisać zmiany, zrestartować sieć i wszystko powinno być OK.
Po restarcie sieci poleceniem sudo systemctl restart networking wszystko działa właściwie.
Teraz możemy zainstalować usługę serwera dhcp. Wystarczy wydać polecenie sudo apt install isc-dhcp-server. Akceptujemy zmiany, które zostaną wprowadzone w systemie naciskając literkę T.
Po akceptacji zmian następuje instalacja usługi. Jak widać wszystko przebiegło pomyślnie.
Sprawdzamy czy nasza usługa działa poleceniem sudo systemctl status isc-dhcp-server. Jak widzimy jeszcze nie, a to oznacza, że musimy ją skonfigurować. Edytujemy odpowiedni plik poleceniem sudo nano /etc/default/isc-dhcp-server
Następnie wskazujemy, który interfejs powinien obsługiwać żądanie dhcp. U nas będzie to enp0s8. Wprowadzamy go i zapisujemy zmiany w pliku.
Następnie edytujemy kolejny plik poleceniem sudo nano /etc/dhcp/dhcpd.conf. Wprowadzamy klika zmian, np. w opcjach wspólnych dla wszystkich sieci dodamy domenę egzamin.local, nazwę pełną serwera serwer110.egzamin.local oraz authoritative uaktywniamy. Zapisujemy zmiany w pliku i przechodzimy do kolejnej jego sekcji.
Przechodzimy do sekcji dotyczącej konfiguracji wewnętrznej podsieci i tam podajemy adresację z naszej podsieci:
adres podsieci: 10.80.80.0
maska podsieci: 255.255.255.0
zakres serwera dhcp (50 adresów): 10.80.80.150 10.80.80.199
adres serwera DNS: 10.80.80.1
nazwa domeny: "egzamin.local"
maska podsieci: 255.255.255.0
adres routera: 10.80.80.1
adres rozgłoszeniowy: 10.80.80.255
czasy dzierżawy pozostawiamy bez zmian
Zapisujemy zmiany i zamykamy nasz plik.
Następnie uruchamiamy nasz serwer dhcp poleceniem sudo systemctl start isc-dhcp-server oraz sprawdzamy czy usługa została włączona poleceniem sudo systemctl status isc-dhcp-server. Jak widać nasza usługa działa.
Teraz idziemy na klienta i sprawdzamy czy serwer dhcp przydzieli nam odpowiedni adres. Jak widzimy, mamy adres nie z puli serwera dhcp, ale wynika to z tego, że mamy przypisany ręcznie do karty sieciowej. Przestawiamy zatem na dhcp.
Znanym już sposobem uruchamiamy Sieć. Tam wybieramy Przewodowe, wchodzimy w Opcje i w zakładce Ustawienia IPv4 ustawiamy Automatycznie. Zapisujemy zmiany, wracamy do terminala i restartujemy ustawienia sieciowe.
W terminalu wpisujemy sudo systemctl restart networking. Chwilę czekamy i sprawdzamy adresację. Jak widzimy karta sieciowa pobrała pierwszy dostępny adres, czyli 10.80.80.150.
Możemy też sprawdzić (jeśli mamy taką fizyczną możliwość) co będzie pobierał drugi klient, z systemem operacyjnym Windows. Uruchamiamy wiersz poleceń i wpisujemy ipconfig. Jak widzimy karta sieciowa pobrała kolejny dostępny adres, czyli 10.80.80.151. Możemy nawet "puścić pinga" na drugiego klienta.
Z poziomu serwera możemy też sprawdzić kto obecnie jest do nas podłączony (korzysta z dzierżawy). Używamy do tego polecenia sudo dhcp-lease-list. Jak widać jest jakiś problem z plikiem dhcp-lease-list.
Edytujemy plik sudo nano /usr/sbin/dhcp-lease-list, odnajdujemy wpis my $LEASES = '/var/db/dhcpd.leases' i podmieniamy go na my $LEASES = '/var/lib/dhcp/dhcpd.leases'
Po podmianie wpisu zapisujemy zmiany w pliku i zamykamy go.
Teraz ponownie sprawdzamy z serwera, kto korzysta z dzierżawy naszego serwera dhcp poleceniem sudo dhcp-lease-list. Widzimy, że aktualnie mamy dwóch klientów z odpowiednimi adresami.
Na koniec możemy zarezerwować konkretny adres IP dla konkretnego komputera. Edytujemy plik sudo nano /etc/dhcp/dhcpd.conf i tam dopisujemy rezerwację adresu. Pamiętajmy, że musimy podać adres MAC komputera dla którego dokonujemy rezerwacji.
Zapisujemy i restartujemy serwer dhcp.Resetujemy też ustawienia karty sieciowej na kliencie i sprawdzamy adres. Jak widzimy działa
Jak widzimy powyżej, połączenie klienta z serwerem jest, na serwerze mamy dostęp do Internetu, ale na kliencie nie. Musimy więc skonfigurować routing na serwerze.
Najpierw edytujemy odpowiedni plik poleceniem sudo nano /proc/sys/net/ipv4/ip_forward i zmieniamy tam wartość z 0 na 1. Zapisujemy oczywiście zmiany.
By wartość ta nie zmieniała się po restarcie systemu, trzeba edytować plik /etc/sysctl.conf i tam dokonać jeszcze pewnych zmian. Edytujemy plik poleceniem: sudo nano /etc/sysctl.conf i wyszukujemy wpis #net.ipv4.ip_forward = 1 i należy go "odhaszować".
Musimy jeszcze dokonać małej korekty w firewall’u: najpierw wpisujemy w konsoli: sudo iptables –t nat –A POSTROUTING –o enp0s3 –j MASQUERADE
A następnie edytujemy plik poleceniem: sudo nano /etc/rc.local i wpisujemy do niego (przed exit0) powyższą linijkę. Zapisujemy oczywiście zmiany, restartujemy serwer i sprawdzamy czy routing działa.
Sprawdzamy na kliencie czy działa Internet. Jak widać ping na stronę zse.rzeszow.pl nie zadziałał, ale możemy jeszcze sprawdzić ping na adres serwera DNS 8.8.8.8. Połączenie jest, więc nasz serwer nie przydziela adresu DNS umożliwiającego połączenie z Internetem naszej karcie, co widać wyżej.
Wracamy na nasz serwer i tam dokonujemy małej poprawki w pliku sudo nano /etc/dhcp/dhcpd.conf. Odszukujemy opcje serwera dhcp i dopisujemy drugi adres serwera DNS 8.8.8.8. Zapisujemy zmiany.
Restartujemy jeszcze nasz serwer dhcp poleceniem sudo systemctl restart isc-dhcp-server.
Restartujemy ustawienia sieciowe na kliencie i sprawdzamy powownie połączenie z Internetem. Jak widać wszystko jest OK.