Status
Pierwszy post tej dyskusji to wpis Wiki. Może być on edytowany przez każdego z odpowiednimi uprawnieniami.

QNAP NAS — diagnostyka i rozwiązywanie problemów z SMB / Samba (przewodnik krok po kroku)​


Co obejmuje ten przewodnik

Poradnik zbiera w jedną całość kolejność postępowania przy problemach z udostępnianiem plików przez SMB/CIFS (usługa Samba) na serwerach QNAP NAS — od najprostszych testów sieci i usług, przez czyszczenie blokad i połączeń, aż po diagnostykę domeny Active Directory i przechwytywanie pakietów.

Większość poleceń wykonujesz jako administrator (root) przez SSH (PuTTY / terminal). Zaloguj się na konto admin:

Bash:
ssh admin@adres-IP-NAS

W tej dokumentacji polecenia są podane bez znaku zachęty (prompt/cmdline) [~] # — żeby dało się je wygodnie kopiować.

Uwaga ogólna: symbol ? w ścieżkach typu /share/CACHEDEV?_DATA/ oznacza numer woluminu (najczęściej 1, czyli /share/CACHEDEV1_DATA/). Wartości w nawiasach klamrowych {...} podmieniasz na własne (nazwa folderu, użytkownik, IP itd.).



Krok 1. Określ, na czym dokładnie polega problem​


Zanim zaczniesz diagnozę, zakwalifikuj zgłoszenie do jednej z czterech kategorii — to decyduje o dalszej ścieżce:

  1. Brak dostępu do NAS-a (błąd logowania / „Login failed").
  2. Brak dostępu lub brak możliwości modyfikacji konkretnego folderu udostępnionego.
  3. Brak dostępu lub brak możliwości modyfikacji konkretnego pliku w którymś z folderów.
  4. Brak możliwości przeniesienia / skopiowania pliku do konkretnego folderu.

Kategorie 1–2 to zwykle problem z usługą, siecią lub logowaniem (Kroki 2–8). Kategorie 3–4 to najczęściej problem z uprawnieniami/ACL (Krok 9).



Krok 2. Podstawowa kontrola konfiguracji i sieci​


Zacznij od rzeczy najprostszych — bardzo często problem leży tutaj:

  • Sprawdź, czy plik uLinux.conf jest poprawny.
  • Sprawdź, czy plik smb.conf jest poprawny.
  • Czy File Station widzi foldery udostępnione?
  • Czy ping z komputera klienta do adresu IP NAS-a działa?
  • Czy ping z komputera klienta do nazwy hosta NAS-a działa?

Test z komputera klienta (Windows / macOS / Linux):

Bash:
ping 192.168.0.102
ping nazwa-hosta-nas

Jeśli ping po IP działa, a po nazwie nie — problem leży w rozwiązywaniu nazw (DNS / NetBIOS / WINS), a nie w samej usłudze SMB.



Krok 3. Sprawdź, czy demon Samby (smbd) żyje​


Zweryfikuj na NAS-ie, czy usługi SMB i NetBIOS są uruchomione:

Bash:
smb2status

Jeśli polecenie smb2status nie działa, użyj:

Bash:
/etc/init.d/smb2_protocol.sh status

Sprawdź procesy demonów:

Bash:
ps | grep smbd     # usługa SMB
ps | grep nmbd     # usługa nazewnictwa NetBIOS

Sprawdź, czy Samba nasłuchuje na swoich portach (137/138 NetBIOS, 139 SMB-over-NetBIOS, 445 SMB direct):

Bash:
lsof -i :137
lsof -i :139
lsof -i :445

Jeśli demon smbd nie działa lub w logu pojawia się komunikat o gencache.tdb — przejdź do sekcji „Przypadek: uszkodzony gencache.tdb" na końcu przewodnika.



Krok 4. Wyczyść istniejące połączenia po stronie klienta Windows​


Windows buforuje sesje SMB — „zawieszone" lub uwierzytelnione na starych poświadczeniach połączenie potrafi blokować dostęp. Z wiersza poleceń na komputerze klienta:

Bash:
net use * /d /y

Uwaga: to polecenie usuwa również wszystkie inne zmapowane dyski sieciowe. Po jego wykonaniu spróbuj połączyć się z Sambą ponownie.



Krok 5. Ręczne połączenie z wiersza poleceń Windows​


Spróbuj nawiązać połączenie ręcznie, podając jawnie użytkownika:

Bash:
net use \\NAS-IP /user:username

Przykład:

Bash:
net use \\192.168.0.102 /user:admin

System poprosi o hasło. Taki test izoluje problem uwierzytelniania od problemów z mapowaniem dysku czy GUI Eksploratora.



Krok 6. Wyczyść blokady i pliki tymczasowe Samby (na NAS-ie)​


Uszkodzone blokady (lock files) lub pliki tymczasowe Samby blokują dostęp. Zatrzymaj usługę, usuń je i uruchom ponownie:

Bash:
rm -r /share/$sys_vol$/.locks
rm -r /share/$sys_vol$/.samba
/etc/init.d/smb.sh restart

Po restarcie ponów test połączenia z Sambą.

Możesz też przetestować dostęp lokalnie na samym NAS-ie klientem smbclient, z pominięciem sieci i Windows — to sprawdza, czy problem jest po stronie NAS-a, czy klienta:

Bash:
/usr/local/samba/bin/smbclient //localhost/Public -U 'username'%"password"

Po zalogowaniu wylistuj zawartość:

Kod:
smb: \> ls

(Folder Public podmień na nazwę swojego folderu udostępnionego.)



Krok 7. Przywróć / zresetuj konfigurację Samby​


Jeśli podejrzewasz uszkodzony lub błędnie zmodyfikowany smb.conf, masz dwie drogi: przywrócenie z kopii zapasowej albo reset do ustawień domyślnych.

7a. Przywrócenie z automatycznej kopii konfiguracji

Firmware 5.0 lub starszy:


Bash:
cd /share/$sys_vol$/.@backup_config

Wypakuj i przywróć pliki do katalogu /etc/config/.

Firmware 5.1 lub nowszy — kopie są zaszyfrowane. Rozpakuj plik I_YYYYMMDD_hhmm.bak (data w nazwie), używając hasła generowanego przez get_encstr:

Bash:
unzip -P $(/sbin/get_encstr qnapqnap12345678 e) -j -d Restore -o I_YYYYMMDD_hhmm.bak

Przykład:

Bash:
unzip -P $(/sbin/get_encstr qnapqnap12345678 e) -j -d restore -o 0_20230107_1556.bak

W katalogu Restore znajdziesz plik I_YYYYMMDD_hhmm.tar.gz — rozpakuj go:

Bash:
tar -xvf I_YYYYMMDD_hhmm.tar.gz

7b. Reset smb.conf do ustawień domyślnych

Zrób kopię bieżącego pliku, podmień go na domyślny i zrestartuj usługę:

Bash:
cp /etc/config/smb.conf /etc/config/smb.conf.original
cp /etc/default_config/smb.conf /etc/config/
/etc/init.d/smb.sh restart

Po resecie ponów test połączenia z Sambą.



Krok 8. Zmień wersję protokołu SMB​


Część problemów (zwłaszcza ze starszymi klientami, drukarkami, kamerami czy specyficznymi konfiguracjami Windows) wynika z niezgodności wersji protokołu. Zmieniaj wersję po kolei i po każdej zmianie ponawiaj test:

Bash:
smb2status     # sprawdź bieżącą wersję SMB
smb2disable    # wymuś SMB 1.0
smb21enable    # wymuś SMB 2.1
smb3enable     # wymuś SMB 3.0

Ważne: po każdej zmianie wersji musisz rozłączyć klienta poleceniem net use * /d /y (patrz Krok 4) i połączyć się ponownie — inaczej klient użyje zachowanej w pamięci sesji ze starą wersją protokołu.



Krok 9. Problemy z uprawnieniami i ACL​


Jeśli sam dostęp do NAS-a działa, ale problem dotyczy konkretnego folderu lub pliku (kategorie 3–4 z Kroku 1), to niemal zawsze kwestia uprawnień.


9a. Sprawdź w GUI

  • Czy włączono Zaawansowane uprawnienia do folderów (Advanced Folder Permission) lub obsługę Windows ACL?
  • Czy uprawnienia w Panelu sterowania / File Station są poprawne?

(W tym miejscu w oryginalnym SOP znajduje się zrzut ekranu okna uprawnień folderu — wstaw własny zrzut z Panelu sterowania → Uprawnienia folderu.)


9b. Sprawdź rozszerzone ACL z linii poleceń

Nawet gdy w GUI wszystko wygląda dobrze, na pliku lub folderze może istnieć rozszerzone (extended) ACL. Sprawdź to:

QTS (system plików ext4 / wolumeny QTS) — polecenie getfacl:

Bash:
getfacl /share/CACHEDEV?_DATA/
getfacl /share/CACHEDEV?_DATA/{nazwa-folderu}/
getfacl /share/CACHEDEV?_DATA/{nazwa-folderu}/{nazwa-pliku}

QuTS hero (system plików ZFS) — polecenie richacl:

Bash:
richacl -g /share/CACHEDEV?_DATA/{nazwa-folderu}/{nazwa-pliku}


9c. Test dostępu klientem smbclient

Sprawdź, czy dany użytkownik faktycznie dostaje się do folderu przez Sambę:

Bash:
/usr/local/samba/bin/smbclient //localhost/{nazwa-folderu} -U 'username'%"password"

Kod:
smb: \> ls

Wskazówka diagnostyczna: przy problemach z uprawnieniami zawsze opisz dokładnie sytuację — na którym koncie użytkownik wykonuje operację, do którego dokładnie pliku/folderu i jaki komunikat błędu otrzymuje. Uprawnienia bywają złożone (dziedziczenie, ACL Windows, mapowanie użytkowników domenowych) i bez tych danych diagnoza jest zgadywaniem.



Krok 10. Znany problem: Windows 11 24H2 i podpisywanie SMB​


Objaw: po aktualizacji do Windows 11 w wersji 24H2 klient nie może połączyć się z NAS-em i zgłasza błąd typu Check the spelling of the name („Sprawdź pisownię nazwy").

Przyczyna: Windows 11 24H2 domyślnie wymaga podpisywania SMB (SMB signing) po stronie serwera. Jeśli serwer SMB nie ma włączonego wymuszonego podpisywania, klient odmawia połączenia.

Rozwiązaniem jest włączenie/wymuszenie podpisywania SMB po stronie NAS-a (lub odpowiednia korekta zasad podpisywania na kliencie). Zweryfikuj ustawienia podpisywania w konfiguracji Samby i zaktualizuj firmware NAS-a do wersji, która domyślnie obsługuje wymagania 24H2.



Diagnostyka domeny / Active Directory​


Najpierw ustal rolę NAS-a w sieci, bo od niej zależy ścieżka diagnostyki:

  • Standalone (samodzielny) — sprawdzasz tylko lokalne usługi SMB i winbind (Kroki 2–9).
  • Członek domeny (Domain Member) — dochodzi weryfikacja połączenia z kontrolerem domeny.
  • Kontroler domeny (Domain Controller) — część poleceń net ads nie zadziała (NAS sam jest DC).

Sprawdzenie usług winbind (każda rola)​


Bash:
smb2status
/etc/init.d/smb2_protocol.sh status
wbinfo -p
ps aux | grep winbind

wbinfo -p „pinguje" demona winbind; ps aux | grep winbind potwierdza, że proces żyje.

Lista kontrolna: NAS nie może dołączyć do AD (część 1 — sieć i DNS)​


Bash:
nslookup domain.com
ping domain.com
nslookup dc.domain.com
ping dc.domain.com

Zweryfikuj przy tym:

  • Czy adres z ping odpowiada właściwemu IP kontrolera domeny?
  • Czy opóźnienie ping nie jest zbyt duże (> 10 ms bywa problematyczne)?
  • Czy czas NAS-a i DC jest zsynchronizowany? (rozjazd czasu rozwala Kerberos)
  • Czy nazwa domeny i nazwa NETBIOS są poprawne?

Lista kontrolna: NAS nie może dołączyć do AD (część 2 — konfiguracja domeny)​


  • Jaki jest system operacyjny kontrolera domeny (DC OS)?
  • Jaki jest poziom funkcjonalny domeny (domain functional level)?
  • Zmień wersję SMB (patrz Krok 8) i ponów próbę dołączenia.
  • Utwórz nowego użytkownika administratora domeny i dołącz domenę z jego użyciem.
  • Dołącz domenę, podając użytkownika w formacie DOMENA\administrator.
  • Zmień nazwę hosta NAS-a na nową i ponów dołączanie do domeny.
  • Sprawdź, czy w serwerze DNS nie ma nieaktualnych / błędnych rekordów dla NAS-a.

Zbieranie informacji — NAS jako członek domeny​


Sprawdź połączenie NAS-a z kontrolerem domeny przez winbind oraz listowanie użytkowników i grup:

Bash:
wbinfo -t                              # test relacji zaufania z domeną
wbinfo -P                              # test połączenia z kontrolerem domeny
wbinfo -u                              # lista użytkowników domeny
wbinfo -g                              # lista grup domeny
/usr/local/samba/bin/net ads info      # informacje o połączeniu z AD
/usr/local/samba/bin/net ads user -P   # lista użytkowników (uwierzytelnienie maszyną)
/usr/local/samba/bin/net ads group -P  # lista grup (uwierzytelnienie maszyną)

Zbieranie informacji — NAS jako kontroler domeny​


Na kontrolerze domeny działają testy winbind do innych kontrolerów domeny:

Bash:
wbinfo -t
wbinfo -P
wbinfo -u
wbinfo -g

Uwaga: polecenia net ads ... nie zadziałają, gdy NAS sam jest kontrolerem domeny — pomiń je w tym scenariuszu.

Zaawansowane sprawdzenie liczby wpisów sIDHistory (przydatne przy migracjach domen):

Bash:
/usr/local/samba/bin/ldbsearch --paged -P -H ldap://`getcfg -f /etc/config/smb.conf global realm` '(sAMAccountName=*)' | grep sIDHistory | wc -l

Ograniczenie: QNAP NAS nie dołącza do domeny jako RODC (Read-Only Domain Controller) i kontroler domeny QNAP nie dołączy jako RODC do domeny Windows Server 2003 R2.

Ogólny problem z AD — test przeterminowania połączenia z DC​


Sprawdź, czy połączenie z serwerem domeny nie wygasa (timeout), przy okazji z poziomem debugowania 10:

Bash:
/usr/local/samba/bin/net time set -S dc01.domain.local -d10



Przypadek: uszkodzony gencache.tdb (smbd nie startuje)​


Objaw: usługa SMB nie wstaje, a w logu pojawia się komunikat o gencache.tdb, np.:

Kod:
.tdb(/share/CACHEDEV1_DATA/.samba/lock/gencache.tdb): tdb_mutex_open_ok[/share/CACHEDEV1_DATA/.samba/lock/gencache.tdb]: Mutex size changed from 524288 to 401408

Rozwiązanie — zatrzymaj Sambę, usuń katalog .samba (zostanie odtworzony) i uruchom usługę ponownie:

Bash:
/etc/init.d/smb.sh stop
cd /share/CACHEDEV?_DATA/
rm -rf .samba
/etc/init.d/smb.sh start

(? = numer woluminu domyślnego.)

OSTRZEŻENIE: ta metoda jest przeznaczona wyłącznie dla NAS-a w trybie standalone lub członka domeny. Jeśli NAS jest kontrolerem domeny albo komunikat błędu jest inny — nie usuwaj .samba na własną rękę; skontaktuj się ze wsparciem QNAP.



Narzędzia diagnostyczne​


A. Przechwytywanie pakietów sieciowych​


Zrzut pakietów z momentu próby połączenia SMB to najmocniejsze narzędzie diagnostyczne. Masz dwie opcje.


Opcja 1 — Wireshark (na komputerze klienta)

  1. Pobierz i zainstaluj Wireshark na kliencie Windows / macOS.
  2. Rozpocznij przechwytywanie pakietów.
  3. Spróbuj połączyć się z NAS-em przez SMB.
  4. Zatrzymaj przechwytywanie.


Opcja 2 — tcpdump (na NAS-ie)

Najpierw ustal architekturę procesora NAS-a:

Bash:
uname -a

Pobierz odpowiednią binarkę tcpdump (przykład dla x86_64). Wejdź do folderu zapisywalnego, pobierz plik i nadaj prawo wykonywania:

Bash:
cd /share/Public/
wget --no-check-certificate https://www.dropbox.com/s/tod3ejpfu3nv0ou/tcpdump
chmod +x tcpdump

Binarki dla pozostałych architektur:

Uruchom przechwytywanie, filtrując ruch po adresie klienta:

Bash:
./tcpdump -p -s 0 -w {nazwa-pliku} -i {interfejs} host {IP-klienta}

Przykład (interfejs eth0, klient 192.168.1.100):

Bash:
./tcpdump -p -s 0 -w getSMB.pcap -i eth0 host 192.168.1.100

Następnie spróbuj połączyć się z NAS-em przez SMB, a po zakończeniu zatrzymaj przechwytywanie klawiszami Ctrl+C.

Plik zrzutu (po zmianie rozszerzenia na *.pcap) otworzysz w Wireshark do analizy.

B. Zbieranie szczegółowego logu SMB​


Aby zebrać pełny log debugowania Samby, podnieś poziom logowania i wskaż plik logu:

Bash:
setcfg -f /etc/config/smb.conf global "max log size" 1024
setcfg -f /etc/config/smb.conf global "log level" 10
setcfg -f /etc/config/smb.conf global "log file" "/share/Public/log.%U"
/etc/init.d/smb.sh restart

Znaczenie symboli w nazwie pliku logu:

  • %U (wielka litera!) — nazwa konta używanego do połączenia SMB. Przykład: dla konta admin powstaną pliki log.admin oraz log.admin.old.
  • %m (mała litera!) — nazwa maszyny łączącej się przez SMB. Przykład: dla hosta Desktop-123 powstaną log.Desktop-123 oraz log.Desktop-123.old.

Log zbierz po tym, jak użytkownik spróbuje się połączyć (żeby zarejestrować pełną sesję).

Po zakończeniu diagnostyki przywróć ustawienia — wysoki poziom logowania mocno obciąża system i zapełnia dysk:

Bash:
setcfg -f /etc/config/smb.conf global "max log size" 10
setcfg -f /etc/config/smb.conf global "log level" 0
setcfg -f /etc/config/smb.conf global "log file" ""
/etc/init.d/smb.sh restart



Wszystkie polecenia wykonujesz na własną odpowiedzialność — przed operacjami usuwającymi pliki (Krok 6, gencache.tdb) upewnij się co do roli NAS-a w sieci.
 
Status
Pierwszy post tej dyskusji to wpis Wiki. Może być on edytowany przez każdego z odpowiednimi uprawnieniami.