MENU

Aktualności
Download
Sterowniki
Strefa Zrzutu
Archiwum
Informacje
Linki
 

MENU

Sprzęt
Oprogramowanie
Technologie
Novell Netware
Windows9x
WindowsNT
UNIX/Linux
Słowniczek

Napisz do nas

Jeżeli masz jakieś pytania, chciałbyś wyrazić opinię lub nawiązać współpracę, napisz do nas:

O P I N I A

P Y T A N  I  E

W S P Ó Ł P R A C A

B A N N E R Y

Informacje

Strona zoptymalizowana
pod IE4.0+ i NN4.0+

 

 
Konfiguracja serwera i klienta DHCP

linia_1.gif (306 bytes)

Aktualności | Linux / Unix

Jesteś zmęczony ciągłym wpisywaniem adresów IP lub adresów Ethernetowych za każdym razem gdy dodajesz nowego użytkownika do swojej sieci? Potrzebujesz DHCP (Dynamic Host Protocol). Pokażemy tobie jak go skonfigurować, pokażemy najczęściej występujące problemy i odpowiemy na nie. Pomożemy ci stworzyć bezpieczny serwer DHCP.

Jestem pewny, że znasz ten problem: masz kilka nowych maszyn, które trzeba podłączyć do sieci. Krążysz przez chwilkę, zastanawiając się co i jak zrobić, następnie siadasz do komputera i piszesz. Jedna z bardziej uciążliwych czynności dla każdego administratora jest przechodzenie od jednego do drugiego komputera i wklepywanie adresów IP, nazw hostów i adresów sprzętowych (MAC). Można to przyśpieszyć korzystając z programów konfiguracyjnych takich jak linuxconf lub yast, ale i tak jest to nieunikniona czynność dla każdej z maszyn. Jeżeli zmienisz coś w swojej sieci będziesz musiał zrobić wszystkie poprawki jeszcze raz na wszystkich komputerach.

Rozwiązaniem wszystkich tych problemów jest DHCP (Dynamic Host Configuration Protocol) wyprodukowany przez Internet Software Consortium (ISC - http://www.isc.org/products/DHCP/), dzięki niemu będziesz mógł automatycznie konfigurować wszystkie komputery w twojej sieci.

Wraz z większością dystrybucji Linuxa dostajemy darmowego klienta i serwer DHCP, dzięki którym jesteś w stanie obsługiwać centralnie więcej niż jedną sieć.

Przykładem wykorzystania DHCP, jest sytuacja gdy masz do obsłużenia wielu użytkowników, którzy często zmieniają swoje położenie (mają np. Laptopa). Raz skonfigurowany do współpracy z DHCP system, będzie działał zawsze z każdym serwerem DHCP.

Kiedy serwer DHCP (dhcpd) uruchamia się, czyta globalną konfigurację z pliku /etc/dhcp.conf. Zapisane są w nim takie informacje jak nazwa serwera, nazwa domeny do której jesteś podpięty, i wiele innych równie ważnych informacji. Są to parametry które będą używane przez wszystkich klientów (chyba że się specjalnie ustawi konfigurację dla danego hosta lub ich grupy). DHCP zapamiętuje listę adresów w pamięci dla wszystkich sieci które obsługuje. Kiedy klient DHCP uruchamia się, żąda adres dla swojego komputera. Serwer wyszukuje pierwszy dostępny adres i przypisuje go klientowi. DHCP zazwyczaj przydziela dynamicznie adresy IP, czasami można przypisać na stałe adres do danego komputera.

W terminologii DHCP, klient "dzierżawi" (ang. Lease) adres IP. Dzierżawa przydzielana jest tylko na pewien czas. Standardowo jest to jeden dzień, ale można to zmienić w każdej chwili gdy tylko tego potrzebujemy. Klienci mogą żądać dzierżawy na określony czas, czasami nawet na zawsze. Aby tego uniknąć można na serwerze DHCP ustawić maksymalny okres na jaki przyznawana jest dzierżawa.

Zależnie od konfiguracji sieci, może zajść potrzeba ograniczenia działania DHCP do pojedynczego segmentu sieci. Problem ten pojawia się, gdy serwer DHCP jest zainstalowany w wielu segmentach. Jednakże, DHCP może być tak skonfigurowany, że będzie nasłuchiwał tylko na jednym wybranym interfejsie sieciowym i przez co będzie działał tylko w jednym segmencie.

Oczywistym jest fakt, że serwer powinien przechowywać informację o wydzierżawionych numerach IP. Informacja ta powinna przetrwać zarówno restart klienta jak i serwera. Jest to realizowane za pomocą pliku dhcpd.leases, który domyślnie przechowywany jest w katalogu. /var/state/dhcp. Po przeczytaniu pliku konfiguracyjnego (dhcpd.conf), serwer czyta plik dhcpd.leases i sprawdza czy któryś z systemów nie używa dzierżawionego numeru IP.

W przeciwieństwie do innych serwisów dhcp nie odczytuje swojej konfiguracji w czasie działania programu. Więc jeżeli dokonamy jakiś zmian, musimy zrestartować serwer. Można to zrobić uruchamiając polecenie /etc/rc.d/init.d/dhcp restart.

Konfiguracja serwera DHCP

Plik dhcpd.conf jest bardzo prosty. Zaczyna się od nagłówka, zawierającego globalną konfigurację dla serwera. Nagłówek ten, jeżeli nie zdefiniowano inaczej, odnosi się do wszystkich obsługiwanych podsieci. Za nagłówkiem znajdują się deklaracje dla wszystkich dostępnych i obsługiwanych podsieci. Można tu określić czy korzystają czy nie z serwisu DHCP.

W najprostszej formie, konfiguracja DHCPd zawiera adres podsieci, maskę i zakres przydzielanych numerów IP. Możesz mieć ustawione coś takiego:

subnet 10.2.0.0 netmask 255.255.0.0;
range 10.2.3.0 10.2.3.200;

Wpis ten umożliwia korzystanie z Klasy A adresów IP z zastrzeżonego dla sieci lokalnych przedziału adresów 10.2.0.0-10.2.255.255. Jednakże, dla sieci udostępnia się tutaj tylko małą część adresów (10.2.3.0). Znaczy to że tylko część ( 200 ) adresów jest dostępna dla komputerów w sieci. Zauważ, że każdy wpis w pliku zakończony jest średnikiem. Każdy z hostów może byś skonfigurowany oddzielnie. Używa się do tego specjalnego słowa kluczowego 'host', które zostanie opisane w dalszej części artykułu.

Opcje w pliku dhcp.conf są zapisywane w specjalny sposób. Mają one specjalną konstrukcję:

option option-nameoption-data

Niektóre z parametrów to adresy IP lub nazwy hostów, inne mogą być tekstami, liczbami lub zmiennymi Boolowskimi (true/false lub on/off). Ważne jest to, że zawsze trzeba podać słowo kluczowe option, aby serwer wiedział że nie jest to deklaracja podsieci lub czegoś podobnego.

Pierwsza tabelka podaje listę większości podstawowych opcji dhcp. Jest ich więcej ale wiele z nich dotyczy tylko specyficznych protokołów lub serwisów takich jak NNTP, finger, IRC. Aby poznać pełną listę parametrów wraz z ich opisami, uruchom polecenie: man dhcp-options

Główne opcje I delkaracje z pliku dhcpd.conf

Parameter Opis Typ danych
default-lease-time Domyślna długość czasu w sekundach, na którą przydzielana jest dzierżawa numeru IP. Liczba
domain-name Nazwa domeny dla danej podsieci. Tekst
domain-name-servers Lista serwerów DNS dla danej podsieci. Lista adresów IP
fixed-address Statyczny adres IP przypisany do danego hosta (obsługa wielokrotnych sieci). Lista adresów IP
group Początek deklaracji grupy. BRAK
hardware Rodzaj urządzenia (interfejsu sieciowego).W hwili obecnej obsługiwane są tylko interfejsy ethernet i token ring Rodzaj sprzętu: tekst; Sprzęt
Host Początek deklaracji dla hosta Brak
host-name Nazwa przypisywana hostowi. Tekst
max-lease-time Maksymalny czas na jaki dawana jest dzierżawa. (wykorzystywana wtedy, gdy klient żąda danego czasu) Liczba
netbios-name-servers Nazwa serwera WINS Lista adresów IP
range Zakres adresów IP przypisywanych dla danej podsieci. Najmniejszy I największy adres IP
routers Lista routerów Lista adresów IP
shared-network Początek deklaracji dla dzielonej sieci BRAK
subnet Początek deklaracji dla podsieci BRAK
subnet-mask Maska podsieci, grupy lub hosta. Lista adresów IP

Jedną z opcji jest definicja rodzaju interfejsu sieciowego. W chwili obecnej obsługiwane są tylko ich dwa rodzaje. Są to sieci ethernet i token-ring. Skłania tej opcji jest taka, że podaje się rodzaj interfejsu a dalej adres sprzętowy karty tzw. adres MAC. Wpis taki może wyglądać następująco:

host saturn {
	hardware ethernet  00:50:04:53:F8:D2;
	fixed-address 192.168.42.3;
}

Wpis ten mówi, że maszyna o nazwie Saturn ma kartę Ethernetową o adresie MAC 00:50:04:53:F8:D2, i że przypisany do niej jest stały adres IP o wartości 192.168.42.3.

Czasami potrzebujesz podać opcje dla kilku komputerów w sieci, nie traktując ich jak oddzielnej podsieci. Dla przykładu możesz zdefiniować podsieć dla grupy komputerów i wtedy zastosować te opcje jak dla podsieci. W takim przypadku nie będziesz mógł jednak mieć innych adresów IP czy masek dla różnych komputerów.

Aby to obejść definiuje się tzw. grupę, używając do tego słowa kluczowego "group". Grupuje ono różne hosty, przypisując im dane stałe opcje. Każdy z tych hostów może należeć do innej podsieci i mieć inne adresy. Ala przykładu:

group {
	default-lease-time 300000;
	option routers 192.168.42.1;
   	host Jupiter {
		hardware ethernet  00:50:04:53:D5:57;
		default-lease-time 500000;
	}
	host Saturn {
		 hardware ethernet  00:50:04:53:F8:D2;
	}
	host Uranus{
		 hardware ethernet  00:50:04:53:32:8F;
	}
}

Ustawiliśmy tutaj dla całej grupy domyślny czas dzierżawy na 300000 sekund oraz adres routera na 192.168.42.1. Definicja ta jest ważna i będzie używana dla wszystkich trzech hostów należących do grupy. Jednakże, host o nazwie Jupiter będzie miał inny domyślny czas dzierżawy (500000 sekund), ale router będzie ten sam co dla reszty.

Czasami jesteś zmuszony do zdefiniowania wielokrotnych logicznych sieci na tym samym kablu. Powodów takiego działania może być wiele. Dzięki DHCP konfiguracja takiej sieci jest prosta.

Sieć dzielona (shared-network) jest po prostu grupą komputerów. Od deklaracji "group" różni się tym, że może zawierać inne definicje podsieci (subnet) i grup (gropu). Poniżej znajduje się prosty przykład:

shared-network 
	network-name
	shared-network-specific
   		parameters
subnet 
subnet-specific parameters
group  
	group-specific parameters

Konfiguracja Klienta

Konfiguracja klienta zależy od dystrybucji którą posiadasz. Dla przykładu w SuSE 6.3, wszystko co musisz zrobić to uruchomić yast - program konfiguracyjny i wybrać opcję "Basic Network Configuration". Naciskając F3 ustawiasz konfigurację auto-ip, która daje ci możliwość wyboru pomiędzy DHCP i BOOTP (Bootstrap Protocol). Jeżeli wybierzesz DHCP, zmiany będą dokonane w pliku /etc/rc.config gdzie zostaną dodane wpisy dla poszczególnych kart. Plik przed ustawieniem konfiguracji mógł wyglądać następująco:

IFCONFIG_0 = " 192.168.42.1
   broadcast 192.168.42.255
   netmask 255.255.255.0 up"

po konfiguracji klienta dhcp plik będzie wyglądał następująco:

IFCONFIG_0 = " dhcpclient"

Zauważ, że możesz wyspecyfikować które interfejsy są obsługiwane przez DHCP a które nie (mają na stałe przypisany adres). Kiedy system startuje, wywoływany jest skrypt /etc/rc.d/network który przypisany jest do np. /etc/rc.d/rc2.d/S05network . Jeżeli znajdzie się w nim wpis "dhcpclient", konfiguracja urządzenia zostanie pominięta. Zostanie automatycznie ustawiona przez skrypt np. /etc/rc.d/rc2.d/ S05dhclient który uruchamia klienta dhcp, ten z kolei pobiera konfiguracje z serwera.

Inne systemy, takie jak Caldera lub Red Hat, mają swoje własne programy konfiguracyjne. Zmieniają one inne pliki konfiguracyjne np. w katalogu /etc/sysconfig/network-scripts/ . Dla przykładu, jeżeli chcesz skonfigurować DHCP dla interfejsu eth0 pod Red Hatem, plik ifcfg-eth0 powinien zostać zmieniony. Kiedy skończysz powinieneś otrzymać coś takiego:

DEVICE = eth0
IPADDR = 0.0.0.0
NETMASK = 255.255.255.0
NETWORK =
BROADCAST = 0.0.0.255
GATEWAY = none
ONBOOT = yes
DYNAMIC = dhcp

W większości przypadków domyślna konfiguracja klienta DHCP jest wystarczająca. Jeżeli nie, można ją samemu zmienić. Służy do tego plik: /etc/dhclient.conf . Jeśli posiadasz więcej niż jeden interfejs sieciowy który posiada różne ustawienia i potrzebujesz pogrupować te opcje dla poszczególnych interfejsów. Możesz to zrobić w następujący sposób:

interface eth0
send dhcp-lease-time 3600;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;

Określenie 'send' mówi klientowi DHCP aby wysłał daną opcję z zadaną wartością. Może to być dowolna opcja którą serwer rozumie. Wszystkie te instrukcje wypisane są w instrukcji, którą wywołujesz poleceniem:

man dhcp-options

Zapytanie jest listą parametrów (nie wartości), które klient żąda od serwera. Słowem kluczowym które je realizuje jest "request". Po nim wypisuje się to co chcemy uzyskać.

Bezpieczeństwo

Podstawowym problemem który może wystąpić w DHCP są ataki typu denial-of-service. Mogą one mieć miejsca, gdy nasz serwer jest dostępny z Internetu. Możliwe jest wtedy, że bardzo dużo komputerów z zewnątrz będzie żądało przydzielenia adresów od naszego serwera, tak że nie zostanie nic dla naszej lokalnej sieci. Aby uniknąć takich przypadków powinno się zastosować odpowiednią ochronę. Najlepiej skonfigurować odpowiednio firewalla. Należy zablokować port o numerze 67.

Artykuł napisany przez D.Kowalskiego

 

linia_1.gif (306 bytes)

Aktualności | Linux / Unix

.

Copyright (c) 1999-2000 by DREAM N-E-T-W-O-R-K