NFS clientaddr per VPN: spręskite pagal mažąją versiją, ne pagal įprotį
clientaddr skelbia atgalinio iškvietimo adresą tik NFSv4.0. Perskaitykite suderintą mažąją versiją, patikrinkite grįžimo kelią ir atskirkite jį nuo prijungimo klaidų.
clientaddr yra viena iš tų prijungimo parinkčių, kurios nukopijuojamos į komandų eilutę praėjus daug laiko po to, kai priežastis išnyko. Ji nurodo NFSv4.0 serveriui, kur prisikviesti klientą atgal. Ji nepasirenka serverio, nesusieja kiekvienos užklausos su šaltinio adresu ir ne stumia srauto į tunelį. Nešiojamajame kompiuteryje su keliais adresais, norint nuspręsti, ar ji apskritai taikoma, reikia trijų klausimų.
Trys sąlygos nusprendžia, ar parinktis svarbi
Pirmoji yra suderinta mažoji versija, nes 4.1 ir 4.2 atgalinius iškvietimus apdoroja skirtingai. Antroji – ar serveris gali pasiekti adresą, kurį skelbtumėte; maršrutizuotas tunelis paprastai tai leidžia, o išverstas kelias paprastai ne. Trečioji – ar gedimas, kurio ieškote, apskritai yra atgalinio iškvietimo gedimas.
| Condition | If yes | If no |
|---|---|---|
| Version is 4.0 | The option can matter | Skip it; inspect the session instead |
| Server can reach the address | Advertise it | Fix reachability first |
| Failure is a callback | Diagnose callback path | Look at mount and export |
Atsakyti į juos neteisinga tvarka – tai kelias, kuriuo žmonės prideda atgalinio iškvietimo adresą prie 4.2 prijungimo ir padaro išvadą, kad parinktis sugedusi.
Pirmiausia perskaitykite mažąją versiją
nfsstat -m
Esamam prijungimui tai išspausdina prijungimo informaciją ir vėliavas, įskaitant efektyvią versiją kaip vers=4.0, vers=4.1 arba vers=4.2. Pastaba, kurioje rašoma tik “NFSv4”, praleidžia vienintelę detalę, kuri nusprendžia, ar ši parinktis svarbi. Skaitykite skaičių, ne žodį.
Jei versijos eilutė atėjo iš serverio numatytosios reikšmės, o ne iš jūsų komandų eilutės, paklauskite, kuri mažoji versija buvo suderinta. Serveris gali atsisakyti didesnės mažosios versijos ir grįžti atgal, ir būtent tas grįžimas yra atvejis, kai atgalinis iškvietimas staiga tampa svarbus. Prijungimo eilutė, kurią parašėte, gali neaprašyti to prijungimo, kurį turite.
4.0 atveju paskelbkite adresą, kurį serveris gali pasiekti
NFSv4.0 serveriui gali prireikti atskiro ryšio atgal į klientą, pavyzdžiui, kai jis atšaukia delegavimą. Esant keliems sąsajoms ar neįprastai maršrutų lentelei, automatinis atgalinio iškvietimo adreso aptikimas gali pasirinkti tokį, kurio serveris negali naudoti.
mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share
Adresas prieš dvitaškį yra serveris ir lieka paskirties vieta. Atgalinio iškvietimo adresas priklauso klientui, ir jis turi būti pasiekiamas iš serverio pusės tunelyje. Loopback adresas nukreipia serverį atgal į jį patį. Privatus kliento adresas be grįžimo maršruto yra lygiai taip pat netinkamas, nors kliente atrodo teisingai.
Naudokite tai kaip iliustraciją, o ne kaip priežastį sumažinti veikiantį prijungimą. Pakeiskite adresus ir eksporto kelią bei palikite autentifikavimą ir kitas parinktis, kurių reikalauja serveris. Jų atsisakymas, kad tilptų vienas pavyzdys, yra kitas pakeitimas su kitu rezultatu, o serveryje, kuris reikalauja saugumo tipo, tai nepavyksta prieš bandant bet kokį atgalinį iškvietimą.
4.1 ir 4.2 nenaudoja šios parinkties
Linux NFSv4.1 ir 4.2 perduoda atgalinius iškvietimus ryšiais, kuriuos nustatė klientas, ir 4.1 šią priemonę vadina backchannel. Jie nepriklauso nuo to, ar serveris atidarys naują ryšį į paskelbtą adresą, todėl clientaddr nesutaiso 4.1 ar 4.2 atgalinio iškvietimo kelio.
Tai nereiškia, kad 4.1 ir 4.2 neturi atgalinio iškvietimo problemų. Tai reiškia, kad diagnostika kitokia: apžiūrėkite nustatytą sesiją ir jos backchannel būseną, o ne ieškokite įeinančio atgalinio iškvietimo prievado, kurio niekada neturėjo būti. Trūkstama įeinanti taisyklė yra laukiama būsena, o ne taisytinas defektas.
Atskirkite prijungimo gedimą nuo atgalinio iškvietimo gedimo
Pirmiausia nustatykite, ar klientas pasiekia NFS paslaugą ir ar serveris priima eksportą bei autentifikavimo užklausą. Skirtas laikas prieš šį mainą nieko nesako apie atgalinio iškvietimo adresą. Vieno pakeitimas, kol prijungimas vis dar nepavyksta, nepriartina tyrimo ir paslepia pradinę klaidą už naujos prijungimo parinkties.
Tik kai įrodymai rodo nepavykusį 4.0 atgalinį iškvietimą, paskelbtas adresas tampa svarbus, kartu su serverio grįžimo keliu, kliento pusės klausytoju ir bet kokiu filtravimu tarp jų. Pakeisti skaičių prijungimo parinktyje negalima sukurti tų kelių; ji gali tik nurodyti į jau esamą. Užsirašykite, kurį iš tų keturių patikrinote, nes kitas pranešimas ateis be nė vieno iš jų.
Ankstyvo paleidimo NFS šaknis yra atskira aplinka su savo prielaidomis: initramfs reikia įrankių ir tinklo, kol prijungimas gali įvykti. Prijungimas, kuris veikia po prisijungimo, nieko neįrodo apie tą seką, o paleidimo gedimas retai mini initramfs ar tinklą.