Samba en het legen van de NetBIOS cache

Door de recente aanschaf van een NAS sloeg ik aan het experimenteren met de opties van dit veelzijdige apparaat. Dit had op een gegeven moment tot gevolg dat er een foutief ip-adres in de NetBIOS cache van mijn WINS serverapplicatie (onderdeel van Samba op mijn op mijn Linux server/router) terecht kwam. Hierdoor kon ik mijn NAS niet meer benaderen met behulp van de zogenaamde ‘share-naam’ omdat deze naam was gekoppeld aan een foutief ip-adres. Het verwijderen van het foutieve ip-adres uit de cache bleek nog niet zo eenvoudig.

Volgens de samba documentatie zijn er twee manieren om de cache te legen. De eerste manier is het herstarten van Samba (nmbd om precies te zijn). Dit was het eerste wat ik probeerde, maar had geen enkel effect. De tweede manier is het uitschakelen van alle apparatuur in het netwerk en weer opstarten nadat alle systemen zijn uitgeschakeld. Dit vond ik (met het oog op mijn hosting activiteiten) geen acceptabele optie.

Toen bedacht ik me dat er misschien wel een lokale NetBIOS cache op mijn Windows systemen (XP en 7) stond. Na een paar minuten zoeken kwam ik erachter dat je met ‘nbtstat -c‘ in de command prompt de lokale cache kunt bekijken. Daar zag ik inderdaad dat de share-naam van mijn NAS werd gekoppeld aan het verkeerde ip-adres. Met ‘nbtstat -R‘  en ‘nbtstat -RR‘ leegde ik de lokale NetBIOS cache, maar een simpele refresh in het netwerk overzicht van de Windows verkenner vulde de lokale NetBIOS cache weer met de foutieve waarden. Conclusie: het probleem lag bij de server, niet bij de clients.

Interessant weetje is dat mijn DHCP server alle clients instrueert zich te gedragen als een node type H. Het node type bepaalt zo gezegd de wijze waarop de clients een ip-adres bij een share-naam zoeken. Via ‘ipconfig /all‘ in de command prompt kun je zien volgens welk node type jouw systeem zich gedraagt in het netwerk. Node type H (van hybrid) houdt in dat clients altijd eerst het ip-adres van een share-naam opvragen bij de WINS server en pas daarna (indien nodig) zelf op onderzoek gaan (broadcast). Hiermee onderbouw ik deels mijn bovenstaande conclusie; de client vaart ‘blind’ op de WINS server en gaat niet zelf op onderzoek uit omdat de server netjes antwoord geeft. Het antwoord bevat echter een verkeerd ip-adres.

En toen was ik terug bij mijn oorspronkelijke probleem: hoe leeg ik de cache van Samba nmbd? Na zo’n half uur googelen en documentatie lezen kwam de oplossing in zicht. Ik ontdekte dat het bestand wins.tdb in de runtime directory van Samba (in Debian /var/run/samba) de mapping tussen ip-adressen en share-namen bevat (ik ben overigens geneigd dit geen cache te noemen, maar dat terzijde). Daarnaast ontdekte ik dat je .tdb files (Trivial Database) kunt bewerken met de tool tdbtool. Het simpelweg legen van de wins.tdb file (eerst openen en daarna ‘erase’) werkte in mijn geval prima.

Kijk echter uit met het legen van (database) files; in de documentatie staat namelijk het volgende: “Some tdb files can be disposed of before restarting Samba, but others are used to store information that is vital to Samba configuration and behavior”.

0 antwoorden

Plaats een Reactie

Meepraten?
Draag gerust bij!

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.