Ismerkedés egy SMB/CIFS hálózattal

Miután befejeztük a Sambában tett rövid sétánkat, szenteljün némi idõt arra, hogy meg-
ismerkedjün a Samba választott környezetével: egy SMB/CIFS hálózattal. Az SMB környe-
zetben folyó hálózati munka lényegesen különbözik egy Unix környezetben folytatott,
TCP/IP alapú hálózati munkától, mert számos új koncepcióval és információval kell meg-
ismerkednünk. Elõször az SMB hálózathoz tartozó alapvetõ koncepciókat tekintjük át, azt
követõen megismerkedünk néhány Microsoftos megvalósításával, végül megtudjuk, hol
illeszthetõ be egy Samba kiszolgáló a képbe, és hol nem.

Röviden a NetBIOS-ról

Elõször menjünk vissza egy keveset idõben. 1984-ben az IBM elkészített egy egyszerû
alkalmazásprogramozási felületet (API) a számítógépeinek hálózati mûködtetéséhez,
aminek a Network Basic Input/Output (NetBIOS) nevet adta. A NetBIOS API kezdetleges
eszközt kínált ahhoz, hogy egy alkalmazás hozzáférhessen más számítógépekhez, és ada-
tokat osszon meg velük.
A NetBIOS API jórészt úgy tekinthetõ, mint a szabványos BIOS API hívások hálózati
kiegészítése. A BIOS csak arra alkalmas, hogy minden egyes alacsony szintû hívás a helyi
gép hardverére korlátozódjon, és semmiféle segítséget nem nyújt ahhoz, hogy egy hívás
rendeltetési helyét megváltoztathassuk. Ezzel szemben a NetBIOS eredeti rendelteté-
se az volt, hogy IBM PC-s vagy Token Ring hálózatokban a számítógépek kicserélhessék
egymás közt az utasításokat. Ezért szükség volt egy alacsony szintû szállítási protokoll
megvalósítására, amin keresztül kéréseket lehetett küldeni az egyik számítógépbõl a
másikba.
Az 1985-ös év vége felé az IBM kiadott egy ilyen protokollt, amit összeolvasztott a Net-
BIOS API-val, és az így létrejött terméknek a NetBIOS Extended User Interface (NetBEUI)
nevet adta. A NetBEUI protokollt kisebb helyi hálózatokhoz (LAN)tervezték, lehetõvé
téve, hogy a hálózatba kötött mindegyik gépnek saját nevek legyen (max.15 karakteresig).
A ,,kisebb hálózat” itt olyan hálózatot jelent, amelyik 255-nél kevesebb csomópontból áll –
1985-ben ez még ésszerû korlátozásnak volt tekinthetõ.


20 | SAMBA

A NetBEUI protokoll nagyon népszerû volt a hálózati alkalmazásokban, beleértve azo-
kat is, amelyek Windows for Workgroups alatt futottak. A késõbbiekben a NetBIOS olyan
változatai kerültek elõtérbe, melyek a Novell IPX hálózati protokolljain valósultak meg, s
ezek a NetBEUI-val versengtek. Az akkoriban fejlõdésnek indult internetes közösség a
meglévõ hálózati protokollok közül azonban TCP/IP-t és a UDP/IP-t választotta, ezért
hamarosan elengedhetetlenné vált a NetBIOS API megvalósítása ezeken a protokollokon.
Emlékezzünk arra, hogy a TCP/IP számokat használ a számítógépek megcímzéséhez,
olyanokat, mint például 192.168.220.100, a NetBIOS pedig neveket használ. Ez jelentette
az egyik fõ problémát a két protokoll összegyúrásakor. Az Internet Engineering Task
Force (IETF) 1987-ben RFC 1001 és 1002 jelöléssel kiadott egy sor szabványosító doku-
mentumot, melyekben körvonalazták, hogy a NetBIOS miképpen volna képes mûködni
egy TCP/UDP hálózaton. Ez a dokumentumcsomag szabályozza még ma is az összes léte-
zõ megvalósítást, beleértve azokat is, amelyeket a Windows használ a saját operációs
rendszereiben, valamint a Samba szoftverkészletét is.
Azóta a szóban forgó dokumentumcsomag által szabályozott szabvány NetBIOS over
TCP/IP vagy röviden NBT néven vált ismertté. Az NBT szabvány (RFC 1001/1002) jelenleg
a szolgáltatások alábbi hármasát vázolja egy hálózatban:

A névkiszolgáló az elõbb említett, névvel és címmel kapcsolatos problémát oldja meg:
lehetõvé teszi, hogy a hálózatban mindegyik számítógép deklaráljon egy rá jellemzõ
nevet, ami aztán lefordítható egy, a számítógépek által érthetõ IP címre, nagyon hasonló-
an ahhoz, ahogyan ezt az interneten a DNS teszi. A datagram és a session szolgáltatások
másodlagos kommunikációs protokollok, amelyeknek az a feladata, hogy adatokat továb-
bítsanak a hálózatba kötött NetBIOS számítógépek között.

Név igénylése

Egy emberi lény viszonylag könnyen igényelhet magának nevet. Ugyanez azonban egy
NetBIOS hálózatba kapcsolt gép esetén már nem ennyire egyszerû. Lássunk néhány rész-
letet!
Amikor a NetBIOS világában egy számítógép bejelentkezi a hálózatba, és szeretne
nevet kapni magának, ezt névregisztrálásnak nevezik. Ugyanabban a munkacsoportban
azonban nem igényelheti két gép ugyanazt a nevet, mert ez vég nélküli zavarokhoz vezet-
het, amikor bármelyik másik gép kommunikálni szeretne a két gép egyikével. A probléma
elkerüléséne két megközelítése van:

Az 1.8.ábra két (sikertelen) névregisztrálást mutat be: egyet a NetBIOS névkiszolgáló
segítségével, egyet anélkül.

 

1.FEJEZET.ISMERKEDÉS A SAMBÁVAL | 21


1.8.ábra.Névregisztrálás NBNS igénybevételével és anélkül

Ezen kívül kell még valamilyen módot találni arra, hogy egy NetBIOS név átalakítható
legyen specifikus IP címmé, amint errõl már volt szó. Ezt a módot névfeloldásnak nevezik.
Az NBT-nél erre kétféle megoldás létezik:

Az 1.9.ábra szemlélteti a névfeloldásnak ezt a két módját.
Amint várható, az NBNS névkiszolgáló megléte a hálózaton nagyon sokat segíthet. Azért,
hogy pontosan lássuk, hogyan történhet ez, tekintsük át az NBNS nélküli esetet.
Ilyenkor, ha bejelentkezik egy ügyfélgép, szétküld egy üzenetet, amelyben kijelenti,
hogy a saját, specifikus NetBIOS nevét akarja regisztrálni. Ha többszöri regisztrálási kísér-
letet követõen sincs senkinek kifogása a név használata ellen, akkor a gép megtartja a
nevet. Ha viszont a helyi alhálózatban valamelyik gép már használja a szóban forgó nevet,
egy üzenetet küld vissza a névigénylõ ügyfélnek, amelyben közli,hogy a név már foglalt.
Ezt a gazdanév megvédésének nevezi. Az ilyen módszer akkor jöhet jól, ha egy ügyfél
váratlanul kilép a hálózatból: ekkor ugyanis egy másik gép probléma nélkül megkaphatja
a nevét. Másrészt viszont rendkívüli módon megnõne a hálózat forgalma, ha még az olyan
egyszerû mûveleteket is, mint a névregisztrálás, az egész hálózatot érintõen kellene lebo-
nyolítani.

 

22 | SAMBA


1.9.ábra.Névfeloldás NBNS igénybevételével és anélkül

Az NBNS használata esetén ugyanez történik azzal a különbséggel, hogy a kommunikáció
csak az igénylõ gépre és az NBNS kiszolgálóra korlátozódik. Amikor az ügyfélgép bejelen-
ti az igényét egy név regisztrálására, a regisztrálási kérelem az ügyféltõl közvetlenül az
NBNS kiszolgálóra kerül, és az NBNS kiszolgáló válaszol, hogy a név foglalt-e már vagy
sem. Ezt ponttól-pontig kommunikációnak nevezik, és különösen azoknál a hálózatoknál
elõnyös, amelyeknek egynél több alhálózatuk van. Ennek oka, hogy a forgalomirányító
gyakran eleve úgy vannak konfigurálva, hogy blokkolják a broadcast csomagokat.
Ugyanezek az elvek alkalmazhatók a névfeloldóknál is. Az NBNS nélkül a NetBIOS név
feloldása szintén a ,,szétszórásos” mechanizmussal történne. Az összes igénybejelentõ
csomag eljutna a hálózat összes számítógépéhez, abban a reményben, hogy egyetlen,
esetleg érintett gép közvetlenül válaszol a kérõ gépnek. Ennyibõl már világosan érthetõ,
hogy egy NBNS kiszolgáló és a ponttól-pontig kommunikáció használata összehasonlítha-
tatlanul kisebb mértékben terheli le a hálózatot, mint az az áradat, amit az összes gépnek
elküldendõ névfeloldási kérelmek sokasága idézne elõ.

Csomóponttípusok

Hogyan tudnán megmondani,hogy a hálózatunkban lévõ egyes ügyfele milyen straté-
giát használnának a nevük regisztrálásához és feloldásához?Egy NBT hálózat minden
egyes gépe a övetkezõ jelölése egyikét apja,attól függõen,hogy miként kezeli a név-

 

1.FEJEZET.ISMERKEDÉS A SAMBÁVAL | 23

regisztrálást és -feloldást: b-csomópont, p-csomópont, m-csomópont és h-csomópont. Az
egyes csomóponttípusok viselkedését az 1.1.táblázat foglalja össze.


1.1.táblázat.A NetBIOS csomóponttípusai


Windows ügyfelek esetében általában azt tapasztaljuk, hogy ezek h-csomópontokként
vagy hibrid csomópontokként vannak felsorolva. Mellesleg szólva a h-csomópontokat
mint hibatûrõbb típust a Microsoft fejlesztette ki késõbb, és így nem szerepel az RFC
1001/1002 dokumentációban.
Egy Windows 95/98-as géprõl úgy tudhatjuk meg, hogy milyen típusú csomópontot
képvisel, hogy a futtatási parancssorba beírjuk a winipcfg parancsot, és a megnyíló pár-
beszédablakban a További információ (More Info) gombra kattintunk. Windows NT
gépen írjuk be az ipconfig /all parancsot, majd keressük meg a Csomóponttípus
(Node Type) sort.


Mit tartalmaz egy név?

A NetBIOS által használt nevek eléggé különböznek a feltehetõen ismerõs DNS nevektõl.
Elõször is a NetBIOS nevek betûi folyamatosan helyezkednek el a számukra adott helyen.
Másként fogalmazva ez azt jelenti, hogy a neveknek nincsenek olyan, a gazdagép nevétõl
ponttal elválasztott toldalékai, mint amilyenek például az ora.com vagy a samba.org
nevekben találhatók. Minden egyes számítógépet rá jellemzõ egyetlen név azonosít.
Másodszor, a NetBIOS neve maximum 15 karakterbõl állhatnak, nem kezdõdhetnek csil-
laggal (*), továbbá csak az (angol) szabványos alfanumerikus karaktereket (a –z,A –Z,0 –9)
és a következõ speciális jeleket tartalmazhatják:

!@#$%^ &()-’{}.~

Bár a pont (.) karakter használata engedélyezett, mégsem tanácsos használni, mert nem
garantálható, hogy az ezt tartalmazó neve a TCP/IP-re épülõ NetBIOS jövõbeli változata-
iban is mûködni fognak.
Nem véletlen egybeesés, hogy az összes érvényes DNS név egyúttal érvényes NetBIOS
név is. A valóságban gyakran elõfordul, hogy egy Samba kiszolgáló DNS neve egyúttal a
kiszolgáló NetBIOS neveként is szolgál. Ha például van egy phoenix.ora.com nevû

24 | SAMBA

gépünk, akkor ennek a NetBIOS neve feltehetõen PHOENIX lenne (amely után nyolc
üres hely áll).

Erõforrások nevei és típusai

Egy számítógép a NertBIOS révén nem csak közli másokkal a jelenlétét, hanem arról is
tájékoztatja a többieket, hogy milyen típusú szolgáltatásokat kínál. Így például a phoenix
gép jelezheti, hogy nem csupán egy munkaállomás, hanem egyúttal fájl kiszolgáló is, és
képes WinPopup üzenetek fogadására. Ezt azzal teheti meg, hogy egy 16. bájtot –úgyne-
vezett erõforrástípus -jelzést – fûz a gép (erõforrás) nevének végére (lásd az 1.10.ábrát), és
egynél többször regisztrálja a nevét.


1.10.ábra.A NetBIOS nevek felépítése

Az egy bájtos erõforrástípus-jelzés azt a szolgáltatást jelzi, amelyet a megnevezett gép nyúj-
tani képes. Ebben a könyvben gyakran találkozhatunk erõforrástípusokkal, amelyek
hegyes zárójelek (<>) között állnak a NetBIOS név után, például így:

PHOENIX<00>

Megnézhetjük, hogy egy adott NBT géphez milyen nevek vannak regisztrálva, ha a
Windows parancssorába az NBTSTAT parancsot beírva futtatjuk ezt a segédprogramot. Mivel
a szolgáltatások egyediek (vagyis egynél több nem lehet regisztrálva), az eredménylistában
UNIQUE típusúakként listázódnak ki. Az alábbi részlet például a hydra kiszolgálót írja le:

D:\>NBTSTAT -a hydra
NetBIOS Remote Machine Name Table
Name Type Status
-------------------------------------------
HYDRA <00> UNIQUE Registered
HYDRA <03> UNIQUE Registered
HYDRA <20> UNIQUE Registered
...

A listából kiolvasható, hogy a gép (munkaállomás) neve hydra NetBIOS névként van
regisztrálva, képes WinPopup üzenetek fogadására, továbbá fájlkiszolgáló. Az 1.2. táblázat
a név lehetséges attribútumai közül sorol fel néhányat.

 

1.FEJEZET.ISMERKEDÉS A SAMBÁVAL | 25


1.2.táblázat.A NETBIOS Unique erõforrástípusai

Figyeljük meg, hogy mivel a DNS neveknek nincsenek erõforrástípusaik, a tervezõk szán-
dékosan a 20-as hexadecimális értéket (egy ASCII szó özt)tették a fájlkiszolgáló típusá-
nak alapbeállításává.

Csoportnevek és típusok

Az SMB a csoportok fogalmát is használja, amivel a gépek regisztrálhatják magukat.
Korábban már említettük, hogy a példánkban a gépek egy munkacsoporthoz tartoznak,
ami ugyanannak a hálózatnak valamely gépcsoportját jelenti. Így egy hálózatban könnyen
lehet például egy EXPORT és egy IMPORT nevû munkacsoport, melyek mindegyike kü-
lönbözõ kiszolgálókból és nyomtatókból állhat. A Windows világában egy munkacsoport
és egy SMB csoport ugyanazt jelenti.
Folytatva az NBTSTAT példánkat, a hydra Samba kiszolgáló egyúttal a SIMPLE munka-
csoport tagja is (a csoport – GROUP – attribútuma hexa 00), és fõtallózóként is választható
(1E csoport-attribútum). Az NBTSTAT kimenetének fennmaradó része:

NetBIOS Remote Machine Name Table, continued
Name Type Status
---------------------------------------------SIMPLE
<00> GROUP Registered
SIMPLE <1E> GROUP Registered
.._ _MSBROWSE_ _.<01> GROUP Registered

Az 1.3.táblázat azokat a lehetséges csoport-attribútumokat sorolja fel, amelyekkel egy gép
rendelkezhet. További információk a Windows NT in a Nutshell címû O ’Reilly - könyvben
olvasható, amelynek szerzõje Eric Pearce. (Az O ’Reilly hasonló témájú könyvei közül
Aelen Frisch Windows NT rendszeradminisztráció címû kötete jelent meg magyar nyel-
ven a Kossuth Kiadónál, és ugyancsak részletesen foglalkozik a csoportok kérdéseivel –
szerkesztõ megjegyzése.)

 

26 | SAMBA


1.3.táblázat.A NETBIOS csoport-erõforrástípusai


Az utolsó bejegyzés, az _ _MSBROWSE_ _arra szolgál, hogy bejelentse magát egy csoport
a többi fõtallózónak. A névben a nem nyomtatódó karakterek az NBTSTAT nyomatón
pontokként jelennek meg. Ne aggódjunk, ha nem értjük az összes erõforrás- és csoport-
típust. Közülük egyeseket nem kell használnun a Sambához, másokról pedig a önyv-
ben máshol részletesebben olvashatunk. Itt csak az a fontos, hogy az elnevezési mechaniz-
mus logikáját értsük.

Datagram és session

Ezen a ponton tegyünk egy kis kitérõt, és ismerkedjünk meg az NBT másik feladatkörével,
nevezetesen két NetBIOS gép közötti kommunikációs szolgáltatásokkal. A TCP/IP alapú
NetBIOS két szolgáltatástípust kínál: a datagram szolgáltatást és a session szolgáltatást. A
Samba használatához e két szolgáltatás mûködésének megértése nem lényeges, de arra
azért jó, hogy képet kapjunk az NBT mûködésérõl, valamint arról, hogy miként kereshe-
tünk hibát a Sambában, ha nem mûködne.
A datagram szolgáltatás nem létesít állandó kapcsolatot az egyik és a másik gép között.
Az egyik gép egyszerûen kiküldi az adatcsomagokat egy vagy több másik gépnek anélkül,
hogy tekintettel lenne a rendeltetési állomásra érkezésük sorrendjére, vagy hogy figyelne
arra, hogy egyáltalán megérkeznek-e a csomagok. A datagramok küldése kevésbé terheli
ugyan a hálózatot, mint a session szolgáltatás, ennek ellenére képes lefagyasztani a háló-
zatot, ha nem kellõ gondossággal használják (emlékszünk a broadcast névfeloldásra az
elõzõ részbõl?). Ezért a datagramok elsõsorban azt a célt szolgálják, hogy gyorsan elküld-
jenek egyszerû blokkokat egy vagy több gépre. A datagram szolgáltatás az 1.4. táblázatban
felsorolt egyszerû primitíveket használja a kommunikáláshoz.


1.4.táblázat.Datagram primitívek

 

1.FEJEZET.ISMERKEDÉS A SAMBÁVAL | 27

A session szolgáltatás ennél bonyolultabb. A session olyan kommunikációs eljárást
jelent, ami elvileg lehetõséget nyújt két NetBIOS alkalmazás közötti problémák vagy
mûködésképtelen kapcsolatok észlelésére. Az NBT session megértését segíti, ha úgy
tekintjük, mint egy telefonhívást. *A hívó és a hívott gép között teljes duplex kapcsolat
létesül, aminek a beszélgetés egész idején nyitottnak kell maradnia. Mindkét fél tudja,
hogy ki a hívó és ki a hívott, és az 1.5. táblázatban felsorolt egyszerû primitíve segítségé-
vel beszélhetne egymással.


1.5.táblázat.A session primitívjei

A session az erõforrások megosztásának alapja egy NBT hálózaton. Tipikusan arra hasz-
nálják õket, hogy tartós kapcsolatok jöjjenek létre az ügyfélgépek és a kiszolgáló lemez-
vagy nyomtatómegosztásai között. Az ügyfél ,,felhívja” a kiszolgálót, és információkat küld
arra vonatkozóan, hogy mely fájlokat akarja megnyitni, mely adatokat akarja kicserélni
stb. A hívások hosszú ideig tarthatna – órákig vagy akár napokig –, és mindez egyetlen
kapcsolat keretében zajlik. Ha hiba lépne fel, akkor a session szoftvere (TCP) újra elküldi
az adatokat mindaddig, amíg azok rendben meg nem érkeznek, ellentétben a datagram
szolgáltatás (UDP) ,,üldd el és fohászkodj” típusú módszerével.
A valóságban azonban – miközben azt feltételezzük, hogy a session képes a problema-
tikus kommunikációs kapcsolatok kezelésére – nem mindig ilyen jó a helyzet. Amint talán
már tapasztalhattuk, a Windows hálózatok használatakor komoly problémák merülhet-
nek fel. Ha a kapcsolat valamilyen oknál fogva megszakad, a két számítógép között meg-
nyitott session információk könnyen érvénytelenné válhatnak. Ha ez történik, akkor a
session információ újbóli megszerzéséne csak egyetlen módja marad: ugyanaz a két
számítógép újra hívja egymást, és elölrõl kezdik a kapcsolat felépítését.
Aki további tudnivalókat szeretne olvasni errõl a két szolgáltatásról, annak ajánlható az
RFC 1001-es dokumentáció tanulmányozása. Itt mindössze két fontos dologra hívjuk fel
még a figyelmet:

*Amint láthatjuk az RFC 1001-ben, a telefonos hasonlat egyértelmû volt az NBT szolgáltatás elkészítését
tekintve.