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]
|