Un client VPN face ping la serverul de fișiere, îi rezolvă numele și totuși nu poate deschide o partajare. Politica de gazde a Samba este una dintre cele patru straturi care pot respinge acea conexiune, și este cea pe care oamenii o editează ultima. Lista de permisiuni este evaluată față de adresa sursă pe care smbd o primește efectiv, iar aceasta poate să nu fie adresa pe care clientul crede că o are. Stabilirea corectă a acelei surse transformă o problemă vagă de permisiuni într-o modificare de configurație de o singură linie.

Patru straturi care eșuează cu același mesaj

O respingere poate veni de la rută, de la firewall-ul gazdei, de la politica de gazde a Samba sau de la identitatea SMB. Fiecare strat produce clientului un mesaj care spune cam același lucru, de aceea ghicitul costă o după-amiază. Ordonarea verificărilor de la rețea spre interior elimină cea mai mare parte a ghicitului.

Începeți cu transportul. Dacă portul 445 nu ajunge niciodată la server, nicio setare Samba nu contează, iar o captură pe interfața serverului rezolvă lucrul în câteva secunde. Urmează firewall-ul gazdei pe serverul însuși, care poate arunca o sursă permisă înainte ca smbd să o vadă. Abia după ce acestea două trec, lista de permisiuni devine candidat. Autentificarea vine ultima, pentru că o autentificare eșuată și o respingere a gazdei arată diferit în jurnalul serverului, chiar și când clientul le raportează pe amândouă ca acces refuzat. Ordinea contează mai mult decât instrumentele, pentru că fiecare strat are o comandă care îi răspunde.

Găsiți adresa sursă pe care smbd o vede efectiv

Cu acces rutat serverul vede de obicei adresa clientului din bazinul VPN. Cu traducere de sursă pe gateway vede în schimb adresa LAN a gateway-ului, iar fiecare client din spatele acelui gateway devine imposibil de distins.

Această diferență decide dacă o intrare din lista de permisiuni este politică sau gaură. Permiterea unei adrese de gateway traduse acceptă toți cei din spatele ei, ceea ce o regulă per client rareori voia să exprime. Citiți sursa pe server, nu din imaginea clientului despre propria adresă. O captură pe interfața serverului este cea mai ieftină cale de a o vedea, iar aceeași captură dovedește dacă pachetul a ajuns măcar. Limitați captura cu un număr de pachete și adăugați un filtru de gazdă când știți ce client urmăriți. Tabelul de sesiuni al Samba este cealaltă jumătate a răspunsului: în smbstatus -b coloana de client din fiecare rând de sesiune este partenerul pe care smbd l-a înregistrat, și este cea mai rapidă confirmare a adresei care a ajuns efectiv la serviciu.

sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'

Citiți lista de permisiuni așa cum o citește Samba

Setarea hosts allow ia o listă de adrese, rețele sau nume și poate apărea global sau în interiorul unei partajări. Două intrări care vi se par echivalente pot să nu fie echivalente pentru parser, așa că configurația efectivă este ce trebuie inspectat. Asta înseamnă vederea unificată și nu fișierul pe care l-ați editat din întâmplare.

O pereche ilustrativă de prefixe arată ca linia de mai jos și este un exemplu, nu o înlocuire a intrărilor deja existente. Păstrați clienții administrativi și de aplicații care se conectează legitim astăzi și citiți orice listă de interdicții în aceeași trecere. Dacă o gazdă este acceptată depinde de politica în ansamblu, așa că testați clientul exact în loc să raționați despre precedență. Permisiunea de gazdă nu spune nimic nici despre permisiunile de partajare sau modurile sistemului de fișiere, care sunt porți separate. Succesul instrumentelor de test înseamnă că politica de gazde acceptă acea sursă, și nimic mai mult.

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

Modificați fișierul care supraviețuiește unei reporniri

Pe un host Linux obișnuit calea de configurare este fixă, iar serviciul o recitește la repornire. Pe un router sau un aparat, smb.conf-ul care rulează este adesea generat la pornire, iar o editare manuală dispare la următoarea repornire. Folosiți mecanismul de personalizare acceptat al aparatului, care este de obicei un fișier de configurare propriu.

Tentația în acest punct este să scrieți un firmware alternativ pentru că un fir a raportat că funcționează. Este o schimbare mare pentru o problemă mică de politică și scoate dispozitivul din starea lui acceptată. Identificați mai întâi controlul acceptat, fiindcă majoritatea aparatelor expun lista de permisiuni prin propria interfață. Dacă într-adevăr nu o fac, acea limitare este un argument pentru alt hardware și nu pentru o compilare neacceptată.

Notați ce fișier ați modificat și ce îl regenerează, ca următoarea persoană să nu repete diagnosticul.

Testați un client permis și unul exclus

Testați ambele rezultate, nu doar pe cel dorit. Un client permis care se conectează dovedește că modificarea funcționează; un client exclus care este încă respins dovedește că regula nu a deschis pur și simplu totul.

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

Când conexiunea nu ajunge niciodată la smbd, răspunsul este în rutare sau în firewall-ul serverului. Dacă gazda este permisă și autentificarea eșuează, problema este identitatea și lărgirea listei de permisiuni nu va ajuta. Păstrați ieșirea de diagnostic privată, pentru că un jurnal Samba detaliat poate expune căi de partajare și nume de conturi. Schimbați un singur strat pe încercare, altfel următorul rezultat nu vă va spune nimic.

Articole similare