InfoAcademy-Linux_09 - Serverul DHcp

download InfoAcademy-Linux_09 - Serverul DHcp

If you can't read please download the document

Transcript of InfoAcademy-Linux_09 - Serverul DHcp

Linux 09 - Serverul DHCP

InfoAcademy

Cisco Networking Academy www.infoacademy.net

www.infoacademy.netIonut Cristian Morar 2008

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.

2

SERVERUL DHCP

Protocolul DHCP2

Descriere generala2

Ce se intelege prin inchirierea unei adrese2

Functionarea protocolului3

Tipuri de mesaje3

Discover3

Offer3

Request4

9.1.3.S. Acknowledge4

Release4

Decline4

Negative Acknowledge4

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 statie6

9.2.S. Asignarea de adrese fixe pentru anumite statii6

Particularizarea setarilor la nivel de grup de statii7

Particularizarea setarilor la nivel de lot de adrese7

Clientul DHCP8

Clienti DHCP8

Utilizare dhclient8

BIBLIOGRAFIE8

9.1. Protocolul DHCP

Descriere genera/a

DHCP (Dynamic Host Configuration Protocol) ofera o modalitate de a automatiza configurarea parametrilor de retea ale calculatoarelor i ale altor dispozitive de retea care suporta stiva de protocoale TCP/IP. Scopul acestui protocol este de a permite acestor dispozitive (clienti DHCP) sa "extraga" parametrii de retea de la un server DHCP (sau de la mai multe), astfel incit sa se reduca efortul de administrare a retelei prin configurarea acestor parametri de catre administrator pe fiecare client in parte.

DHCP este un mediu client server, urmaul protocolului BOOTP, care mentine compatibilitatea cu acesta i care in mod concret este utilizat pentru alocarea dinamica a adreselor IP, a serverelor DNS (Domain Name Service), WINS (Windows Internet Name Service ) i a adresei IP a gateway-ului. Protocolul este gandit sa functioneze in conditiile existentei unuia sau mai multor clienti si unuia sau mai multor servere in aceeasi retea.

DHCP transmite mesaje prin protocolul UDP, serverul DHCP transmitind mesaje cu portul sursa 67 i portul destinatie 68, iar clientul pe portul sursa 68 i portul destinatie 67.

DHCP a fost proiectat i dezvoltat sub auspiciile Internet Engineering Task Force (IETF). Microsoft a fost prima firma care a introdus in 1994 DHCP odata cu lansarea lui Windows NT Server 3.S. Conceptele au fost preluate i de firmele MacIntosh si Novell care au introdus alocarea dinamica a adreselor in retelele sale.

DHCP este complet definit de urmatoarele Request For Comments:

RFC 1S33 : DHCP options and BOOTP Vendor extensions inlocuit de RFC 2132

RFC 1S34 : Interoperation between DHCP and BOOTP

RFC 1S41 : DHCP

RFC 1S42 : Clasifications and extensions for Bootstrap Protocol

RFC 2131 : DHCP

RFC 3046 : DHCP Relay Agent

Alte RFC care descriu autentificarea, operarea pentru IPv6, operarea in echipamentele CATV, etc.

Cel mai important este RFC 2131 care defineste structura i functionalitatea lui DHCP; poate fi obtinut de la www.ietf.org/rfc. Informatii utile la www.dhcp.org.

Ce se fnte/ege prin fnchirierea unei adrese

Inchirierea este fundamentala pentru procesul DHCP. Fiecare adresa oferita de un server DHCP are o perioada de inchiriere asociata, perioada in care clientul are permisiunea sa foloseasca adresa. Perioada de inchiriere este denumita ,lease time" si poate avea orice valoare, de la citeva minute pina la cateva luni, cativa ani sau pentru totdeauna. Inchirierea pe perioada nelimitata de timp transforma adresarea dinamica in adresare statica i nu este recomandata.

Daca s-a scurs peste S0% din timpul de inchiriere al adresei, clientul trimite serverului care i-a inchiriat parametrii o cerere de prelungire a perioadei de utilizare a adresei (,renew).

Daca acest client nu a reuit prelungirea perioadei de inchiriere de la serverul de la care a primit prima data lease- ul, la scurgerea a 87,S% (7/8) din timp, clientul trimite un broadcast packet, incercind sa inchirieze o adresa IP de la orice server existent in retea.

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 anulata explicit sau expira.

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

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.

S

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

range 10.0.0.11 10.0.0.28;# domeniul de adrese asignabile dinamic

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

option routers 10.0.0.10;# default gateway

option domain-name-servers 193.231.236.17,193.231.236.10;#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

hardware ethernet 00:04:E2:33:9E:3C;# ...identificat prin adresa sa MAC;

fixed-address 10.0.0.9;# acest host va primi intotdeauna aceeasi adresa

}

Particu/arizarea setari/or /a nive/ de grup de statii

Putem asigna setari diferite pentru grupuri diferite de statii, folosind directiva group. Exemplu: o retea de 4 statii, din care doua ies in internet printr-un provider si celelalte doua prin altul:

# statii care ies prin provider 1 gateway 1.1.1.1

group {

option routers 1.1.1.1;

host conta{ hardware ethernet 11:22:33:44:55:66; } host sef1{ hardware ethernet 11:22:33:66:55:44; }

}

# statii care ies prin provider 2 gateway 2.2.2.2

group {

option routers 2.2.2.2;

option domain-name-servers 2.2.2.100,2.2.2.200;

host hr{ hardware ethernet 77:88:99:aa:bb:cc; } host sef2{ hardware ethernet dd:ee:ff:00:11:22; }

}

Fiecare grup de statii consta dintr-o serie de declaratii host ce definesc statiile din grup (identificate dupa adresele MAC) si apoi setarile ce li se aplica acestor statii.

Particu/arizarea setari/or /a nive/ de /ot de adrese

Putem de asemenea imparti adresele atribuite de serverul nostru in loturi de adrese cu setari diferite. Sa spunem ca avem in dhcpd.conf declaratii host pentru toate statiile din reteaua noastra, si am dori ca acestora sa le asignam adrese dintr-un anume lot (si cu perioada mai lunga), iar pentru statiile din afara retelei (vizitatori, de exemplu) sa oferim un lot mic, cu perioada de inchiriere scurta, si care foloseste un alt provider de internet. In acest scop vom folosi directiva pool:

# configurarea de mai jos presupune ca declaratiile host pt statii se afla deja in dhcpd.conf

pool {# pentru reteaua noastra

range 10.0.0.1 10.0.0.200;

max-lease-time 86400;# 1 zi

deny unknown-clients;# interzis statiilor care nu au declaratie host

}

pool {

}

range 10.0.0.201 10.0.0.220;

max-lease-time 3600;# 1 ora

allow unknown-clients;

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:

0dhclient nume_interfata - activeaza clientul dhcp pe interfata specificata

0dhclient -r nume_interfata - returneaza serverului adresa IP inchiriata ("release")

0dhclient -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:

0timeout nr_secunde; - specifica dupa cat timp de asteptare si incercari clientul renunta la a mai

incerca sa obtina o adresa

0interface ,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)