clientaddr jest jedną z tych opcji montowania, które kopiuje się do wiersza poleceń długo po tym, jak powód ich użycia zniknął. Mówi serwerowi NFSv4.0, gdzie ma wywołać klienta z powrotem. Nie wybiera serwera, nie wiąże każdego żądania z adresem źródłowym ani nie wpycha ruchu do tunelu. Na laptopie z kilkoma adresami trzy pytania są potrzebne, by zdecydować, czy opcja w ogóle ma zastosowanie.

Trzy warunki decydują, czy opcja ma znaczenie

Pierwszy to wynegocjowana wersja minor, ponieważ 4.1 i 4.2 obsługują wywołania zwrotne inaczej. Drugi to, czy serwer może dotrzeć do adresu, który byś ogłosił; tunel trasowany zwykle na to pozwala, a ścieżka tłumaczona zwykle nie. Trzeci to, czy błąd, którego szukasz, jest w ogóle błędem wywołania zwrotnego.

ConditionIf yesIf no
Version is 4.0The option can matterSkip it; inspect the session instead
Server can reach the addressAdvertise itFix reachability first
Failure is a callbackDiagnose callback pathLook at mount and export

Odpowiadanie na nie w złej kolejności jest sposobem, w jaki ludzie dodają adres wywołania zwrotnego do montowania 4.2 i dochodzą do wniosku, że opcja jest zepsuta.

Najpierw przeczytaj wersję minor

nfsstat -m

Dla istniejącego montowania wypisuje to informacje i flagi montowania, w tym efektywną wersję jako vers=4.0, vers=4.1 lub vers=4.2. Notatka mówiąca tylko “NFSv4” pomija jedyny szczegół, który decyduje, czy ta opcja jest istotna. Czytaj liczbę, nie słowo.

Jeśli ciąg wersji pochodzi z domyślnego ustawienia serwera, a nie z twojego wiersza poleceń, zapytaj, która wersja minor została wynegocjowana. Serwer może odrzucić wyższą wersję minor i cofnąć się, a właśnie to cofnięcie jest przypadkiem, w którym wywołanie zwrotne nagle ma znaczenie. Wiersz montowania, który napisałeś, może nie opisywać montowania, które masz.

Dla 4.0 ogłoś adres, do którego serwer może dotrzeć

Serwer NFSv4.0 może potrzebować osobnego połączenia z powrotem do klienta, na przykład gdy odwołuje delegację. Przy wielu interfejsach lub nietypowej tablicy routingu automatyczne wykrywanie adresu wywołania zwrotnego może wybrać adres, którego serwer nie może użyć.

mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share

Adres przed dwukropkiem to serwer i pozostaje miejscem docelowym. Adres wywołania zwrotnego należy do klienta i musi być osiągalny od strony serwera w tunelu. Adres loopback kieruje serwer z powrotem na niego samego. Prywatny adres klienta bez trasy powrotnej jest równie bezużyteczny, choć na kliencie wygląda poprawnie.

Użyj tego jako ilustracji, a nie jako powodu do obniżenia działającego montowania. Zastąp adresy i ścieżkę eksportu oraz zachowaj uwierzytelnianie i inne opcje wymagane przez serwer. Pominięcie ich, by jeden przykład pasował, jest inną zmianą z innym wynikiem, a na serwerze wymuszającym typ bezpieczeństwa zawodzi przed podjęciem jakiejkolwiek próby wywołania zwrotnego.

4.1 i 4.2 nie używają tej opcji

Linux NFSv4.1 i 4.2 przenoszą wywołania zwrotne po połączeniach ustanowionych przez klienta, a 4.1 nazywa ten mechanizm backchannel. Nie zależą od tego, czy serwer otworzy nowe połączenie do ogłoszonego adresu, więc clientaddr nie naprawia ścieżki wywołania zwrotnego 4.1 ani 4.2.

Nie oznacza to, że 4.1 i 4.2 nie mają problemów z wywołaniami zwrotnymi. Oznacza, że diagnoza jest inna: zbadaj ustanowioną sesję i stan jej backchannelu, zamiast szukać przychodzącego portu wywołania zwrotnego, który nigdy nie powinien istnieć. Brak reguły przychodzącej to stan oczekiwany, a nie usterka do naprawienia.

Oddziel błąd montowania od błędu wywołania zwrotnego

Najpierw ustal, czy klient dociera do usługi NFS i czy serwer akceptuje eksport i żądanie uwierzytelnienia. Przekroczenie czasu przed tą wymianą nic nie mówi o adresie wywołania zwrotnego. Zmiana jednego, gdy montowanie wciąż zawodzi, nie przybliża śledztwa i ukrywa pierwotny błąd za nową opcją montowania.

Dopiero gdy dowody pokazują nieudane wywołanie zwrotne 4.0, ogłoszony adres ma znaczenie, wraz z drogą powrotną serwera, nasłuchiwaczem po stronie klienta i wszelkim filtrowaniem między nimi. Zmiana liczby w opcji montowania nie może stworzyć tych dróg; może tylko wskazać na już istniejącą. Zapisz, którą z tych czterech sprawdziłeś, bo następny raport przyjdzie bez żadnej z nich.

Korzeń NFS przy wczesnym rozruchu to osobne środowisko z własnymi wymaganiami: initramfs potrzebuje narzędzi i sieci, zanim montowanie może się odbyć. Montowanie, które działa po zalogowaniu, niczego nie dowodzi co do tej sekwencji, a błąd przy rozruchu rzadko wspomina initramfs lub sieć.

Powiązane artykuły