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.