År 1994 påbörjade Andrew Tridgell arbetet med att skapa en fri SMB-server. Denna är idag känd som Samba , och har nått stor popularitet på många Unix-plattformar, däribland t.ex. Linux , SunOS och SGI Irix. "The Samba Suit" innefattar även en klient och många användbara verktyg. Samba-paketet innehåller mycket dokumentation. Mer info om SMB finns t.ex. på http://samba.anu.edu.au/cifs/docs/what-is-smb.html
SMB bygger på en Client/Server-modell. I början fanns det en strikt uppdelning av mellan vilka maskiner som var servrar respektive klienter, men nuförtiden är det vanligt att en dator är både server och klient samtidigt. Under DOS och Windows får man tillgång till en nätverksresurs genom att knyta ihop en enhetsbokstav eller använda UNC-notation . Programvaran som sköter detta kallas redirector. Under Unix monteras katalogen på sedvanligt vis någonstans i filsystemet.
SMB är starkt förknippat med NetBIOS, och använder s.k. NetBIOS-namn för att identifiera resurser. Ett sådant kan vara max 15 tecken långt, plus ett typ-tecken. Detta kan jämföras med IP-address respektive port-nummer för TCP/IP. Alla parter måste ha ett unikt NetBIOS-namn för att kunna kommunciera, även om olika s.k. arbetsgrupper eller domäner används.
SMB återfinns på nivå 6 i OSI-modellen, och kan köras över flertalet olika underliggande protokoll som exempelvis NetBEUI, IPX eller TCP/IP. I det sistnämnda fallet används ofta begreppet NBT, NetBIOS over Tcp/ip.
Men det finns ett sätt som löser dessa problem: NBNS Förkortningen står för NetBIOS Name Service. Denna är beskriven i RFC 1001, för den som vill veta mer. Microsoft Windows NT innehåller en NBNS som de kallar för WINS. Förkortningen står för Windows Internet Name Service, och används ofta som en synonym till NBNS (vilket jag själv kommer att göra fortsättningsvis). Det hela fungerar enligt följande: Man avsätter en speciell dator för att vara NBNS. När andra datorer senare startar upp kontaktar de denna (registrering), och berättar vad de heter och vilket IP-nummer de har. Registreringen godkänns ifall namnet är ledigt. På detta viset byggs det upp en databas över vilka NetBIOS-namn som hör ihop med vilka IP. När klienter senare önskar denna information så frågar de NBNS-servern, och behöver inte utföra någon broadcast.
Systemet fungerar i princip som DNS, med ett par viktiga skillnader: Det finns ingen hierarki, dvs inga "domäner". Dessutom byggs databasen upp dynamiskt, utifrån klienternas registreringar. Många har kritiserat WINS för att vara "en försämrad version av DNS". Windows 2000 använder huvudsakligen DNS istället för WINS.
SUBnet har tillgång till en WINS-server. Det är samma maskin som SUBnets DNS, och har IP-nummer 130.236.230.9. NetBIOS-namnet är ISIS.
Observera: Att kunna "se" en dator i browselistan har inget alls att göra med huruvida man kan nå datorn ifråga eller inte. I vissa fall kan det hända att man kan se färre datorer sedan man ställt in WINS-server, men då går det troligtvis att nå ett större antal av de som syns. De flesta torde vara överens om att det är viktigare att kunna komma åt en dator, än att se att den existerar.
Browsing baseras på att en speciell dator i nätverket utses till "Browse Master". Denna samlar in information om vilka datorer som finns, och bygger en s.k. browselista. När klienter önskar se denna lista kontaktar de denna Browse Master. I ett litet nätverk med t.ex. ett femtal datorer behöver man oftast inte fundera över hur browsing ska fungera, utan den sker automatiskt. De flesta klienter kan fungera som Browse Masters, och om det inte redan finns någon sådan så tar de på sig den uppgiften automatisk. Ifall det finns flera datorer som kan göra jobbet sker det en omröstning.
I större nätverk med routers måste man planera lite mer. Eftersom broadcasts inte kan passera en router så skulle bara små "öar" av datorgrupper byggas upp. Två maskiner på olika sidor om routern skulle inte kunna se varandra i browslistan. Att kunna få sådan här s.k. "cross subnet browsing" att fungera kräver att det finns en WINS-server, och att klienterna använder sig av den. WINS möjliggör också utbyte av information om vilka datorer i nätverket som är Master Browsers. Det krävs nämligen inte bara en, utan flera Master Browsers i det här fallet. Dels en "Domain Master Browser" (DMB), och dels en "Local Master Browser" (LMB) i varje subnät. LMB samlar in listor på datorerna som ingår i dess egna subnät, och skickar dessa till DMB. På samma sätt kan LMB (och andra) hämta den fullständiga listan från DMB.
På det här sättet kommer det så småningom att byggas upp kompletta listor. På SUBnet kompliceras det hela ytterligare av att de flesta stänger av sina datorer minst en gång per dygn, och stabilitet nås sällan. SUBnets WINS-server är Domain Master Browser, och har NetBIOS-namnet ISIS.
Den som är mer intresserad av hur browsing går till kan läsa Sambas dokumentation på ftp://samba.anu.edu.au/pub/samba/docs/BROWSING.txt .
Ibland syns inte arbetsgruppen WINS. I Windows kan man oftast lösa detta problemet genom att välja Start->Kör->\\ISIS och sedan trycka på backsteg. Det går att göra en genväg till arbetsgruppen WINS. Du hittar en färdig sådan på \\ISIS\info\shortcut.lnk
Under Unix kan man använda kommandot "smbclient -L isis" för att se listan.
Arbetsgruppen WINS är automatgenererad. Det får till följd att kommentaren är ersatt med datorns IP-nummer, samt att datortypen ibland felaktigt rapporteras som NT4 Server.
OBS! Inga datorer får vara medlemmar i arbetsgruppen WINS. Alltså: Du ska EJ ställa in din dator till att vara medlem i WINS-gruppen. Den rekommenderade gruppen är fortfarande SUBNET.
WINS-gruppen har en övre begränsning på 1579 datorer
(av okänd anledning).
En vanlig anledning till att man inte kan se några datorer i Browselistan är att man ej loggat in, t.ex. att man tryckt Cancel vid inloggningsrutan. En irriterande nackdel med Windows 95 är att man ej kan välja som vilken användare man vill ansluta till en resurs. Detta gör det helt omöjligt att ansluta till två resurser samtidigt med olika användarnamn. Windows NT har inte denna begränsning.
smbclient -L ISIS
Observera: Ibland fungerar det inte att ha med // i början av servernamnet,
åtminstone inte mot Windows NT maskiner (verkar det som). För
att Samba ska fungera väl på SUBnet bör man ha följande
inställningar i /etc/smb.conf (normalt sett):
wins support = no | Samba ska ej vara WINS-server själv |
wins server = ns.student.liu.se | Samba ska vara WINS-klient mot ns.student.liu.se (=130.236.230.9) |
domain master = no | Samba ska ej vara DMB |
local master = yes/no | Om du brukar ha din dator igång ständigt kan du välja yes. |
preferred master = no | Medför att en "election" kommer att utlysas när din Samba startar |
os level = 33 | Om du anser dig ha ett stabilt system och ämnar vara LMB kan du ange ett värde större än 32. Detta medför att du kommer att vinna alla omröstningar över Windows. |
remote announce = ns.student.liu.se | Om din LMB inte hittar och rapportera dig korrekt till DMB kan du själv rapportera din existens. |
I Samba-paketet finns också programmet nmblookup, som kan användas för att göra NetBIOS-namnuppslagningar. Tyvärr är dokumentationen lite bristfällig. Exempel på användning: Du vill fråga WINS-servern efter BIGSERVERs IP-address:
nmblookup -B ns.student.liu.se BIGSERVER#20
Den magiska #20 anger typ-ID för resursen. Exempel på flera
sådana är:
0x00 | base computernames and workgroups, also in "*" queries |
0x01 | master browser, in magic __MSBROWSE__ cookie |
0x03 | messaging/alerter service; name of logged-in user |
0x20 | resource-sharing "server service" name |
0x1B | domain master-browser name |
0x1C | domain controller name |
0x1D | local master-browser name |
0x1E | domain/workgroup master browser election announcement [?] |
Om man vill söka IP-nummer för en dator som ej har WINS inställt kan man göra broadcast på samtliga subnät. Det görs lämpligtvis med följande script:
#!/bin/sh
# Findsmb
for netnum in 232 233 234 235 236 237 238 239 247 249 251; do
nmblookup -B 130.236.$netnum.255 $1 \
| grep '<' &
done
Exempel: För att hitta alla datorer som är LMB i arbetsgruppen SUBNET gör man:
findsmb subnet#1d