Documente Academic
Documente Profesional
Documente Cultură
InfoAcademy-Linux - 09 - Serverul DHCP
InfoAcademy-Linux - 09 - Serverul DHCP
Academy
www.infoacademy.net
SERVERUL DHCP
Protocolul DHCP
2
Descriere generala
2
Ce se intelege prin inchirierea unei adrese 2
Functionarea protocolului
3
Tipuri de mesaje
3
Discover
3
Offer 3
Request
4
9.1.3.S. Acknowledge 4
Release
4
Decline
4
Negative Acknowledge
4
9.1.3.9. Inform ...............................................................................................................................................S
9.2. Serverul ISC DHCP..........................................................................................................................................S
9.2.1.
Instalare.....................................................................................................................................................S
9.2.2. Fisa serverului...........................................................................................................................................S
9.2.3. Configurare de baza..................................................................................................................................S
9.2.4. Particularizarea setarilor la nivel de statie
6
9.2.S. Asignarea de adrese fixe pentru anumite statii 6
Particularizarea setarilor la nivel de grup de statii 7
Particularizarea setarilor la nivel de lot de adrese 7
Clientul DHCP
8
Clienti DHCP 8
Utilizare dhclient
8
BIBLIOGRAFIE
8
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include, fara a afecta
dreptul
de proprietate intelectuala detinut de lnfoAcademy.
Procesul de inchiriere poate fi anulat atit de client cit i de server inaintea perioadei stabilite initial. De
asemenea, serverul DHCP are posibilitatea de a trimite mesaje clientilor obligindu-i sa innoiasca contractul de
inchiriere inainte de terminarea lui.
Functionarea protoco/u/ui
Tipuri de mesaje
Clientii DHCP cauta in retea servere DHCP de la care incearca sa obtina, pe o durata limitata de timp, o identitate
(adresa IP, masca de retea, adresa IP a default gateway-ului etc). Un dispozitiv cu mai multe interfete (router,
calculator cu mai multe NIC-uri, etc) trebuie sa utilizeze DHCP pentru obtinerea dinamica a parametrilor fiecarei
interfete in parte.
Dialogul intre clientul si serverul DHCP foloseste urmatoarele tipuri de mesaje:
Discover
Offer
Request
Acknowledge (ACK)
S. Release
Decline
NegativeAcknowledge (NACK)
Inform
Discover
Cind pachetul TCP/IP este lansat in executie pe un calculator client, daca este configurat pentru obtinerea
dinamica a adreselor, clientul DHCP folosete adresa sursa 0.0.0.0 pentru a trimite in retea un pachet "DHCP
discover". Acesta este un pachet broadcast transmis catre serverele DHCP/BOOTP (portul 67), folosind UDP la
nivelul transport. Fiecare statie aflata in subreteaua locala (inclusiv serverele DHCP) primete pachetul.
Pachetul nu trece prin router spre alte retele sau subretele deoarece este un broadcast packet. Daca router-ul
suporta RFC 1S42 sau RFC 2131, cunoscut ca suportul pentru DHCP/BOOTP relay, va inainta pachetele i altor
retele sau subretele, in calitate de BOOTP relay agent daca este configurat corespunzator.
Clientul are posibilitatea de a solicita, prin intermediul optiunilor prezente in pachet, o anumita adresa (de obicei,
ultima primita) si un anumit lease time.
Offer
Fiecare server DHCP care primete cererea de alocare dinamica a unei adrese i care are o adresa de retea
valida transmite clientului DHCP un packet "DHCP offer" continind :
Adresa de IP valida pe care i-o ofera spre inchiriere.
Masca de retea
Adresa serverului DHCP care trimite pachetul
Durata de inchiriere a adresei
Adresa pentru default gateway
Alti parametri: server(e) DNS, WINS, precum i alti parametri care sunt configurati pe serverul DHCP.
Adresele oferite sunt rezervate i nu vor putea fi utilizate sau oferite altor clienti pina cind rezervarea nu este
Deoarece clientul nu are inca o adresa de IP, pachetele "DHCP offer" sunt de tip broadcast. Ele sunt transmise cu
numarul de port destinatie 68, care indica programele client DHCP/BOOTP.
Request
Clientul selecteaza prima oferta primita care corespunde nevoilor sale i trimite un "broadcast packet" in care
anunta serverul. De fapt, mesajul este primit de catre toate calculatoarele din retea, dar numai serverul DHCP ales
de catre client va interpreta acest mesaj. Serverul se poate recunoaste ca si ,partener de negociere" prin campul
siaddr din headerul DHCP, numit ,server identifier", care specifica adresa serverului DHCP cu care dialogheaaz
clientul.
Pachetul este primit i de toate celelalte servere DHCP care au facut oferte; acestea afla ca au fost refuzate i ca
pot anula eventualele rezervari pe care le-au facut pentru adresele oferite. Serverul care se recunoate in campul
cu pricina va prelucra mai departe mesajul, trimitind inapoi clientului mesajul DHCP ACK (acknowledge).
Acknowledge
Cind serverul primete "request packet" raspunde cu confirmarea inchirierii adresei IP i cu toate informatiile
i optiunile trimise i prima data prin Offer. Odata ce clientul a primit acest mesaj, el intra in starea BOUND
(configurarea i-a fost atribuita si o poate folosi).
Release
Prin intermediul acestui tip de mesaj DHCP, clientul anunta serverul ca renunta la adresa chiar daca perioada de
lease nu a expirat inca.
Decline
Mesajul de acest tip este folosit de client pentru a anunta serverul ca ii refuza oferta deoarece adresa este deja
folosita..
Inainte de a incepe sa utilizeze o adresa primita de la server, clientii DHCP efectueaza verificarea daca aceasta
adresa nu este deja in uz in retea (spre exemplu, in cazul in care a fost configurata manual pe una dintre celelalte
statii). In caz afirmativ, clientul declina oferta serverului si reia procesul de configurare automata.
Negative Acknowledge
Serverul anunta clientul ca perioada de leasing a expirat, sau ca nu vrea sa-i ofere o anumita adresa IP pe care
clientul o are deja inchiriata. Iata posibile scenarii in care se intampla acest lucru:
clientii DHCP au dreptul de a solicita o anumita adresa (in general ultima primita, pentru a avea continuitate). Un
server care constata ca adresa ceruta de client nu este valida va trimite acestuia un NACK
daca acel client are aplicata o politica de restrictionare pe server, sau nu se mai dorete ca acel client sa
primeasca o adresa valida de la serverul DHCP. Acesta ar putea fi consecinta neachitarii unui abonament, plecarea
unui angajat care avea un laptop dintr-o firma etc
Inform
De asemenea, incepind cu RFC 2131 a fost introdus un alt tip de mesaj, numit Inform, prin care un client care are
deja adresa cere serverului alti parametri. Clientul nu poate cere reinnoirea timpului de inchiriere a parametrilor
(lease time), doar de modificare/reinnoire a altor parametri. In acest caz, serverul ii retrimite Acknowledge, fara
cimpul yiaddr.
Serverul ISC DHCP
lnsta/are
Sursele serverului DHCP beneficiaza de un script configure, insa acesta nu accepta parametrii obisnuiti (-prefix,... etc). Daca se doreste modificarea locatiei de instalare si a altor parametri, este necesara modificarea unor
variabile din fisierul site.conf (o lista de variabile poate fi gasita in Makefile.conf).
./configure make
make install
Ulterior instalarii din surse este necesara crearea a doua fisiere:
/etc/dhcpd.conf - fisierul de configurare al daemonului dhcpd
/var/state/dhcp/dhcpd.leases - locul in care serverul memoreaza detaliile alocarilor curente
Daca distributia Linux/Unix pe care se instaleaza serverul foloseste stilul de initializare System V, un script de
management al serviciului DHCP poate fi gasit in contrib/solaris.init din directorul surselor.
Fisa serveru/ui
Iata cateva elemente de baza care trebuie cunoscute despre acest server:
executabil: dhcpd (DHCP daemon)
fisier de configurare: /etc/dhcpd.conf (trebuie creat manual daca instalarea a fost facuta din surse)
verificarea validitatii fisierului de configurare: dhcpd -t
verificarea validitatii bazei de date cu asignari de adrese (lease database): dhcpd -T. Baza de date
implicita este plasata in fisierul /var/state/dhcp/dhcpd.conf , care trebuie creat manual dupa instalarea
din surse
rularea serverului in mod debug si mentinerea sa in foreground la pornire: dhcpd -f -d .In acest mod de
lucru, procesul server - care in mod normal ruleaza in background - nu se mai decupleaza de la
terminalul curent (ramane in "foreground") si ofera un output foarte detaliat, ce include si mesajele
DHCP schimbate intre server si clienti
Configurare de baza
Fisierul de configurare al serverului este /etc/dhcpd.conf. Iata un exemplu comentat:
authoritative;
ddns-update-style none;
# dynamic DNS dezactivat
default-lease-time 3600;
# daca clientul nu solicita alta perioada , i se ofera aceasta
max-lease-time 86400;
# perioada maxima pe care o poate solicita clientul
subnet 10.0.0.0 netmask 255.255.255.0 {
# in ce retea actioneaza serverul
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include, fara a afecta
dreptul
de proprietate intelectuala detinut de lnfoAcademy.
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include, fara a afecta
dreptul
de proprietate intelectuala detinut de lnfoAcademy.
#serverele DNS
Declaratia authoritative face serverul sa trimita mesaje DHCP NACK clientilor care cer prelungirea unei
configurari care nu face parte din subnet-ul definit pe server. Clientul este astfel fortat sa renunte la configurarea
sa curenta. In cazul in care declaratia authoritative nu este prezenta, serverul nu intervine in astfel de cazuri si
clientul va pastra configurarea eronata pana la expirarea acesteia.
Declaratia range specifica lotul/loturile de adrese asignabile dinamic. In cazul mai multor loturi de adrese se vor
folosi mai multe declaratii range. Atunci cand exista si adrese asignate static pe baza MAC-ului (cu declaratia
fixed- address) acestea nu trebuie sa fie cuprinse si in range.
Directiva max-lease-time limiteaza superior perioada de lease pe care serverul i-o poate oferi clientului. Daca
acesta din urma nu solicita un anume lease time, i se va oferi cel default; daca solicita unul mai mic decat cel
maxim, ii va fi oferit; in schimb, daca lease time-ul solicitat depaseste max-lease-time, serverul va oferi clientului
durata specificata in aceasta directiva (86400 in cazul nostru).
Particu/arizarea setari/or /a nive/ de statie
Serverul DHCP ofera posibilitatea de a customiza setarile oferite unei statii, prin intermediul declaratiei host.
Aceasta trebuie sa cuprinda adresa MAC a statiei - unicul element care (cel putin in teorie) identifica in mod unic
statia - si orice setari ce se doresc aplicate numai statiei in cauza. Iata un exemplu in care statiei server i se paseaza
un alt default gateway si alt set de servere DNS:
host server { #configuratie ce se aplica unui anume host
hardware ethernet 00:04:E2:33:9E:3C;
# ...identificat prin adresa sa MAC
option domain-name-servers 10.0.0.2,10.0.0.2; # ...care va avea un alt set de servere DNS
option routers 10.0.0.11;
#...si primeste un default gateway diferit
}
Numele ce urmeaza cuvantului cheie host este folosit pentru identificarea in cadrul fisierului de configurare a
statiei la care se refera sectiunea host; el nu are legatura cu numele real al statiei.
Nota: declaratiile host sunt globale - nu conteaza daca sunt incluse sau nu in interiorul unei declaratii subnet.
Asignarea de adrese fixe pentru anumite statii
DHCP nu presupune neaparat lipsa controlului asupra adreselor atribuite clientilor. Exista scenarii in care dorim ca
o aceeasi statie, desi configurata prin DHCP, sa primeasca permanent aceeasi adresa - spre exemplu, daca este
vorba de un server, o imprimanta de retea etc. Intr-un astfel de caz, serverul DHCP poate fi configurat sa rezerve o
anumita adresa statiei in cauza, identificand statia dupa adresa sa fizica (adresa MAC, in cazul Ethernet).
In acest scop se creeaza in dhcpd.conf o declaratie host ce cuprinde adresa MAC a statiei si adresa fixa rezervata
ei:
host server { # configuratie ce se aplica unui anume host
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include, fara a afecta
dreptul
de proprietate intelectuala detinut de lnfoAcademy.
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include, fara a afecta
dreptul
de proprietate intelectuala detinut de lnfoAcademy.
10
In exemplul de mai sus, known-clients desemneaza toate acele statii care au declaratie host corespunzatoare in
cadrul fisierului de configurare dhcpd.conf, iar unknown-clients toate celelalte statii.
Putem avea doar declaratii allow, doar deny sau o combinatie:
daca avem doar declaratii allow, vor primi adrese doar clientii specificati
daca avem numai declaratii deny, vor primi adrese numai clientii care NU sunt in lista de deny
daca exista ambele tipuri de declaratii, li se vor asigna adrese numai clientilor care apar pe lista de allow
dar NU si pe lista de deny
Clientul DHCP
C/ienti DHCP
Pentru a configura o interfata de retea prin DHCP trebuie sa existe un soft (fie parte a sistemului de operare, fie
separat) care sa ,vorbeasca" protocolul DHCP si sa parcurga etapele necesare configurarii interfetelor de retea ale
statiei pe care ruleaza. Acest tip de soft este in general unul rezident in memorie, deoarece rolul sau nu se incheie
odata cu obtinerea adresei, ci continua cu eventualele prelungiri ale perioadei de lease, eliberarea adresei folosite
etc.
In Linux pot fi intalniti diversi clienti DHCP:
dhclient (cel inclus in ISC DHCP) - folosit de multe dintre distributiile Linux
dhcpcd (http://www.phystech.com/download/dhcpcd.html) - utilizat de Slackware
pump
Uti/izare dhclient
Acest utilitar face parte din ISC DHCP si se instaleaza in general odata cu serverul. Iata cateva dintre facilitatile
sale:
optiuni utile:
0
dhclient nume_interfata - activeaza clientul dhcp pe interfata specificata
0
dhclient -r nume_interfata - returneaza serverului adresa IP inchiriata ("release")
0
dhclient -d nume_interfata - forteaza clientul sa ruleze in foreground ("debug mode")
fisier de configurare: /etc/dhclient.conf . In acest fisier pot fi stabiliti diferiti parametri:
0
timeout nr_secunde; - specifica dupa cat timp de asteptare si incercari clientul renunta la a mai
incerca sa obtina o adresa
0
interface ,nume" {...directive specifice...} - realizeaza diferentierea configuratiei in functie de
interfata
fisierul /var/state/db/dhclient.leases - locul de salvare al detaliilor despre configurarile curente, pentru
pastrarea la reboot
BIBLIOGRAFIE
ISC DHCP Home Page: https://www.isc.org/software/dhcp
Protocolul DHCP: http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
RFC2131 (DHCP): http://www.faqs.org/rfcs/rfc2131.html
The DHCP Handbook 2nd Ed (Ralph Droms, Ted Lemon)