Hvorfor Samba avviser VPN-klienter som når serveren
En VPN-klient kan nå Samba-serveren og likevel bli avvist av hosts allow. Kontroller kilden smbd ser, og politikken på delingsnivå, før du redigerer.
En VPN-klient pinger filserveren, løser opp navnet og kan likevel ikke åpne en deling. Sambas vertspolitikk er ett av fire lag som kan avvise den forbindelsen, og det er laget folk redigerer sist. Tillatelseslisten vurderes mot kildeadressen som smbd faktisk mottar, og det er kanskje ikke adressen klienten tror den har. Får du kilden riktig, blir et vagt tilgangsproblem til en konfigurasjonsendring på én linje.
Fire lag som feiler med samme melding
En avvisning kan komme fra ruten, vertens brannmur, Sambas vertspolitikk eller SMB-identiteten. Hvert lag gir klienten en melding som sier omtrent det samme, derfor koster gjetting en ettermiddag. Å ordne kontrollene fra nettverket og innover fjerner det meste av gjettingen.
Begynn med transporten. Hvis port 445 aldri når serveren, betyr ingen Samba-innstilling noe, og en opptak på serverens grensesnitt avgjør det på sekunder. Deretter kommer vertens brannmur på selve serveren, som kan forkaste en tillatt kilde før smbd i det hele tatt ser den. Først når de to er passert, blir tillatelseslisten en kandidat. Autentisering kommer sist, fordi en mislykket innlogging og en vertsavvisning ser ulike ut i serverloggen, selv når klienten rapporterer begge som nektet tilgang. Rekkefølgen er viktigere enn verktøyene, fordi hvert lag har en kommando som svarer på det.
Finn kildeadressen smbd faktisk ser
Med rutet tilgang ser serveren vanligvis klientens adresse fra VPN-poolen. Med kildeoversetting på gatewayen ser den i stedet gatewayens LAN-adresse, og hver klient bak den gatewayen blir umulig å skille.
Den forskjellen avgjør om en oppføring i tillatelseslisten er politikk eller et hull. Å tillate en oversatt gatewayadresse slipper inn alle bak den, noe en regel per klient sjelden ville uttrykke. Les kilden på serveren og ikke ut fra klientens egen oppfatning av adressen sin. Et opptak på serverens grensesnitt er den billigste måten å se den, og samme opptak beviser om pakken i det hele tatt kom frem. Begrens opptaket med et pakkeantall og legg til et vertsfilter når du vet hvilken klient du følger. Sambas sesjonstabell er den andre halvdelen av svaret: i smbstatus -b er klientkolonnen i hver sesjonsrad den parten smbd registrerte, og det er den raskeste bekreftelsen på adressen som faktisk nådde tjenesten.
sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'
Les tillatelseslisten slik Samba leser den
Innstillingen hosts allow tar en liste med adresser, nettverk eller navn, og den kan stå globalt eller inne i en deling. To oppføringer som ser like ut for deg, er kanskje ikke like for parseren, så den effektive konfigurasjonen er det som må undersøkes. Det betyr den sammenslåtte visningen og ikke filen du tilfeldigvis redigerte.
Et illustrerende par prefikser ser ut som linjen nedenfor, og det er et eksempel og ikke en erstatning for oppføringene som allerede finnes. Behold de administrative klientene og applikasjonsklientene som kobler til lovlig i dag, og les enhver blokkeringsliste i samme gjennomgang. Om en vert godtas avhenger av politikken som helhet, så test den nøyaktige klienten i stedet for å resonnere om forrang. Vertstillatelse sier heller ingenting om delingstillatelser eller filsystemmoduser, som er separate porter. Suksess fra testverktøyene betyr at vertspolitikken godtar den kilden, og ikke noe mer.
hosts allow = 192.168.50.0/24 10.90.0.0/24
testparm -s
testparm -s /etc/samba/smb.conf client.example 10.90.0.14
Endre filen som overlever en omstart
På en vanlig Linux-vert er konfigurasjonsstien fast, og tjenesten leser den på nytt ved omstart. På en ruter eller en enhet genereres den kjørende smb.conf ofte ved oppstart, og en manuell endring forsvinner ved neste omstart. Bruk enhetens støttede tilpasningsmekanisme, som vanligvis er en egen konfigurasjonsfil.
Fristelsen på dette punktet er å flashe alternativ fastvare fordi en tråd rapporterte at det virket. Det er en stor endring for et lite politikkproblem, og det flytter enheten ut av sin støttede tilstand. Identifiser først den støttede kontrollen, siden de fleste enheter viser tillatelseslisten gjennom sitt eget grensesnitt. Hvis de virkelig ikke gjør det, er den begrensningen et argument for annen maskinvare og ikke for et ikke-støttet bygg.
Noter hvilken fil du endret og hva som genererer den på nytt, slik at neste person ikke gjentar diagnosen.
Test én tillatt og én utelukket klient
Test begge utfallene, ikke bare det du ønsket. En tillatt klient som kobler til beviser at endringen virker; en utelukket klient som fortsatt avvises beviser at regelen ikke bare åpnet alt.
smbclient -L //fileserver -U alice
sudo testparm -s /etc/samba/smb.conf alice-laptop 10.90.0.14
sudo tail -n 40 /var/log/samba/log.smbd
Når forbindelsen aldri når smbd, ligger svaret i rutingen eller i serverens brannmur. Hvis verten er tillatt og innloggingen feiler, er identiteten problemet, og å utvide tillatelseslisten igjen hjelper ikke. Hold diagnostisk utdata privat, fordi en detaljert Samba-logg kan avsløre delingsstier og kontonavn. Endre ett lag per forsøk, ellers forteller neste resultat deg ingenting.