Router jako klient SMB albo przekazywacz pakietów: co pasuje
Przekazywanie ruchu SMB i jego montowanie to dwie różne role. Sprawdź dane logowania, obsługę jądra i postępowanie z awariami, zanim router stanie się klientem.
Przekazywanie ruchu SMB to nie to samo zadanie co jego kończenie, a router, który robi jedno, może nie radzić sobie z drugim. Przekazywanie oznacza, że router przenosi pakiety, których zawartości nigdy nie analizuje. Montowanie oznacza, że router staje się klientem plików, z oprogramowaniem, którego może nie dostarczać, danymi logowania, które musi chronić, i trybami awarii, które teraz należą do niego. Wybór między nimi to pytanie o to, gdzie pliki są potrzebne, a nie o to, co można namówić platformę routingu do zainstalowania.
Przekazywanie i kończenie to różne zadania
W roli przekazywania router ma jedną odpowiedzialność: dostarczać pakiety między klientem a serwerem, stosując politykę wymaganą przez ścieżkę. Nie uwierzytelnia się na udziale, nie cachuje danych plików i nie interesuje go, czy serwer mówi SMB2, czy SMB3, ponieważ nigdy nie czyta tak głęboko w strumieniu. Jeśli udział stanie się nieosiągalny, użytkownik widzi błąd, a router dalej routuje.
W roli klienta router włącza się do rozmowy protokołu. Negocjuje dialekt, uwierzytelnia się, rozwiązuje nazwy, utrzymuje punkt montowania i przedstawia lokalny widok systemu plików wszystkiemu, co działa ponad nim. To prawdziwa usługa z cyklem życia, i czyni bramę zależnością przepływu pracy plików. Dziedziczy też wszystkie tryby awarii tej zależności, w tym oczekiwania przy starcie i nieaktualne dane logowania.
Porównanie nie dotyczy tylko możliwości. Platforma, która potrafi zamontować udział, nie jest automatycznie platformą, która powinna to robić, a platforma, która nie potrafi zamontować żadnego, może nadal być właściwym miejscem do routowania ruchu.
Czego naprawdę wymaga montowanie CIFS w jądrze
Na urządzeniu z Linuksem klient CIFS w jądrze i klient w przestrzeni użytkownika to osobne możliwości, a małe obrazy często nie zawierają żadnej z nich. Obsługa jądra musi być obecna w uruchomionym obrazie, pomocnik montowania musi istnieć, a dialekt SMB wynegocjowany z serwerem musi być taki, jaki akceptują obie strony. Opisuje to przewodnik po kliencie CIFS Linuksa, przedstawiający układ jądra i jego opcje montowania, i to jest właściwe źródło, zanim założysz, że kompilacja dostawcy go zawiera.
Sprawdź możliwość, zanim zaczniesz wokół niej projektować, i sprawdź wersję, a nie obecność nazwy polecenia. Nazwa modułu na liście pakietów to nie to samo co działający klient.
lsmod | grep -w cifs
modinfo cifs | head -5
mount.cifs --version
smbclient -L //fs02.corp.internal -U svc-router -m SMB3Moduł jądra, który się ładuje, i narzędzie w przestrzeni użytkownika, które zgłasza wersję, wciąż nie gwarantują, że montowanie przetrwa odnowienie kluczy VPN, więc traktuj próbę jako warunek początkowy, a nie dowód. Jeśli obraz dostarcza tylko obsługę SMB1, to powód, by się zatrzymać, a nie powód, by włączyć ją na serwerze.
Dane logowania i tożsamość źródła różnią się od tych z laptopa
Przekazane żądanie niesie tożsamość laptopa przez tunel, natomiast żądanie powstałe na routerze niesie jego własny adres źródłowy, ścieżkę resolvera i filtrowanie wyjścia. Mogą trafić do innej reguły zapory, innego widoku DNS i innej listy dozwolonych po stronie serwera. Kopia działająca ze stacji roboczej niczego więc nie dowodzi o montowaniu samego routera. Testuj montowanie z własnej powłoki routera, a nie ze stacji roboczej za nim.
Daj routerowi wąsko uprawnioną tożsamość usługi, jeśli rola jest w ogóle zatwierdzona. Nigdy nie umieszczaj hasła bezpośrednio w wierszu polecenia montowania, ponieważ zostaje w historii powłoki i pojawia się w tabeli procesów, dopóki montowanie trwa.
Przechowuj dane logowania przez chroniony mechanizm platformy i czytaj je z pliku o restrykcyjnych uprawnieniach. Ten plik powinien być nieczytelny dla każdego konta poza tym, które wykonuje montowanie.
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,roKto odpowiada za awarię, gdy udział znika
Brakujący zdalny system plików zachowuje się inaczej niż brakująca trasa. Montowanie może blokować procesy, które go dotykają, może zawieść przy starcie, zanim tunel istnieje, a zapis przeznaczony dla serwera może trafić w złe miejsce, jeśli pod punktem montowania leży lokalny katalog. To awarie pamięci masowej, które teraz należą do zespołu sieciowego, czy tego chciał, czy nie. Nikt nie zgodził się na taką własność, ale przychodzi ona z montowaniem.
Projektuj kolejność startu i opcje montowania wokół tej rzeczywistości. Montowanie tylko do odczytu z krótkim limitem czasu i udokumentowanym krokiem odzyskiwania łatwiej obronić niż montowanie zapisywalne, od którego zależy wszystko inne. Potwierdź, że tunel wstaje, zanim cokolwiek spróbuje montować, inaczej pierwszy start po zaniku zasilania zawiesi się.
Do poważnego przetwarzania plików albo do czegokolwiek, co reeksportuje dane dalej, osobny host zwykle daje wyraźniejszą granicę własności. Router dalej routuje, a przepływ pracy plików dostaje maszynę, którą można zrestartować bez zabierania ze sobą sieci.
Sprawdź decyzję wobec rzeczywistego zadania
Zapisz, które zadanie potrzebuje plików i gdzie to zadanie działa. Jeśli odpowiedzią jest stacja robocza, routuj udział i zatrzymaj się tam. Jeśli odpowiedzią jest usługa na urządzeniu, potwierdź możliwości klienta, obsługiwany dialekt i ścieżkę danych logowania przed pierwszym montowaniem, a potem zdecyduj, czy urządzenie naprawdę jest właściwym hostem.
Sprawdź zamontowany widok i wolne miejsce z samego routera, bo tam obciążenie je zobaczy. Powtórz sprawdzenie po ponownym połączeniu, nie tylko po czystym starcie.
findmnt -t cifs -o TARGET,SOURCE,OPTIONS
df -h /mnt/reports
ls -l /mnt/reports | headMontowanie, które listuje pliki, ale zgłasza pełny albo tylko do odczytu system plików, już powiedziało, z jaką awarią spotkasz się o 2 w nocy. Potwierdź też ścieżkę odzyskiwania: odmontuj czysto, opuść tunel, podnieś go ponownie i zamontuj jeszcze raz bez restartu urządzenia. Jeśli ta sekwencja wymaga za każdym razem zgłoszenia do wsparcia, router jest złym miejscem na rolę klienta.