Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


Soluții - PC Magazine Romania, Septembrie  2002

Motto: "Și mai este acolo un parfum, Vetiver,
care te așteaptă ..."
Ionel Teodoreanu - "Să vie Bazarcă !"

Octombrie Song

Răzvan Sandu


Cu mulți ani în urmă, fiind începător în ale internetului, trăiam intens magia "conectării", a momentului când treceam "dincolo". Windows 95 adusese un instrument care se numea Internet Mail și despre ale cărui setări îmi amintesc că erau destul de obscure ... În fine, venea clipa când, apăsând butonul "Connect", auzeam modemul clănțănind rar cifrele și apoi vedeam sosind primele mesaje.

Prieteni mai experimentați încercau să-mi explice teoria rețelelor, a adreselor IP, a DNS-ului... Lucrurile acelea mi se păreau îndepărtate și inutile: ce avea de-a face calculatorul meu de-acasă cu vreo rețea, când nici un cablu nu ajungea până aici ? Nu trebuia să-mi bat prea mult capul, succesiunea paginilor Web care defilau una dupa alta era de-ajuns!

Într-o după-amiază însorită de septembrie, în 1998, după ce citisem cu mirare traducerea cărții lui Steve Qualline "Descoperiți sistemul de operare Linux", m-am bucurat să găsesc în vitrina unui chioșc de ziare CD-ul care îmi trebuia: o versiune a Red Hat Linux-ului mai nouă decât cea descrisă în carte. O revistă românescă îmi dădea, pentru prima dată, posibilitatea să experimentez.

Și au venit ploile lui octombrie, iar eu imi petreceam serile în birou, la firmă. Instalasem, fără știrea sau încuviințarea vreunui șef, sistemul de operare de pe CD. Pasămite, aici aveam la îndemană nu numai un computer, ci chiar o mică rețea locală - opt stații de lucru unite printr-un vechi cablu coaxial. Venea seara, aveam "Confesiunile" lui Johnny Răducanu la îndemână - ascultam și ploaia prelingându-se pe geamuri ...

Când am început, în sfârșit, să înțeleg modul de funcționare al acestei rețele simple, o întrebare mi-a fulgerat imediat prin minte: cum reușea Windows-ul să mă lase să mă conectez fără să știu nimic despre adrese IP, gateway-uri și multe altele ?

Simțeam că lipsește o verigă... Atunci am găsit, îngropată adânc în măruntaiele sistemului, documentația unui "ceva" care se numea DHCP. Și am trăit încă odată bucuria începutului: primul meu server DHCP, configurat sub Linux, începuse să ruleze! Era prima victorie asupra acestui sistem de operare criptic. Această reușită vă invit să o împărtășiți astăzi...

Programul pentru leneși
DHCP este acronimul de la Dynamic Host Configuration Protocol ("Protocol pentru Configurarea Dinamică a Gazdelor"). Este un serviciu care permite unui calculator central (fie el un server dedicat sau un PC oarecare din biroul dumneavoastră) să comunice celorlalte calculatoare, de la distanță, parametrii necesari pentru integrarea în rețea. Mai mult, această alocare poate fi făcută în mod dinamic, adresele fiind închiriate și eliberate după cum stațiile apar și dispar online.

La prima vedere, folosirea unui astfel de protocol pare o complicație inutilă. Cui ar servi toate acestea, când este atât de simplu să asignezi o adresă IP fixă fiecărui calculator din rețea? Lucrurile nu stau însă chiar așa, dacă ne gândim la câteva situații particulare frecvent întâlnite, cum ar fi:

  • o rețea fără administrator prezent permanent, în care utilizatorii nu au un nivel de cunoștinte (sau de privilegii administrative) suficient pentru a schimba ei înșiși adresele IP ale stațiilor;
  • rețelele firmelor având un mare număr de agenți de vânzări dotați cu laptop-uri. Odată sosiți la sediu de pe teren, agenții vor dori să-și conecteze computerele portabile în rețeaua locală pentru a schimba fișiere, trimite e-mail-uri, folosi imprimante, etc. (observați că am omis să menționez partida zilnică de Quake cu colegii - cine-și permite așa ceva la serviciu? J). În această situație, un număr mare de computere se vor conecta și deconecta aleator la/de la rețea, iar evidența unor adrese IP statice ar fi aproape imposibil de ținut;
  • rețelele furnizorilor de internet, care alocă clienților dial-up o adresă IP și alți parametri (DNS, gateway) în momentul conectării prin linia telefonică;
  • rețelele în care, din motive de organizare, este necesar să se controleze un număr oarecare de stații dintr-un punct central;
  • rețelele având stații fără disc hard, care au nevoie să cunoască aprioric adresa unui server central de pe care să poată încărca sistemul de operare, prin intermediul rețelei.

În practică, fiecare dintre noi a instalat vreodată un Windows 95 cu opțiuni implicite ("Typical") și a constatat că acesta putea comunica printr-o rețea locală cu un alt calculator rulând Windows. Atunci ați folosit, pentru prima dată, DHCP!

Lucruri vechi, banale și ... nu prea !
Primul lucru pe care un începător în ale rețelelor îl află este că, pentru a putea comunica, două calculatoare au nevoie de o adresă IP. Acesta este un număr format din 32 de biți, reprezentat zecimal într-o notație de forma 192.168.5.3 ("dotted decimal notation" - notație zecimală cu punct). Fiecare grup de cifre poate avea o valoare între 0 și 255, cu restricțiile prezentate mai jos.

Adresa IP trebuie să fie unică - două calculatoare nu pot avea aceeași adresă IP în cadrul aceleiași rețele. Ea se compune dintr-o parte asociată rețelei, comună tuturor calculatoarelor din acea rețea ("network address") și una specifică fiecarei stații ("host part"). În exemplul de mai sus, primele trei grupuri de cifre ar putea alcătui partea de rețea (notată cu un zero la sfârșit, adică 192.168.5.0), iar 3 ar fi identificatorul stației.

"Șablonul" care arată câte grupuri de cifre sunt alocate rețelei și câte stației se numește "masca de rețea"("network mask" sau "network submask"). În cazul prezentat, masca de rețea este 255.255.255.0, care arată că primele trei grupuri de cifre sunt asociate rețelei, restul stației.

Deci, pentru a putea realiza comunicația între două sau mai multe computere, nu este suficient ca ele să aibă adrese IP unice - trebuie și ca aceste adrese să aparțină aceleiași rețele, adică să aibă partea "network address" comună. Legând cu un cablu două stații având adresele 192.168.0.1 și 192.168.0.2 și masca 255.255.255.0, ele vor putea comunica - dacă adresele ar fi 192.168.0.1 și 10.40.5.2 legătura nu se realizează.

Pe rețeua noastră, mai există o adresă specială, folosită pentru a trimite pachete IP către toate computerele prezente. Aceasta este "adresa de difuzare" ("broadcast address"), care are host part-ul 255 - în exemplul nostru 192.168.5.255. Ca urmare, rețeaua prezentată va putea conține maximum 254 de computere, cu numere din clasa 192.168.5.0 - 192.168.5.255, din care se elimină adresele rezervate pentru scopuri speciale 192.168.5.0 (adresa de rețea) și 192.168.5.255 (adresa de difuzare).
Pentru completitudine, trebuie adăugat faptul că adresele IP nu sunt asociate calculatoarelor, ci interfețelor lor de rețea. O interfață este "punctul de legătură" (fizic și logic) al unui calculator cu o rețea - de exemplu, adaptorul Ethernet, împreună cu parametrii săi de configurare, formează o interfață. Cazul în care o stație are mai multe interfețe este comun: până și laptopul dumneavoastră are atât placă Ethernet, cât și un modem.

Ca începători, ați fi surprinși să știți câte disfuncționalități de rețea se datorează faptului că administratori experimentați uită, fie și pentru o fracțiune de secundă, ABC-ul prezentat mai sus ...

Înalta Poartă
Cititorii care sunt deja puțin familiarizați cu internetul se vor revolta imediat citind cele spuse. Ce zice ăsta că două mașini având adrese IP cu partea de rețea diferită nu pot comunica între ele? Eu realizez zilnic chestia asta, pe cuprinsul întregului internet - unde sunt adrese diferite din belșug !!!

E adevărat. Aici intervine însă conceptul de "poartă" ("gateway").
Gândiți-vă la rețeaua dumneavoastră ca la un fir lung (simplu, un cablu coaxial Ethernet) având stațiile "înșirate" pe el ca un șirag de mărgele. Să presupunem că fiecare stație are o singură interfață de rețea - o placă Ethernet având asociată o adresă de tipul 192.168.5.x. și masca 255.255.255.0. Cele spuse adineauri rămân valabile: stațiile vor putea comunica între ele doar fiindcă aparțin, fizic și logic, aceleiași rețele.

Dar cum va fi posibil să comunicăm cu calculatoare aflate pe alte rețele (având alte game de adrese)? Este necesar ca (măcar) unul dintre calculatoarele LAN-ului nostru să posede o a doua interfață - de exemplu, un modem conectat la internet. El poartă denumirea de "gateway" și servește ca punct de intrare/ieșire a pachetelor IP în/din rețeaua noastră locală. Pentru aceasta, fiecare stație trebuie să "știe" care este gateway-ul prin care poate trimite /primi pachete în/din exterior.

Sub Windows 95, veți găsi toate aceste setări (adresa IP a stației, subnet mask și adresa IP a gateway-ului) la Network Neighborhood Properties -> TCP/IP Properties. Observați, vă rog, și opțiunea prezentă acolo, "Obtain an IP automatically" - despre asta va fi vorba mai târziu.

Vă reamintesc că a doua interfață de rețea a gateway-ului - modemul - va avea o adresă IP din altă clasă (corespunzătoare rețelei la care este conectat, aceea a furnizorului dvs. de internet). Bine, veți întreba, adresele stațiilor de lucru din rețeaua noastră locală le-am stabilit noi, manual, împreună cu masca de rețea și gateway-ul potrivite Dar de unde știe modemul să-și aloce singur o adresă IP, din rețeaua providerului?

Prietenul copiilor
Răspunsul la întrebarea de mai sus este "prin intermediul DHCP". Fără acest protocol, probabil că mai mult de jumătate din utilizatorii actuali ai internetului nu ar exista, fiindcă ei nu beneficiază de o adresă IP fixă, alocată static de furnizorul lor de internet. În realitate, internauții nu fac decât să sune la numărul de telefon indicat de provider, dând un nume de utilizator și o parolă. Serverul ISP-ului îi recunoaște și, dacă autentificarea a avut loc cu succes, le pune la dispoziție, prin DHCP, o adresă IP din gama sa de adrese.

Deci, pe perioada conectării, gateway-ul dvs. face parte din două rețele simultan: cea locală (interfața fiind placa Ethernet, cu o adresă de tipul 192.168.5.x) și cea a ISP-ului (interfața fiind modemul, cu o adresă IP din gama deținută de provider).
De remarcat că, în timp ce prima adresă IP este, de obicei, fixă (stabilită manual de dumneavoastră în momentul proiectării rețelei locale), cea de a doua este stabilită dinamic, în momentul conectării prin modem. IP-ul furnizat de ISP va fi același atât timp cât rămâneți online, în cadrul aceleiași sesiuni, dar diferit la fiecare nou apel telefonic către provider.

"Mai lungă-mi pare ruta /
Acum, la-ntors acasă ..."

Am să deschid o paranteză. Pentru aceia dintre dumneavoastră care deja au înțeles ce se petrece și sunt nerăbdători să se apuce de treabă, va trebui să fiu fair-play - în întreg puzzle-ul lipsește o piesă. Dacă ați fost atenți, ați înțeles că pachetele IP călătoresc "prin interiorul" gateway-ului, între cele două interfețe ale sale, spre și dinspre internet. Mă veți întreba dacă acest proces are loc automat și vă voi răspunde: "depinde" !

Procesul menționat se numește "rutare" ("routing"), iar software-ul necesar pentru realizarea lui este unul dintre cele mai complexe (și scumpe) din tot internetul. Firme de mare anvergură, cum ar fi Cisco Systems, sunt specializate în fabricarea de hardware dedicat ("rutere" sau "routere" - "routers") și software pentru realizarea acestei operații. Desigur, descrierea făcută aici procesului, cu scop didactic, este foarte simplistă și grosieră - routerele sunt adevărate uzine ...

Până la Windows 98 First Edition, utilizatorii de Windows nu aveau nici o posibilitate să folosească stația lor Windows ca gateway/router, presupunând că ar fi dispus de o placă de rețea și un modem. Începând cu Windows 98 SE ("Second Edition"), Microsoft a introdus o facilitate numită Internet Connection Sharing (ICS), care realizează operații elementare de rutare. Dar nu vă bazați prea mult pe acest software - este mai mult "o jucărie", mai ales din punct de vedere al stabilității (de fapt, nu am auzit pe nimeni că l-ar folosi). În plus, sunt introduse și unele limitări arbitrare în ceea ce privește schema de adrese IP - stația-gateway trebuie să aibă neapărat adresa 192.168.0.1, cu masca 255.255.255.0. Dacă aveți ghinionul ca întregul dumneavoastră LAN să folosească altă clasă de adrese IP, "v-ați ars" - va trebui să le schimbați pe toate pentru a putea accesa internetul. Adresa 192.168.0.1 nu este configurabilă prin soft - Microsoft knows why ...

De aceea, majoritatea LAN-urilor care folosesc această schemă de acces la internet utilizează software Windows achiziționat separat ("third-party") pentru realizarea funcției de gateway /router. Sau, mai des, utilizează Linux. Fiindcă - miracol! - Linux știe să ruteze fără nici un alt software suplimentar! Mai mult, funcția de rutare este realizată atât de bine și de rapid (tabele de rutare complexe, sub încărcări mari) încât cele mai multe firme de telecomunicații sau ISP folosesc un vechi PC 486 Linux de 200 USD atunci când vor să evite instalarea unui router Cisco de câteva zeci de mii de dolari! Și asta nu numai în România!
Închid paranteza.

Cum funcționează DHCP
Protocolul DHCP se bazează pe existența a două programe-daemon, care trebuie să ruleze permanent - unul server și unul client. Serverul DHCP este acela care stabilește gamele de adrese ("pools") care vor fi alocate în mod dinamic și toți ceilalți parametri necesari în rețea. Clientul DHCP rulează pe stațiile ce beneficiază de acest serviciu și "cere" serverului, la intervale constante de timp, să i se aloce o adresă IP. De remarcat că o adresă IP nu este alocată ("leased") unei stații pentru un timp infinit, ci numai pentru o perioadă dată. Dacă un utilizator își deconectează laptopul-client de la rețea sau îl închide, acesta nu va mai reînnoi cererea de alocare a adresei IP la expirarea perioadei normate ("lease-time"). Serverul va sesiza faptul, eliberând adresa IP alocată și declarând-o disponibilă pentru alți clienți.

Pe lângă adresele IP destinate stațiilor, serverele DHCP pot distribui o multitudine de alte informații, cum ar fi:

  • Adresele IP ale routerelor/gateway-urilor prin care clienții pot comunica cu exteriorul rețelei;
  • Adresele IP ale serverelor de nume (DNS) existente în rețea, pe care clienții le pot folosi pentru rezolvarea de nume (vezi discuția noastră din luna precedentă);
  • Numele de domeniu DNS cărora le aparțin clienții;
  • Numele de domeniu NIS/NIS+/YP ("Network Information System") ce poate fi utilizat de stații;
  • Adresele IP ale serverelor de ceas (care distribuie informații tip oră/dată) accesibile clienților;
  • Nu în ultimul rând, adresele IP ale serverelor pe care clienții fără disc fix ("diskless clients") le pot folosi pentru a boot-a prin rețea.

Orice versiune de Windows include un program-client DHCP activat automat, fiindcă sistemele Windows uzuale joacă rolul, în covârșitoarea lor majoritate, de clienți DHCP. Acesta este mecanismul "magic" prin care rețeaua dumneavoastră Windows "își află singură" adresele IP, dând impresia utilizatorilor necunoscători că lucrează fără a folosi adrese IP. Serverele DHCP sunt implementate numai pe sistemele Windows NT și Windows 2000 Server - puteți configura foarte simplu un server DHCP pe Windows 2000 folosind consola (Start -> Programs - Administrative Tools -> DHCP). Odată ce ați înțeles cele explicate mai sus, nu veți avea nici un fel de probleme.

Se cuvine să facem o precizare. Există multe rețele bazate pe Microsoft Windows care nu conțin nici un server DHCP și totuși funcționează (opțiunea "Obtain IP adress automatically", pomenită mai sus, folosită într-o rețea care nu conține nici un server DHCP). În realitate, mecanismul este tot DHCP. Microsoft a rezervat, pentru rețele mici (numite în documentație "home-networks") o clasă de adrese care sunt alocate automat, prin mecanismul DHCP, în ordinea "primul intrat în rețea - primul servit".

Pe sisteme Linux/Unix, programele cele mai utilizate sunt cele din suita DHCP a Internet Software Consortium (http://www.isc.org). Mai precis, este vorba despre daemonii dhcpd (serverul DHCP Daemon) și dhcpcd (DHCP Client Daemon), fiecare cu propriul său fișier de configurare.

MAC, o adresă dintr-un lac
Începeți prin a citi fișierul README al suitei, disponibil în /usr/share/doc/ dhcp-3.0/README. Acesta descrie, pas cu pas, etapele ce sunt necesare pentru configurare. Un alt document util este DHCP mini-HOWTO, pe care îl puteți procura - ați ghicit! - de pe http://www.tldp.org.

Clientul dhcpcd funcționează "de la sine" dacă ați instalat pachetul .rpm corespunzător. Puteți verifica buna sa funcționare folosind utilitarul ifconfig care afișează informații (și) despre starea interfeței de rețea locală eth0. Ceea ce vă interesează este dacă stația dumneavoastră a obținut adresa IP comunicată de serverul DHCP prezent undeva în rețea.

Pentru a crea chiar dumneavoastră un server DHCP, este necesar să stabiliți unii parametri în fișierul /etc/dhcp.conf. Sintaxa exactă a acestui fișier este descrisă în paginile manual dhcpd.conf(5) și dhcp-options(5) - aici vom prezenta numai opțiunile cele mai importante.

Declarațiile de tipul:

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.5.255;
option domain-name-servers 192.168.5.1, 192.168.5.6;
option domain-name "firma.com";
option netbios-name-servers 192.168.5.7;

prezente la începutul fișierului, comunică clienților informații despre funcționarea rețelei. Dacă ați parcurs prezentarea anterioară, veți înțelege fără dificultate că în liniile de mai sus sunt stabilite, succesiv, masca rețelei, adresa de difuzare, adresele IP ale serverelor DNS din rețea, numele de domeniu DNS și adresa IP a serverului WINS ce trebuie folosite de către stații.

Mai departe, sunt alocate gamele de adrese IP din care clienții vor primi câte o adresă, pe măsură ce se conectează în rețea:

subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.10, 192.168.5.16;
range 192.168.5.50, 192.168.5.200;
}

ceea ce înseamnă că stațiile vor primi adrese IP în gamele 192.168.5.10 - 192.168.5.16 și 192.168.5.50 - 192.168.5.200.
Se poate întâmpla să doriți să vă asigurați că o anumită stație primește mereu aceeași adresă IP, ori de câte ori se conectează în rețea. Pentru asta, aveți nevoie să cunoașteți adresa Media Access Control (MAC) a plăcii de rețea în cauză, un număr hexazecimal de 48 de biți unic pentru fiecare placă. Utilitarul ifconfig afișează și această informație. Apoi veți folosi o declarație gen:

host vasile {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.5.12;
}

ceea ce va rezerva adresa 192.168.5.12 pentru stația având adresa MAC din rândul al doilea.
Alte opțiuni vă permit să controlați mai fin comportarea DHCP. Așa cum am spus, adresele IP nu sunt alocate clienților "pentru totdeauna", ci numai pentru perioade determinate. Prezente la începutul fișierului /etc/dhcp.conf, opțiunile:

default-lease-time 600;
max-lease-time 7200;

arată că o adresă IP va fi "închiriată" clientului pentru o perioadă implicită de 600s, dacă acesta nu solicită un timp mai lung. În caz contrar, timpul maxim admisibil este de 7200s. Desigur, un timp mai lung setat aici va aduce cu sine un trafic mai scăzut în rețea (renegocierile de adrese sunt mai rare). Dar aceasta cu prețul de a ține mai mult ocupate adrese care, în fapt, au fost eliberate de clienți (de exemplu, stații care au fost închise între timp).

Consultând pagina manual dhcp.conf(5), puteți identifica și alte opțiuni care vă pot fi utile, cum ar fi cele pentru adresele IP ale serverelor NIS sau ale serverelor de ceas.
Înainte de a invoca serverul dhcpd, asigurați-vă că fișierul /var/lib/dhcp/ dhcp.leases are dimensiunea zero:

touch /var/lib/dhcp/dhcp.leases

Acesta este un fișier în care serverul "notează" alocările curente ale adreselor - ștergând conținutul său vă convingeți că nici o adresă nu a rămas "blocată".

"Just looking for
you, Mr. Station..."

O problemă a rămas încă nerezolvată. La inițializare, de unde știu stațiile că un server DHCP este prezent și că pot afla de la el ceilalți parametri ai rețelei? Răspunsul este simplu: serverul "strigă cu voce tare" "oferta" sa, folosind o adresă pe care toate stațiile o "ascultă". Aceasta ar trebui să fie adresa de difuzare despre care am vorbit la început - în exemplul dat, 192.168.5.255. Dar pentru că stațiile nu cunosc "dinainte" partea de rețea a adresei, ofertele DHCPOFFER se trimit pe adresa 255.255.255.255.

Din motive care nu-mi sunt cunoscute, Linux insistă ca adresa de difuzare să fie cea obișnuită, broadcast-address. Asta înseamnă că serverul va încerca să trimită ofertele pe adresa 192.168.5.255, unde nu vor fi "auzite" de către clienți. Soluția problemei constă în a forța o adresă de tipul 255.255.255.255, adăugând în fișierul /etc/hosts o linie:
255.255.255.255 all-ones

și apoi creând o rută statică prin comanda:

route add -host all-ones dev eth0

Linia de mai sus arată că toate pachetele IP destinate pseudo-mașinii 255.255.255.255 vor fi direcționate prin interfața eth0.
Clienții Microsoft sunt cei care remarcă problema - așa că toate serverele DHCP Linux trebuie să aibă artificiul de mai sus activat.

În loc de încheiere
Cu speranța că v-am putut fi de folos, voi sfârși aici această povestire dintr-o seară de toamnă. Poate că am reușit să dezleg unul dintre "misterele" cu care fiecare începător se confruntă. Porniți deci serverul DHCP pe Linux-ul aflat în birou acolo, în colț și, începând de mâine, nu veți mai avea probleme cu laptop-urile agenților comerciali. La ora 6, când aceștia revin la sediu după o zi de alergat prin oraș, telefonul dumneavoastră de pe birou nu va mai suna - veți putea citi liniștit revista ...
Până atunci, vă aștept, ca întotdeauna, la [email protected]


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

www.agora.ro

www.agora.ro

www.agora.ro