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:
- Brak dostępu do NAS-a (błąd logowania / „Login failed").
- Brak dostępu lub brak możliwości modyfikacji konkretnego folderu udostępnionego.
- Brak dostępu lub brak możliwości modyfikacji konkretnego pliku w którymś z folderów.
- 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.confjest poprawny. - Sprawdź, czy plik
smb.confjest 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 adsnie 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
pingodpowiada 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)
- Pobierz i zainstaluj Wireshark na kliencie Windows / macOS.
- Rozpocznij przechwytywanie pakietów.
- Spróbuj połączyć się z NAS-em przez SMB.
- 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 kontaadminpowstaną plikilog.adminorazlog.admin.old.%m(mała litera!) — nazwa maszyny łączącej się przez SMB. Przykład: dla hostaDesktop-123powstanąlog.Desktop-123orazlog.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.