Soluții - PC Magazine Romania, Ianuarie 2003
Motto:
"- Bunicule,
de ce nu vine Amelia Earhart?
- Amelia? A zburat peste Noua Guinee, uitându-și antena, uitând că ... A zburat
Dincolo.
- Ce a uitat, bunicule? Ce e dincolo de Noua Guinee?
- Dincolo? Dincolo, fetița mea... a uitat că dincolo e, însorit... doar Pacificul..."
Dintr-un
film
Carnaval la Rio
Răzvan Sandu
Hei, fetelor, unde vă grăbiți așa? Și de ce v-ați îmbrăcat în rochii din paiete
strălucitoare? Da, sigur, în episodul de azi e vorba despre Samba, dar nu despre
măiestria dansatorilor din Brazilia, ci despre rețelele Microsoft, despre protocolul
Session Message Block (SMB) folosit de ele și despre ciudățeniile care se întâmplă
când o companie oarecare încearcă să reinventeze "roțile" internetului ...
Vremuri străvechi
Pe când se potcovea puricele cu nouăzecișinouă de ocale, iar noii dinozauri
Windows 95 - abia născuți din negura lui Windows 3.11 for Workgroups - începuseră
să ne albăstrească ecranele, mulți dintre noi, bieții utilizatori din birouri,
făceam cunoștință cu ceea ce înseamnă o rețea locală. Era acolo, pe desktop,
un shortcut numit Network Neighborhood. Mai întâi, dădeam un click pe el și
aflam - după multe derulări de wizard-uri - că e o cale către nicăieri, fiindcă
nici măcar nu aveam o placă Ethernet. Apoi, prin bunăvoința șefului, multdoritul
adaptor își făcea apariția. Ajutați de vreun coleg mai priceput, două-trei click-uri
și gata, învățam să schimbăm fișiere cu cei de la etajul de deasupra, să tipărim
ceva la imprimanta din biroul vecin... Urma dezamăgirea: nu puteam trimite e-mail-uri
colegei de vis-à-vis, LAN-ul nu ne permitea să folosim și noi, pe ascuns, conexiunea
internet dial-up din biroul șefului... Dar totuși "Ai auzit, dragă, că ne-au
instalat rețea la servici ?"
Pentru mulți, simpaticele foldere galbene ale Windows-ului înseamnă un mister
și astăzi. Pentru alții, au devenit ceva cotidian, dar nimeni nu-și bate capul
cu adrese IP, DNS-uri și glume de-ale ăstora de la Tehnic ...
Și totuși ...
Și totuși rețeaua mondială de calculatoare, internetul, apăruse în germene încă
din anii '70. Calculatoarele comunicau și atunci, iar mașinile Unix din care
s-a format mai apoi "coloana vertebrală" a Net-ului "știau" lucruri pe care
PC-urile Windows nu le știu nici astăzi. Prin filme, prin instituțiile mari,
vedem încă antice monitoare alb-negru pe care informația - prezentată în mod
text, dar utilă - pare să răsară ca printr-o minune ... Cum așa? Lumea TI nu
începe de la Redmond?
Geamuri 95
Universul PC-urilor a crescut repede de la computerul singular de acasă la rețele
locale și, mai apoi, la internet. În cursul acestei evoluții, Microsoft s-a
găsit în fața unei dileme. Pe de o parte, existau protocoalele vechilor rețele,
stabile și bine cunoscute. Pe de alta, trebuia găsit "ceva" care să permită
unui utilizator oricât de netehnic să folosească o rețea de calculatoare. Începând
cu Windows for Workgroups, compania americană a demarat dezvoltarea unui pachet
de protocoale de nivel superior, proprietar, destinat interconectării computerelor
din birouri. Acesta s-a numit întâi Session Message Block (SMB), mai apoi CIFS,
iar "fața sa vizibilă" este icon-ul Network Neigborhood de pe desktop-urile
noastre.
De ce era nevoie de altă serie de protocoale? Nu știu. Poate că simplul TCP/IP
folosit în internet nu era, pe atunci, la îndemâna "omului de pe stradă". Sau
poate că Microsoft a dorit să izoleze utilizatorii de PC-uri de restul comunității
TI, făcându-i prizonierii programelor sale. Abia odată cu Windows 2000, lucrurile
s-au putut mișca în sensul adoptării pe rețelele locale a mecanismelor folosite
în internet. Spre exemplu, numele unui computer nu mai este acum simplu (COMPUTER),
ci s-a introdus structura ierarhică de domenii (computer.firma.com). Ca urmare,
rezolvarea numelor nu se mai face prin ciudatele servere WINS (Windows Internet
Naming Service), ci prin Domain Name Service (DNS), care este standardizat.
Mai nou, conflictul între open și proprietary pare a se fi mutat pe un alt teren.
Cu Windows XP, Microsoft ne impune noul Microsoft Passport, care joacă rolul
de "buletin de identitate" electronic al unei persoane. În acest timp, o alianță
largă, Liberty Alliance, în frunte cu Sun Microsystems, încearcă să ne scutească
de obligația oricărui bun "cetățean al planetei" de a ne stoca toate informațiile
personale la Microsoft. Nu știu de ce, dar aș prefera să-mi pot cumpăra o mașină
de spălat, folosind un credit-card, fără știrea lor ...
Închid paranteza.
Brazilieni, australieni și care alegorice ...
Prăpastia apărută între rețelele de PC-uri și ... toți ceilalți trebuia umplută
cumva. La nivelul rețea, Microsoft a adoptat, odată cu Windows 95, TCP/IP-ul.
Dar pentru partajarea fișierelor și imprimantelor între o mașină Windows și
una Unix, ca și pentru realizarea autentificării prin nume și parolă, mai trebuia
scris un program. Acesta este Samba, rezultat al eforturilor echipei de programatori
australieni grupați în jurul proiectului cu același nume (http://www.samba.org)
La urma urmei, ce face Samba? Iată:
- permite PC-urilor dintr-o rețea Microsoft să "vadă" o mașină Unix ca și
cum ar fi o mașină Windows "obișnuită", adică să listeze și să folosească
folderele și imprimantele care sunt partajate (shared) pe aceasta;
- reciproc, permite mașinii Unix să "vadă" mașinile Windows;
- permite mașinii Unix să devină membră a unui domeniu controlat de un server
Windows 2000 sau Windows NT sau a unui grup de lucru;
- dacă se dorește, mașina Unix poate prelua funcțiile serverului Windows
2000 sau NT, realizand autentificarea clienților Windows prin nume de utilizator
și parolă;
- se pot defini exact drepturile pe care fiecare utilizator al rețelei le
are asupra folderelor și imprimantelor oferite de (partajate pe) mașina Unix;
- cu ajutorul daemon-ului winbindd, serverul Unix poate importa ("citi")
baza de date cu utilizatori de pe un alt computer Windows 2000 sau NT prezent
în rețea;
- în fine, prin intermediul Samba se pot "regla fin" toate detaliile de comunicare
între aceste două tipuri de mașini atât de diferite.
Din experiența personală vă pot povesti că un server Linux cu Samba bine configurată
este un sistem de o extraordinară robustețe - practic, utilizatorii Dvs. nici
nu vor ști vreodată că serverul de pe care își iau datele este o mașină Unix
și nu una Windows.
Grozav ! Vreau Și eu !
Dacă v-ați hotărat să încercați, Samba se găsește în aproape orice distribuție
de Linux. În distribuția Red Hat, pe care o folosesc eu, pachetele .rpm pe care
trebuie să le instalați sunt samba, samba-client și samba-swat.
Documentația Samba este deosebit de "stufoasă" și necesită o lectură integrală,
atentă. Frustrarea unui utilizator neglijent poate fi foarte mare, pentru că,
oricum, veți petrece aproape o săptămână cu lectura și apoi încă una cu implementarea
și cu testarea. Piesele de documentație sunt diversele fișiere ce se găsesc
în /usr/share/doc/samba, fișierele de configurare din directorul /etc/samba
și paginile man ale componentelor (man smb.conf, man smbd, man nmbd, man lmhosts,
man winbindd). Din punct de vedere al programelor propriu-zise, pachetul Samba
instalează trei daemoni, care, dacă se dorește, pot rula implicit la pornirea
sistemului: smbd, nmbd și winbindd. Primul este programul Samba propriu-zis,
iar nmbd și winbindd se ocupă, respectiv, de rezolvarea numelor în stil Microsoft
și de citirea bazelor de date cu utilizatori de la alte servere NT din rețea.
Componenta swat este o interfață Web comodă pentru configurarea Samba, pe care
o puteți accesa la adresa IP a mașinii, pe portul 901.
Descrierea detaliată a utilizării parametrilor din /etc/smb.conf depășește,
din păcate, ca volum, spațiul disponibil aici. Voi încerca, totuși, să enumăr
măcar parametrii relevanți pentru funcționarea sistemului, în scopul de a vă
ușura studiul.
Deci, cum începem? Dacă aveți distribuția Red Hat, vă recomand ca, înainte de
toate, să tipăriți la imprimantă o copie a fișierului text de configurare /etc/samba/smb.conf,
în varianta implicită dată de autorii distribuției. Apoi, aveți nevoie neapărat
de o copie tipărită a paginii manual a Samba, adică a fișierului /usr/share/man/man5/
smb.conf.5.gz, care conține descrierea fiecăruia dintre zecile de parametri
ce comandă acest program. În fine, pentru lămurirea unor aspecte punctuale -
în special cele legate de autentificarea utilizatorilor - vă sugerez să parcurgeți
măcar câteva dintre fișierele din directorul cu documentație, anume /usr/ share/doc/samba.
Și, bineințeles, să vizitați http://www.samba.org/ <../../>
"Două fire, două paie ..."
Pentru a înțelege funcționarea Samba, trebuie, mai întâi, să ne imaginăm cum
funcționează o rețea Microsoft (în generația Windows 95/Windows 98)
Într-o asemenea rețea, fiecare calculator este identificat printr-un nume simplu,
neierarhic, cum ar fi STATIA1. Acesta este numele pe care îl asignați calculatorului
Dvs. la instalarea Windows, în Control Panel -> System -> Identification.
Tot aici vi se cere ca mașina Dvs. să facă parte dintr-o structură cum ar fi:
- un grup de lucru (workgroup). Acesta înseamnă, pur și simplu, o mulțime
de calculatoare Windows ierarhic egale (peers) care partajează informații
- de exemplu într-un birou;
- un domeniu (domain). Domeniul extinde noțiunea de workgroup adăugându-i
un server Windows 2000 Server sau Windows NT însărcinat să păstreze centralizat
baza de date cu numele și parolele utilizatorilor și alte informații despre
mașinile-client aflate sub autoritatea sa.
De asemenea, fiecare mașină din rețea are nevoie de propria sa adresă IP,
pentru a putea comunica cu celelalte. În cazul cel mai frecvent, această adresă
nu este stabilită de utilizator la instalarea Windows - cei mai mulți utilizatori
neprofesioniști nici nu știu despre ce vorbesc eu acum ;-) - ci se atribuie
dinamic mașinii, în momentul pornirii, printr-un mecanism tip DHCP.
Ce se întâmplă, de fapt? În momentul pornirii calculatoarelor din rețea, fiecare
își "strigă" propriul nume, folosind adresa IP de broadcast și anunțându-și
astfel prezența. Între stații are loc un proces de "vot", prin care una - și
numai una - este aleasă drept Local Master Browser (LMB). În această calitate,
stația LMB va primi și păstra o copie a informațiilor despre folderele și imprimantele
oferite spre partajare de toate celelalte stații - acea "listă" de foldere galbene
pe care utilizatorul o vede dând un click pe icon-ul Network Neighborhood.
În cazul unei rețele complexe, în care segmentele sunt separate prin routere,
procesul de "anunțare publică" (broadcast) și alegere a LMB are loc pe fiecare
segment de rețea în parte. Asta deoarece broadcast-urile nu se propagă "prin"
router, în segmentele învecinate. Pentru a unifica lista de partajări din întreaga
rețea, sunt necesari încă doi "pioni". Primul este un Domain Master Browser
(DMB), computer însărcinat cu "însumarea" listelor de partajări primite de la
fiecare LMB în parte (de menționat că mașina desemnată ca Domain Master Browser
este, de obicei, și Local Master Browser-ul pentru propriul segment local de
rețea). Al doilea este serverul WINS (Windows Internet Name Server), care realizează
conversii între adresele IP ale stațiilor și numele lor (și reciproc), analog
cu DNS.
Deci, ce trebuie să facă un LMB în momentul în care a fost desemnat în această
funcție pe propriul segment de rețea? El va trebui să găsească DMB-ul, pentru
a sincroniza lista sa de partajări cu cea a întregii rețele. Cum DMB poate să
fie situat pe un alt segment de rețea, acesta nu va fi accesibil în mod direct.
Pentru a-l găsi, LMB va trebui să "întrebe" serverul WINS, care îi va furniza
adresa IP a DMB-ului. Dar de unde o cunoaște WINS pe aceasta din urmă? Chiar
DMB i-a comunicat-o, în momentul bootării.
Complicat, nu? Nu era mai drăguț, mai uman, serviciul DNS pe care l-am descris
într-o conversație anterioară? Ba daaaaaaaaa...
În urma sincronizării între un LMB oarecare și DMB-ul întregii rețele, primul
ajunge să cunoască întreaga listă de partajări pe care o are la dispoziție Domain
Master Browser-ul în acel moment.
Trebuie adăugat că fiecare calculator din rețea trebuie să cunoască aprioric
adresa IP a serverului WINS, analog cu modul în care este necesar ca Dvs. să
introduceți manual adresele serverelor DNS în caseta Properties a TCP/IP-ului.
Pe o rețea în care utilizatorii nu fac asta, puteți spera măcar că acești parametri
se transmit, la bootare, printr-un mecanism DHCP.
Dacă tot acest proces vi se pare destul de complicat, aveți dreptate. Nu numai
că este complex, dar volumul mare de broadcast-uri generează o încărcare mare
a rețelei, diminuând lățimea de bandă disponibilă efectiv pentru transferul
datelor utile. În plus, dacă una dintre legături nu funcționează - să zicem,
unul dintre routerele amplasate între două segmente de rețea "cade" - actualizarea
listelor se face încet. În Network Neighborhood veți continua să vedeți partajările
de "dincolo" de routerul defect, care, în realitate, nu mai sunt accesibile,
pentru încă aproximativ o jumătate de oră. Dacă dați un click pe un asemenea
folder, încercând să-l deschideți, aveți toate șansele să vă blocați computerul.
Fenomene la fel de ciudate se întâmplă și în cazul în care, dintr-un motiv sau
altul, serverul WINS nu mai este disponibil - de exemplu, secretara care lucra
pe el l-a închis și a plecat acasă ;-) Lucrurile se petrec cam ca în cazul în
care clienții rămân izolați față de serverul lor DNS - nu va mai funcționa aproape
nimic. Dacă țineți seama și de faptul că, într-un birou, stațiile se închid
și se deschid în mod aleator, veți înțelege cât de mare este traficul generat
de acest proces, repetat periodic, de căutare, de broadcasting, de alegere a
LMB-urilor ...
Ritmuri latino
Dacă ați înțeles procesul de mai sus, vă întrebați, desigur, cu ce vă poate
fi de folos mașina Dvs. Linux în acest mediu Microsoft-only. Iată, am să vă
dau niște vești bune ...
Mai întâi, vom începe cu setările elementare. În fișierul /etc/samba/smb. conf,
stabiliți numele NETBIOS pe care îl va purta computerul Dvs, grupul de lucru
din care face parte și un mic comentariu care vă va ajuta să-l identificați:
netbios name = COMPUTERULMEU
workgroup = FIRMA
server string = Computerul de la parter
interfaces = 192.168.0.1
Apoi, Linux poate prelua funcția serverului WINS. Este suficient să editați
fișierul /etc/samba/lmhosts și să adăugați acolo linii forma:
192.168.0.1 COMPUTER1
192.168.0.2 COMPUTER2
prin care veți stabili asocieri între adresele IP și numele NETBIOS ale stațiilor
din rețea. Vă sfătuiesc să utilizați capacitățile WINS ale Samba numai dacă
nu există un server Windows NT sau 2000 care să îndeplinească această funcție.
În plus, o singură mașină Samba trebuie să fie configurată ca server WINS. Ideal,
în rețeaua Dvs. ar trebui să existe mai multe servere WINS, situate pe segmente
diferite, care să își împartă sarcinile de a răspunde clienților și să își diminueze
reciproc încărcarea (un mecanism de redundanță și de load-balancing). Desigur,
toate serverele prezente trebuie să conțină aceeași bază de date lmhosts, pe
care trebuie să o poată sincroniza între ele. Din nefericire, spre deosebire
de serverele WINS de la Microsoft, Samba nu știe încă să participe la un asemenea
mecanism de replicare. Și asta numai datorită faptului că Microsoft refuză să
ofere chiar și cel mai mic detaliu despre protocolul prin care se execută sincronizarea.
Așa că, momentan, nu aveți decât două altenative: să configurați un singur server
WINS Samba sau să vă bazați pe capacitățile serverelor native existente în rețea.
Calitatea de server sau de client WINS poate fi stabilită cu ajutorul parametrilor:
wins server = 192.168.0.3
(indică adresa IP a serverului WINS, deci mașina Samba este client)
wins support = yes/no
(stabilește dacă mașina Samba este ea însăși server)
Computerul poate îndeplini rolul de server sau cel de client, dar nu simultan.
Ordinea în care se încearcă utilizarea diverselor mecanisme de rezolvare a numelor
este dată de parametrul name resolve order =.
Mai departe, Samba poate prelua rolul de Local Master Browser sau cel de Domain
Master Browser. Parametrii booleeni din /etc/smb.conf:
domain master =
local master =
controlează acest lucru, împreună cu opțiunile:
preferred master =
os level =
Trebuie să acordați atenție prezenței altor servere Microsoft în rețea. Nu trebuie
să uitați că procesul de selecție al browserelor se repetă periodic - o "luptă"
prea îndârjită între două servere care își dispută acest rol poate încetini
sau bloca întreaga rețea. Desigur, nu trebuie să existe mai mult de un LMB pentru
fiecare segment de rețea sau mai mult de un DMB. Cu ajutorul programului-client
smbclient puteți verifica cum sunt asignate aceste roluri. Comanda:
smbclient -L \\COMPUTERULMEU
va afișa lista partajărilor oferite de COMPUTERULMEU, numele workgroup-ului
din care acesta face parte și pe acela al LMB-ului care controlează întregul
workgroup. Parametrul os level = stabilește nivelul priorității de care se va
bucura Samba în elecția pentru LMB.
Odată ajunși în această fază, vă recomand să citiți documentul /usr/doc /samba/DIAGNOSIS.txt
și să parcurgeți minuțios pașii de verificare sugerați acolo.
Halt ! Papiere ... ?!
Nu în ultimul rând, serverul Linux poate îndeplini funcția santinelei germane
care păzește bariera: autentificarea celor ce se loghează de la stațiile Windows
;-)
Principala diferență între un workgroup și un domeniu Windows NT este aceea
că, în timp ce fiecare mașină dintr-un grup de lucru are propria sa bază de
date cu utilizatori, într-un domeniu baza de date există pe server (Primary
Domain Controller - PDC) și este "consultată" de toate mașinile, în momentul
logării. Pentru redundanță, pot exista alte servere NT, Backup Domain Controllers
(BDC), care preiau încărcarea sau înlocuiesc PDC când acesta nu este disponibil.
Într-un mediu mixt, Windows/Linux, Samba poate juca rolul de PDC, dacă nu există
un server Microsoft. Din aceleași motive de proprietarism arătate înainte, Linux
nu poate participa la sincronizarea bazelor de date cu utilizatori, adică nu
poate lucra (deocamdată) ca BDC.
Autentificarea utilizatorilor se poate face direct sau prin intermediul unui
server NT/2000 auxiliar. Puteți controla aceste aspecte folosind următorii parametri
din /etc/smb.conf:
security = (vă recomand security=user sau security=domain)
domain master =
local master =
domain logons =
password server =
encrypted passwords =
logon drive =
logon path =
logon script =
username map =
Înainte de a începe să lucrați într-un asemenea mediu mixt, asigurați-vă că
ați instalat ultimele Service Pack-uri pe serverele Dvs. Windows 2000 sau NT.
Altfel, vă veți confrunta cu probleme de interoperabilitate care nu au de a
face, propriu-zis, cu Samba.
În cazul în care utilizatorii Dvs. poartă nume diferite pe mașina Unix și pe
stațiile Windows, puteți stabili corespondențele folosind fișierul /etc /samba/smbusers.
Liniile din acest fișier sunt de forma:
nume_unix = nume_windows1 nume_windows2 nume_windows3
...
Pentru folosirea bazei de date a unui server NT/2000 în scopul autentificării
utilizatorilor, trebuie să folosiți programul daemon winbindd, care realizează
această funcție. Utilitarul auxiliar wbinfo vă permite să verificați ce nume
de utilizator sunt definite și "exportate" în domeniul Dvs. - paginile manual
ale celor două programe vă vor fi de folos.
După serbare
Sunt sigur că punerea la punct a unei rețele bazate pe Samba, cu particularitățile
dorite de Dvs., vă va lua un timp mai lung decât în cazul altor programe. Șefii
nu trebuie, însă, să devină nerăbdători - bine configurat, Samba este unul dintre
programele care vă va scuti de foarte multe probleme în rețeaua firmei și va
economisi taxele de licență consistente pentru un Windows 2000 Server sau Advanced
Server.
De mare ajutor vă poate fi și cartea apărută în traducere, în românește: Carter,
G.; Sharpe, R. - "Samba". Dacă sunteți programator, puteți încerca să contribuiți
și Dvs. la dezvoltarea suitei Samba cu câteva secvențe de cod. Dacă nu, situl
www.samba.org vă oferă indicații detaliate despre cum puteți menține buna dispoziție
și cheful de muncă ale lui Andrew Tridgell și ale echipei sale, trimițând o
pizza pe adresa lor din Australia.
Cât despre mine, vă stau la dispoziție, ca de obicei, pe http://www.linuxwill.go.ro
|