clientaddr je jedna z těch možností připojení, které se do příkazového řádku kopírují dlouho poté, co důvod zmizel. Říká serveru NFSv4.0, kam má zavolat klienta zpět. Nevybírá server, nepřipoutává každý požadavek ke zdrojové adrese ani nežene provoz do tunelu. Na notebooku s několika adresami je k rozhodnutí, zda se vůbec uplatní, potřeba tří otázek.

O tom, zda na možnosti záleží, rozhodují tři podmínky

První je sjednaná vedlejší verze, protože 4.1 a 4.2 zpracovávají zpětná volání odlišně. Druhá je, zda server dosáhne na adresu, kterou byste oznámili; směrovaný tunel to obvykle umožní a přeložená cesta obvykle ne. Třetí je, zda je selhání, které sledujete, vůbec selháním zpětného volání.

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

Odpovídat na ně v nesprávném pořadí je způsob, jakým lidé přidají adresu zpětného volání k připojení 4.2 a dojdou k závěru, že je možnost rozbitá.

Nejprve si přečtěte vedlejší verzi

nfsstat -m

U existujícího připojení to vypíše informace o připojení a příznaky, včetně efektivní verze jako vers=4.0, vers=4.1 nebo vers=4.2. Poznámka, která říká jen “NFSv4”, vynechává jediný detail, který rozhoduje o tom, zda je tato možnost podstatná. Čtěte číslo, ne slovo.

Pokud řetězec verze pochází z výchozího nastavení serveru a ne z vašeho příkazového řádku, zeptejte se, která vedlejší verze byla sjednána. Server může odmítnout vyšší vedlejší verzi a vrátit se níž, a právě tento návrat je případ, kdy zpětné volání najednou záleží. Řádek připojení, který jste napsali, nemusí popisovat připojení, které máte.

Pro 4.0 oznamte adresu, na kterou server dosáhne

Server NFSv4.0 může potřebovat samostatné spojení zpět ke klientovi, například když odvolává delegaci. Při více rozhraních nebo neobvyklé směrovací tabulce může automatické zjištění adresy zpětného volání vybrat takovou, kterou server nemůže použít.

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

Adresa před dvojtečkou je server a zůstává cílem. Adresa zpětného volání patří klientovi a musí být dosažitelná ze strany serveru v tunelu. Adresa zpětné smyčky obrací server zpět na sebe. Soukromá adresa klienta bez zpětné trasy je stejně nepoužitelná, i když na klientovi vypadá správně.

Berte to jako ilustraci, ne jako důvod snižovat funkční připojení. Nahraďte adresy a cestu exportu a ponechte ověřování a další možnosti, které server vyžaduje. Vynechat je, aby sedl jeden příklad, je jiná změna s jiným výsledkem, a na serveru, který vynucuje bezpečnostní typ, selže dřív, než se zkusí jakékoli zpětné volání.

4.1 a 4.2 tuto možnost nepoužívají

Linux NFSv4.1 a 4.2 přenášejí zpětná volání po spojeních, která navázal klient, a 4.1 tento prostředek nazývá backchannel. Nezávisí na tom, zda server otevře nové spojení k oznámené adrese, takže clientaddr neopraví cestu zpětného volání u 4.1 ani 4.2.

To neznamená, že 4.1 a 4.2 nemají problémy se zpětnými voláními. Znamená to, že diagnostika je jiná: prohlédněte navázanou relaci a stav jejího backchannelu, místo abyste hledali příchozí port zpětného volání, který nikdy neměl existovat. Chybějící příchozí pravidlo je očekávaný stav, ne závada k opravě.

Oddělte selhání připojení od selhání zpětného volání

Nejprve zjistěte, zda se klient dostane ke službě NFS a zda server přijme export a žádost o ověření. Časový limit před touto výměnou o adrese zpětného volání nic neříká. Změna jedné věci, zatímco připojení stále selhává, vyšetřování nepřiblíží a původní chybu schová za novou možností připojení.

Teprve když důkazy ukážou neúspěšné zpětné volání 4.0, záleží na oznámené adrese, spolu se zpětnou cestou serveru, naslouchajícím procesem na straně klienta a jakýmkoli filtrováním mezi nimi. Změna čísla v možnosti připojení tyto cesty nevytvoří; může jen ukázat na cestu, která už existuje. Zapište si, kterou ze čtyř jste ověřili, protože příští zpráva přijde bez kterékoli z nich.

Kořen NFS při raném startu je samostatné prostředí s vlastními předpoklady: initramfs potřebuje nástroje a síť dřív, než může dojít k připojení. Připojení, které funguje po přihlášení, o tomto sledu nic nedokazuje, a selhání při startu málokdy zmíní initramfs nebo síť.

Související články