SMB-verkeer doorsturen is niet dezelfde taak als het beëindigen, en een router die het ene doet, beheerst misschien niet het andere. Doorsturen betekent dat de router pakketten verplaatst waarvan hij de inhoud nooit analyseert. Koppelen betekent dat de router een bestandsclient wordt, met software die hij misschien niet meelevert, inloggegevens die hij moet beschermen en faalmodi die nu van hem zijn. De keuze tussen beide gaat over waar de bestanden nodig zijn, niet over wat je de routerplatform kunt laten installeren.

Doorsturen en beëindigen zijn verschillende taken

In de doorstuurrol heeft de router één verantwoordelijkheid: pakketten bezorgen tussen de client en de server terwijl hij het beleid toepast dat het pad vereist. Hij authenticeert niet bij de share, cachet geen bestandsgegevens en het kan hem niet schelen of de server SMB2 of SMB3 spreekt, omdat hij nooit zo diep in de stream leest. Wordt de share onbereikbaar, dan ziet de gebruiker een fout en blijft de router routeren.

In de clientrol doet de router mee aan het protocolgesprek. Hij onderhandelt over een dialect, authenticeert, lost namen op, houdt een koppelpunt vast en presenteert een lokale bestandssysteemweergave aan alles wat erboven draait. Dat is een echte dienst met een levenscyclus, en hij maakt de gateway tot een afhankelijkheid van de bestandsworkflow. Hij erft ook elke faalmodus van die afhankelijkheid, inclusief wachttijden bij het opstarten en verouderde inloggegevens.

De vergelijking gaat niet alleen over vermogen. Een platform dat een share kan koppelen is niet automatisch een platform dat dat zou moeten doen, en een platform dat er geen kan koppelen kan nog steeds de juiste plek zijn om het verkeer te routeren.

Wat een CIFS-koppeling in de kernel echt nodig heeft

Op een Linux-gebaseerd apparaat zijn de CIFS-client in de kernel en een client in userspace aparte vermogens, en kleine images bevatten vaak geen van beide. Kernelondersteuning moet in het draaiende image aanwezig zijn, de koppelhulp moet bestaan, en het met de server onderhandelde SMB-dialect moet er een zijn die beide kanten accepteren. Dat beschrijft de handleiding voor de Linux CIFS-client, die de kernelopbouw en de koppelopties uitlegt, en dat is de juiste referentie voordat je aanneemt dat een leveranciersbuild die bevat.

Controleer het vermogen voordat je eromheen ontwerpt, en controleer de versie in plaats van de aanwezigheid van een commandonaam. Een modulenaam in een pakketlijst is niet hetzelfde als een werkende client.

lsmod | grep -w cifs
modinfo cifs | head -5
mount.cifs --version
smbclient -L //fs02.corp.internal -U svc-router -m SMB3

Een kernelmodule die laadt en een userspace-hulpmiddel dat een versie meldt, garanderen nog niet dat een koppeling een VPN-sleutelvernieuwing overleeft, dus behandel de test als een beginvoorwaarde, niet als bewijs. Als het image alleen SMB1-ondersteuning levert, is dat een reden om te stoppen, niet een reden om het op de server in te schakelen.

Inloggegevens en bronidentiteit verschillen van die van een laptop

Een doorgestuurde aanvraag draagt de identiteit van de laptop door de tunnel, terwijl een aanvraag die op de router ontstaat het eigen bronadres, het resolverpad en de uitgaande filtering draagt. Die kunnen in een andere firewallregel, een andere DNS-weergave en een andere lijst met toegestane adressen aan de serverkant belanden. Een kopie die vanaf een werkstation werkt, bewijst dus niets over de eigen koppeling van de router. Test de koppeling vanuit de eigen shell van de router, niet vanaf een werkstation erachter.

Geef de router een nauw geautoriseerde dienstidentiteit als de rol überhaupt wordt goedgekeurd. Zet nooit een wachtwoord rechtstreeks in de koppelopdrachtregel, want het blijft in de shellgeschiedenis staan en verschijnt in de procestabel terwijl de koppeling draait.

Bewaar de inloggegevens via het beschermde mechanisme van het platform en lees ze uit een bestand met beperkte rechten. Dat bestand hoort onleesbaar te zijn voor elk account behalve datgene dat de koppeling uitvoert.

install -m 600 /dev/null /etc/cifs-reports.creds
printf 'username=svc-router\npassword=REPLACE_ME\ndomain=CORP\n' > /etc/cifs-reports.creds
mount -t cifs //fs02.corp.internal/reports /mnt/reports -o credentials=/etc/cifs-reports.creds,vers=3.1.1,ro

Wie is eigenaar van de fout als de share verdwijnt

Een ontbrekend extern bestandssysteem gedraagt zich anders dan een ontbrekende route. Een koppeling kan processen blokkeren die hem aanraken, hij kan bij het opstarten falen voordat de tunnel bestaat, en een schrijfactie die voor de server bedoeld was kan op de verkeerde plek belanden als er een lokale map onder het koppelpunt staat. Het zijn opslagfouten die nu van het netwerkteam zijn, of het team ze wilde of niet. Niemand stemde in met dat eigenaarschap, maar het komt met de koppeling mee.

Ontwerp de opstartvolgorde en de koppelopties rond die realiteit. Een alleen-lezen koppeling met een korte time-out en een gedocumenteerde herstelstap is makkelijker te verdedigen dan een schrijfbare koppeling waar alles van afhangt. Bevestig dat de tunnel omhoog komt voordat iets probeert te koppelen, anders blijft de eerste opstart na een stroomstoring hangen.

Voor omvangrijke bestandsverwerking, of voor iets dat de gegevens verder hergebruikt, geeft een aparte host meestal een duidelijker eigendomsgrens. De router blijft routeren, en de bestandsworkflow krijgt een machine die opnieuw kan worden opgestart zonder het netwerk mee te nemen.

Controleer de beslissing tegen de werkelijke taak

Schrijf op welke taak de bestanden nodig heeft en waar die taak draait. Als het antwoord een werkstation is, routeer de share en stop daar. Als het antwoord een dienst op het apparaat is, bevestig dan het clientvermogen, het ondersteunde dialect en het pad van de inloggegevens vóór de eerste koppeling, en beslis daarna of het apparaat echt de juiste host is.

Controleer de gekoppelde weergave en de vrije ruimte vanaf de router zelf, want daar ziet de werkbelasting ze. Herhaal de controle na een herverbinding, niet alleen na een schone opstart.

findmnt -t cifs -o TARGET,SOURCE,OPTIONS
df -h /mnt/reports
ls -l /mnt/reports | head

Een koppeling die bestanden oplijst maar een vol of alleen-lezen bestandssysteem meldt, heeft je al verteld welke fout je om 2 uur 's nachts tegenkomt. Bevestig ook het herstelpad: ontkoppel netjes, breng de tunnel omlaag, breng hem weer omhoog en koppel opnieuw zonder het apparaat opnieuw op te starten. Als die volgorde elke keer een supportcase vereist, is de router de verkeerde plek voor de clientrol.

Gerelateerde artikelen