Etykiety

czwartek, 29 grudnia 2016

Serwer DHCP Linux - Podstawowa konfiguracja

Serwer DHCP umożliwia automatyczne przydzielanie adresów IP klientom sieciowym obsługującym ten protokół, ale jego rola nie kończy się na tym zadaniu. Wraz z adresem IP, maszyny klienckie moga otrzymywać wiele innych informacji związanych ze środowiskiem sieciowym, takich jak adresy routerów, adresy serwerów DNS, adresy serwerów WINS i wiele innych. W ten sposób użytkownicy poszczególnych komputerów w sieci, nie muszą ani znać, ani recznie wprowadzać tych informacji w ustawieniach interfejsów sieciowych swoich maszyn. Jest to szczególnie pożyteczne w rozległych sieciach, w których znajduje się duża ilość komputerów.

W tym tutorialu, pierwszym z serii poświęconej zagadnieniom DHCP / BIND, ograniczam się do wyjaśnienia jak uruchomić, z podstawowymi ustawieniami konfiguracyjnymi, serwer DHCP na maszynach pracujących pod kontrolą systemów Red Hat Linux, Fedora lub Centos. Choć w większości innych dystrybucji systemu Linux konfiguracja sewera DHCP przebiega analogicznie, występują tam pewne różnice związane z pozostałymi kwestiami poruszanymi w tym tutorialu.

Zobaczmy teraz jak pozyskać, zainstalować i skonfigurować pakiet oprogramowania serwera DHCP.

Przed rozpoczęciem, na maszynie na której mamy zamiar zainstalować serwer DHCP, należy ustawić stały adres IP dla interfejsu sieciowego, obsługującego sieć, dla której mamy zamiar skonfigurować oprogramowanie. Aby to zrobić należy edytować odpowiedni skrypt konfiguracyjny interfejsu sieciowego, domyślnie noszący nazwę interfejsu z prefiksem ifcfg-.

Skrypty zawierające konfiguracje interfejsów sieciowych znajdują się w lokalizacji:
/etc/sysconfig/network-scripts/
Ponieważ w naszym przykładzie interfejs sieciowy nosi nazwę enp6s0, plik zawierający ustawienia konfiguracyjne to odpowiednio:
/etc/sysconfig/network-scripts/ifcfg-enp6s0
Konfiguracja interfejsu sieciowego, dla którego ma zostać uruchomiony serwer DHCP, powinna uwzględniać ustawienie stałego adresu IP. Dla naszego przykładu będzie to adres klasy C:
TYPE=Ethernet NAME=enp6s0 ONBOOT=yes HWADDR=10:43:54:E2:CC:18 IPADDR=192.168.0.7 NETMASK=255.255.255.0 GATEWAY=192.168.0.1
Jeśli stały adres IP dla naszego interfejsu nie jest jeszcze ustawiony, warto to zrobić przez przejściem do kolejnego kroku. Należy oczywiście ustawić adres IP należący do podsieci, która ma być obsługiwana przez nasz serwer DHCP, zgodnie z ustawieniami w pliku konfiguracyjnym dhcpd.conf, o którym będzie mowa troszkę dalej.

Po dostosowaniu ustawień interfejsu sieciowego należy zrestartować usługi sieciowe:
[root@amanda ~]# systemctl restart network
Warto teraz upewnić się, że sieć działa jak neleży:
[root@amanda ~]# systemctl status network ● network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) Active: active (exited) since Sun 2016-12-25 21:46:32 CET; 3 days ago Docs: man:systemd-sysv-generator(8) Dec 25 21:46:31 amanda systemd[1]: Starting LSB: Bring up/down networking... Dec 25 21:46:32 amanda network[1207]: Bringing up loopback interface: [ OK ] Dec 25 21:46:32 amanda network[1207]: Bringing up interface enp6s0: [ OK ] Dec 25 21:46:32 amanda systemd[1]: Started LSB: Bring up/down networking. Hint: Some lines were ellipsized, use -l to show in full.
Jeśli usługi sieciowe działają prawidłowo, możemy przejść do instalacji pakietu zawierającego serwer DHCP:
[root@amanda ~]# yum install dhcp
Następnie, przed uruchomieniem serwera DHCP, należy wprowadzić ustawienia konfiguracyjne w pliku dhcpd.conf. Plik dhcpd.conf jest miejscem, w którym określamy co nasz serwer ma robić i jak ma to robić. Może on zawierać rozmaite ustawienia i opcje. Jest tego naprawdę bardzo dużo. Tych, którzy chcieliby już teraz zapoznać się ze wszystkimi możliwościami konfiguracji serwera DHCP, zachęcam do przeczytania manuala dhcpd.conf a także manuala opcji dhcpd.conf. Dla niniejszego przykładu wystarczą jednak poniższe, podstawowe i proste ustawienia:
option routers 192.168.0.1; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.170 192.168.0.180; } host maszyna_janka { hardware ethernet 91:12:e9:a7:97:7b; fixed-address 192.168.0.100; } host hp2055dn { hardware ethernet 00:22:5e:8E:94:61; fixed-address 192.168.0.108; }
A oto znaczenie powyższych ustawień:

option-routers: opcja pozwala określić listę routerów znajdujących się w obsługiwanej podsieci. Jeśli routerów jest więcej, wówczas należy je oddzielić przecinkami;

default-lease-time: ustawienie pozwala określić domyślną wartość czasu ważności przydziału, wyrażoną w sekundach, dla przydziałów, dla których klient nie żąda konkretnego czasu ważności;

max-lease-time: uswtawienie pozwala określić maksymalną wartość czasu przydziału, wyrażoną w sekundach;

authoritative: ustawienie to oznacza, iż serwer DHCP jest autorytatywny dla obsługiwanych podsieci;

log-facility: ustawienie określa sposób prowadzenia dzienników zdarzeń;

subnet: ustawienie pozwala zdefiniować obsługiwane przez serwer podsieci, w których pula przydzielnych adresów IP określana jest słowem kluczowym range;

host: ustawienie umozliwiające zdefiniowanie stałych adresów IP dla maszych znajdujących się w obsługiwancyh podsieciach. Adresy te powinny jednak znajdować się poza zakresami puli przydzielnych adresów;

Przed przystąpieniem do uruchomienia serwera DHCP, warto sprawdzić, czy plik dhcpd.conf nie zawiera błędów, a można to zrobić w następujący sposób:
[root@amanda ~]# dhcpd -t -cf /etc/dhcp/dhcpd.conf Internet Systems Consortium DHCP Server 4.2.5 Copyright 2004-2013 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Uruchamiamy serwer dhcp i sprawdzamy jego status:
[root@amanda ~]# systemctl status dhcpd ● dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-12-29 16:44:42 CET; 3min 15s ago Docs: man:dhcpd(8) man:dhcpd.conf(5) Main PID: 25995 (dhcpd) Status: "Dispatching packets..." CGroup: /system.slice/dhcpd.service └─25995 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid Dec 29 16:44:42 amanda dhcpd[25995]: Wrote 0 leases to leases file. Dec 29 16:44:42 amanda dhcpd[25995]: Listening on LPF/enp6s0/00:23:54:f2:cc:18/192.168.0.0/24 Dec 29 16:44:42 amanda dhcpd[25995]: Sending on LPF/enp6s0/00:23:54:f2:cc:18/192.168.0.0/24 Dec 29 16:44:42 amanda dhcpd[25995]: Sending on Socket/fallback/fallback-net Dec 29 16:44:42 amanda systemd[1]: Started DHCPv4 Server Daemon. Dec 29 16:45:40 amanda dhcpd[25995]: DHCPREQUEST for 192.168.0.111 (192.168.0.6) from 90:02:a9:c5:27:24 via enp6s0: unknown lease 192.168.0.111.
Jeśli chcemy, aby serwer automatycznie się uruchamiał przy starcie systemu, wówczas należy wykonać następujący krok:
[root@amanda ~]# systemctl enable dhcpd Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
Na tym etapie możemy już ustawić maszyny klienckie, do automatycznego pozyskiwania adresów IP. Przykładowo w systemach Windows można to zrobić w następujący sposób:


Automatyczne uzyskiwanie adresu IP - Windows
Automatyczne uzyskiwanie adresu IP w systemie Microsoft Windows

Aby sprawdzić aktualny stan przydziałów, po stronie serwera można to zrobić w następujący sposób:
[root@amanda ~]# cat /var/lib/dhcpd/dhcpd.leases lease 192.168.0.172 { starts 4 2016/12/29 15:45:23; ends 4 2016/12/29 15:55:23; tstp 4 2016/12/29 15:55:23; cltt 4 2016/12/29 15:45:23; binding state free; hardware ethernet 32:d8:1b:f4:69:82; uid "\0014\336\032\363\211\202"; }

Aby otrzymać lub wznowić przydział dla maszyny po kontrolą systemu Windows, można z wiersza poleceń Windows cmd, wydać następujące polecenie:
C:\Users\XNOTE>ipconfig /renew

Aby sprawdzić na wszystkich interfejsach sieciowych danego komputera, czy maszyna kliencka Windows otrzymała przydziały IP, a także odczytać inne informacje pozyskane wraz z przydziałami, można to zrobić w następujący sposób z wiersza poleceń Windows cmd:

C:\Users\XNOTE>ipconfig /all
Powodzenia! W przypadku pytań proszę o komentarze.

Brak komentarzy:

Prześlij komentarz

Dodaj komentarz