NFS clientaddr over VPN: avgjør etter mindre versjon, ikke av vane
clientaddr annonserer en tilbakekallsadresse bare for NFSv4.0. Les den forhandlede mindre versjonen, kontroller returveien, og skill den fra monteringsfeil.
clientaddr er en av de monteringsvalgene som kopieres inn i en kommandolinje lenge etter at grunnen til det er borte. Det forteller en NFSv4.0-server hvor den skal kalle klienten tilbake. Det velger ikke serveren, binder ikke hver forespørsel til en kildeadresse og sender ikke trafikk inn i en tunnel. På en bærbar datamaskin med flere adresser krever det tre spørsmål å avgjøre om den i det hele tatt gjelder.
Tre betingelser avgjør om valget betyr noe
Den første er den forhandlede mindre versjonen, fordi 4.1 og 4.2 håndterer tilbakekall forskjellig. Den andre er om serveren kan nå adressen du ville annonsere, noe en rutet tunnel vanligvis tillater og en oversatt vei vanligvis ikke. Den tredje er om feilen du jager i det hele tatt er en tilbakekallsfeil.
| 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 |
Å svare på dem i feil rekkefølge er måten folk ender med å legge til en tilbakekallsadresse på en 4.2-montering og konkludere med at valget er ødelagt.
Les den mindre versjonen først
nfsstat -m
For en eksisterende montering skriver dette ut monteringsinformasjonen og flaggene, inkludert den effektive versjonen som vers=4.0, vers=4.1 eller vers=4.2. Et notat som bare sier “NFSv4”, utelater den ene detaljen som avgjør om dette valget er relevant. Les tallet, ikke ordet.
Hvis versjonsstrengen kom fra en serverstandard i stedet for kommandolinjen din, spør hvilken mindre versjon som ble forhandlet. En server kan avvise en høyere mindre versjon og falle tilbake, og nettopp den tilbakefallingen er tilfellet der et tilbakekall plutselig betyr noe. Monteringslinjen du skrev, beskriver kanskje ikke monteringen du har.
For 4.0, annonser en adresse serveren kan nå
En NFSv4.0-server kan trenge en egen forbindelse tilbake til klienten, for eksempel når den tilbakekaller en delegasjon. Med flere grensesnitt eller en uvanlig rutetabell kan den automatiske oppdagelsen av en tilbakekallsadresse velge en som serveren ikke kan bruke.
mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share
Adressen før kolon er serveren og forblir målet. Tilbakekallsadressen tilhører klienten, og den må være nåbar fra serversiden av tunnelen. En loopback-adresse peker serveren tilbake mot seg selv. En privat klientadresse uten returrute er like ubrukelig, selv om den ser riktig ut på klienten.
Bruk dette som en illustrasjon, ikke som grunn til å nedgradere en fungerende montering. Erstatt adressene og eksportstien, og behold autentiseringen og de andre valgene serveren krever. Å droppe dem for at ett eksempel skal passe, er en annen endring med et annet resultat, og på en server som håndhever en sikkerhetstype feiler det før noe tilbakekall forsøkes.
4.1 og 4.2 bruker ikke valget
Linux NFSv4.1 og 4.2 bærer tilbakekall over forbindelser klienten har opprettet, og 4.1 kaller den fasiliteten backchannel. De avhenger ikke av at serveren åpner en ny forbindelse til en annonsert adresse, så clientaddr reparerer ikke en tilbakekallsvei for 4.1 eller 4.2.
Det betyr ikke at 4.1 og 4.2 ikke har tilbakekallsproblemer. Det betyr at diagnosen er en annen: undersøk den etablerte økten og dens backchannel-tilstand i stedet for å lete etter en innkommende tilbakekallsport som aldri var ment å finnes. En manglende innkommende regel er den forventede tilstanden, ikke en feil som skal rettes.
Skill en monteringsfeil fra en tilbakekallsfeil
Fastslå først om klienten når NFS-tjenesten og om serveren godtar eksporten og autentiseringsforespørselen. En tidsavbrudd før den utvekslingen sier ingenting om en tilbakekallsadresse. Å endre én mens monteringen fortsatt feiler, bringer ikke undersøkelsen nærmere, og det skjuler den opprinnelige feilen bak et nytt monteringsvalg.
Først når bevisene viser et mislykket 4.0-tilbakekall, betyr den annonserte adressen noe, sammen med serverens returvei, lytteren på klientsiden og all filtrering imellom. Å endre tallet i monteringsvalget kan ikke skape disse veiene; det kan bare peke på en som allerede finnes. Skriv ned hvilke av de fire du verifiserte, for den neste rapporten kommer uten noen av dem.
En NFS-rot ved tidlig oppstart er et eget miljø med egne forutsetninger: initramfs trenger verktøyene og nettverket før monteringen kan skje. En montering som virker etter innlogging, beviser ingenting om den sekvensen, og feilen ved oppstart nevner sjelden initramfs eller nettverket.