NFS clientaddr preko VPN-a: odlučite po manjoj verziji, ne po navici
clientaddr oglašava adresu povratnog poziva samo za NFSv4.0. Pročitajte dogovorenu manju verziju, provjerite povratni put i odvojite ga od grešaka pri montiranju.
clientaddr je jedna od onih opcija montiranja koje se kopiraju u naredbeni redak davno nakon što je razlog za njih nestao. Govori serveru NFSv4.0 gdje da pozove klijenta natrag. Ne bira server, ne veže svaki zahtjev za izvornu adresu i ne usmjerava promet u tunel. Na prijenosniku s nekoliko adresa, da bi se odlučilo da li se uopće primjenjuje, potrebna su tri pitanja.
Tri uslova odlučuju da li je opcija važna
Prvi je dogovorena manja verzija, jer 4.1 i 4.2 različito obrađuju povratne pozive. Drugi je može li server doći do adrese koju biste oglasili; usmjereni tunel to obično dopušta, a prevedeni put obično ne. Treći je da li je greška koju lovite uopće greška povratnog poziva.
| 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 |
Odgovaranje na njih izvan reda je način na koji ljudi dodaju adresu povratnog poziva na montiranje 4.2 i zaključe da je opcija pokvarena.
Prvo pročitajte manju verziju
nfsstat -m
Za postojeće montiranje ovo ispisuje informacije o montiranju i zastavice, uključujući efektivnu verziju kao vers=4.0, vers=4.1 ili vers=4.2. Napomena koja kaže samo “NFSv4” izostavlja jedini detalj koji odlučuje da li je ova opcija relevantna. Čitajte broj, a ne riječ.
Ako niz verzije dolazi iz zadanog podešavanja servera, a ne iz vašeg naredbenog retka, pitajte koja je manja verzija dogovorena. Server može odbiti višu manju verziju i vratiti se na nižu, a upravo je taj povratak slučaj u kojem povratni poziv odjednom postaje važan. Redak montiranja koji ste napisali možda ne opisuje montiranje koje imate.
Za 4.0 oglasite adresu do koje server može doći
Serveru NFSv4.0 može trebati zasebna veza natrag prema klijentu, na primjer kada opoziva delegaciju. Uz više sučelja ili neobičnu tablicu usmjeravanja, automatsko otkrivanje adrese povratnog poziva može odabrati onu koju server ne može koristiti.
mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share
Adresa prije dvotačke je server i ostaje odredište. Adresa povratnog poziva pripada klijentu i mora biti dostupna sa serverske strane tunela. Adresa povratne petlje usmjerava server natrag na njega samoga. Privatna klijentska adresa bez povratne rute jednako je neupotrebljiva, iako na klijentu izgleda ispravno.
Koristite ovo kao ilustraciju, a ne kao razlog da snizite radno montiranje. Zamijenite adrese i putanju izvoza i zadržite autentifikaciju i druge opcije koje server zahtijeva. Izostavljanje njih da bi se uklopio jedan primjer druga je promjena s drugim rezultatom, a na serveru koji nameće sigurnosni tip propada prije nego što se uopće pokuša povratni poziv.
4.1 i 4.2 ne koriste ovu opciju
Linux NFSv4.1 i 4.2 prenose povratne pozive preko veza koje je klijent uspostavio, a 4.1 to sredstvo naziva backchannel. Oni ne zavise od toga da server otvori novu vezu prema oglašenoj adresi, pa clientaddr ne popravlja put povratnog poziva u 4.1 ili 4.2.
To ne znači da 4.1 i 4.2 nemaju problema s povratnim pozivima. Znači da je dijagnoza drugačija: pregledajte uspostavljenu sesiju i stanje njenog backchannela, umjesto da tražite ulazni port povratnog poziva koji nikada nije trebao postojati. Pravilo ulaznog saobraćaja koje nedostaje očekivano je stanje, a ne kvar koji treba ispraviti.
Odvojite grešku montiranja od greške povratnog poziva
Prvo utvrdite da li klijent dolazi do NFS usluge i da li server prihvaća izvoz i zahtjev za autentifikaciju. Istek vremena prije te razmjene ne govori ništa o adresi povratnog poziva. Mijenjanje jednoga dok montiranje još traje ne približava istragu i skriva izvornu grešku iza nove opcije montiranja.
Tek kada dokazi pokažu neuspjeli 4.0 povratni poziv, oglašena adresa postaje važna, zajedno sa serverovim povratnim putem, slušateljem na strani klijenta i bilo kojim filtriranjem između njih. Promjena broja u opciji montiranja ne može stvoriti te puteve; ona može samo pokazati na put koji već postoji. Zapišite koja od te četiri provjerili, jer sljedeće izvješće stiže bez ijedne od njih.
NFS korijen pri ranom podizanju zasebno je okruženje sa svojim preduvjetima: initramfs treba alate i mrežu prije nego se montiranje može dogoditi. Montiranje koje radi nakon prijave ništa ne dokazuje o tom slijedu, a greška pri podizanju rijetko spominje initramfs ili mrežu.