DHCP – sam skonfiguruj przydzielanie IP – Debian

Dzisiaj już nikt nie będzie biegał z kartką papieru, na której ma wypisane adresy IP i nazwy komputerów, któremu jaki przydzielić. Tym wszystkim ma zarządzać serwer DHCP. Podpinamy komputer do sieci, parę sekund i już posiada swój adres IP. Teoretycznie zasada działania i konfiguracji serwera DHCP jest prosta – masz tu daną pule adresów, i jak znajdziesz nowy sprzęt, masz mu przypisać kolejno wolny numer. Jednak praktyka swoje pokazuje.

W tym artykule postaram się pokazać jak skonfigurować i zarządzać serwerem DHCP opartego na systemie Debian Lenny.

Na początku sucha teoria.

Abyśmy się mogli wziąć za praktykę, trzeba liznąć trochę teorii, aby wiedzieć co z czym się je. Na początku zajmiemy się czysto plikiem konfiguracyjnym serwera DHCP, o dźwięcznej nazwie dhcpd.conf. Jego lokalizacja to /etc/dhcp3/dhcpd.conf.

Zaraz po zainstalowaniu serwera ten plik nie jest pusty. Zawiera w sobie skonfigurowany interfejs lo oraz eth0. Na sam początek pokażę, jak wygląda przykładowy, poprawnie skonfigurowany wpis:

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.30;
option domain-name-servers 194.204.152.34 , 194.204.159.1;
option domain-name "tm.net.my";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 86400;
max-lease-time 86400;
}

Jak widzimy, trochę poleceń i literek jest. Jednak nie ma co się martwić, wszystko po kolei omówię.

subnet – określa adres danej sieci

netmask – określa maskę podsieci danej sieci

range – określa zakres adresów IP, jakie będą przydzielane

option domain-name-servers – adresy serwerów DNS

option domain-name – nazwa domeny

option routers – określa adres routera sieciowego

option broadcast-address – określa adres broadcastu w naszej sieci

default-lease-time – domyślny czas dzierżawy adresów IP (wyrażony w sekundach)

max-lease-time – maksymalny czas dzierżawy adresów IP (wyrażony w sekundach)

Jednak to jest póki co tylko omówienie konfigu serwera DHCP. Teraz przyszła pora na zapoznanie się z plikiem interfaces. Ten plik odpowiada za konfigurację kart sieciowych w serwerze. Jego lokalizacja to /etc/network/interfaces. Przykładowo wpis konfigurujący kartę sieciową może wyglądać tak:

auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0

Jest tu mniej pisania niż w tamtym pliku, ale i też nie wiadomo co do czego. Otóż:

auto eth0 – podnosi dany interfejs
iface eth0 inet static – określa, czy adres IP ma być przypisywany statycznie czy dynamicznie (tutaj akurat ma być statycznie)
address – adres IP danego interfejsu sieciowego
netmask – maska podsieci
gateway – bramka
network – określa, do której sieci ma przynależeć dana karta sieciowa. Ta opcja będzie nam bardzo potrzebna przy konfiguracji DHCP.

Tak wygląda wpis dla karty sieciowej, której adres IP przypisywany jest statycznie. Zaś dla karty, która ma do wykorzystania DHCP, wpis będzie wyglądał tak:

auto eth3
iface eth3 inet dhcp

…i tyle wystarczy, aby system wiedział, że ma pobrać adres IP z serwera.

Konfigurujemy serwer DHCP.

Teorii byłoby na tyle. Pora zejść na ziemię i wziąć się do roboty. Jednak nim zaczniemy konfigurować, dla celów testowych wymyślimy sobie nasze środowisko pracy.

Mamy komputer, na którym będzie stał serwer DHCP. Ok. Debian zainstalowany, wszystko piknie, karty włożone. Posiadamy 3 komputery: komputer A, komputer B oraz komputer C. I teraz:

komputer A ma pracować w podsieci 192.168.0.0, czas dzierżawy ma wynosić jeden dzień oraz liczba sztuk adresów IP na wynosić 10.

komputer B ma pracować w podsieci 192.168.2.0, czas dzierżawy ma wynosić 2 godziny oraz liczba sztuk adresów IP na wynosić 3.

komputer 3 ma mieć na stałe ustawione przez DHCP adres IP 192.168.5.15 i adres MAC tej karty jest 12:00:11:00:11:00.

Mamy wszystko, co jest nam potrzebne. Przystępujemy do instalacji i konfiguracji.

1.W konsoli wpisujemy
aptitude install dhcp3-server

2.Po instalacji przechodzimy do edycji pliku dhcpd.conf poleceniem

nano /etc/dhcp3/dhcpd.conf

3.Kasujemy całą jego bieżącą zawartość. Na początku konfigurujemy komputer A. Piszemy:

#komputer A
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.29;
option domain-name-servers 194.204.152.34 , 194.204.159.1;
option domain-name "tm.net.my";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 86400;
max-lease-time 86400;
}

Ok. Komputer A gotowy. Teraz pora na komputer B:

#komputer B

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.12;
option domain-name-servers 194.204.152.34 , 194.204.159.1;
option domain-name "tm.net.my";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 7200;
max-lease-time 7200;
}

Gitara. Mamy dwa komputery z głowy. Przy trzecim będzie o wiele mniej pisania:

#komputer C

host komputer_c {
hardware ethernet 12:00:11:00:11:00;
fixed-address 192.168.5.15;
}

Teraz wciskamy klawisz F2, następnie T i Enter. Plik został zapisany. Pora uruchomić serwer DHCP. Wpisujemy:

/etc/init.d/dhcp3-server start

Gdy serwer DHCP działa to wydajemy polecenie

/etc/init.d/dhcp3-server restart

Jeżeli wszystko wpisaliśmy poprawnie, to serwer bez problemu się uruchomi. Gdy jednak popełnimy gdzieś błąd, naszym oczom ukaże się komunikat:

Akurat ten monit informuje nas o tym, że zamiast subnet napisaliśmy ubnet i przez to serwer DHCP nie może zostać uruchomiony.

Konfiguracja serwerów DNS.

Jeżeli korzystamy z serwerów DNS, to musimy ich adresy wpisać do pliku resolv.conf.

1.Klepiemy polecenie nano /etc/resolv.conf

2.W pliku wpisujemy adresy IP naszych serwerów DNS.

UWAGA !!! Jeżeli system sam sobie uzupełnił ten plik, to pozostawiamy go w taki stanie, jakim jest.

Konfiguracja kart sieciowych.

Konfiguracja samego serwera DHCP to dopiero połowa drogi. Musimy jeszcze odpowiednio skonfigurować interfejsy kart sieciowych. Zakładamy, że eth0 będzie dla komputera A, eth1 dla B Do roboty.

1.Wpisujemy
nano /etc/network/interfaces.

Interfejs lo zostawiamy w spokoju. Wszystkie linie, które znajdują się po deklaracji interfejsu lo usuwamy i wpisujemy:

#eth0

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.1.1

#eth1

auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
gateway 192.168.1.1

No dobra a gdzie deklaracja dla komputera C ? Nie trzeba. Obojętnie, do której karty go podłączymy, to jeżeli system wykryje podany MAC, to przypisze mu automatycznie ten adres IP.

Jednak taki konfig nie będzie działał. Nie wiem czemu, ale w takiej postaci Debian podczas restartu ustawień połączeń nie może podnieść żadnego interfejsu. U mnie w domowym serwerze też tak jest. Rozwiązałem ten problem trochę w dziwaczny sposób. Wstawiłem pomiędzy tymi interfejsami nieistniejący interfejs i ustawiłem go tak, aby adres IP pobierał z DHCP. Podczas restartu Debian nie wysypuje się na całym konfigu, ale jeżeli dojdzie do interfejsu, który nie istnieje, to po prostu wyrzuci w stosunku do niego błąd i zacznie dalej działać. Tak iż do tej konfiguracji, która mamy dopisujemy jeszcze:

auto eth2
iface eth2 inet dhcp

Całość ma wyglądać tak:
#eth0

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.1.1

#eth2 – wpis wstawiony w celu zapewnienia zgodności

auto eth2
iface eth2 inet dhcp

#eth1

auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
gateway 192.168.1.1

Zapisujemy plik i wpisujemy polecenie:

/etc/init.d/networking restart

UWAGA !!! Jeżeli zarządzamy serwerem zdalnie np. poprzez putty, to po wykonaniu tego polecenia stracimy połączenie z serwerem.

UWAGA !!! Niekiedy Debian po wydaniu tego polecenia nie odświeży ustawień interfejsów sieciowych. Tak się dzieje między innymi u mnie i aby nowe zmiany zostały wprowadzane, musimy ponownie uruchomić system.

Sprawy programowa mamy już załatwione. Teraz tylko wszystko podpiąć kablami i ma działać.

Jaki sprzęt pod to ?

Od zegarka po super maszynę. Jednym słowem każdy.

Podsumowanie

Przedstawiłem tutaj, nie ukrywając podstawową konfigurację serwera DHCP oraz pliku interfaces. Odnośnie tego drugiego, to możemy robić cuda: aliasy, wirtualne interfejsy sieciowe itd itp. Jednak tutaj chciałem skupić się na samej esencji sprawy. Mam nadzieje, że artykuł będzie pomocy.