clientaddr — адзін з тых параметраў мантавання, якія капіруюць у камандны радок праз шмат часу пасля таго, як прычына знікла. Ён паведамляе серверу NFSv4.0, куды выклікаць кліента назад. Ён не выбірае сервер, не прывязвае кожны запыт да адрасу крыніцы і не накіроўвае трафік у тунель. На ноўтбуку з некалькімі адрасамі, каб вырашыць, ці ўвогуле гэта дастасоўна, трэба тры пытанні.

Тры ўмовы вырашаюць, ці мае параметр значэнне

Першая — узгодненая мінорная версія, бо 4.1 і 4.2 па-рознаму апрацоўваюць зваротныя выклікі. Другая — ці можа сервер дасягнуць адрасу, які вы аб’явіце, што маршрутызаваны тунель звычайна дазваляе, а трансляваны шлях звычайна не. Трэцяя — ці з’яўляецца памылка, якую вы шукаеце, памылкай зваротнага выкліку ўвогуле.

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

Адказы не ў тым парадку — гэта шлях, якім людзі дадаюць адрас зваротнага выкліку да мантавання 4.2 і прыходзяць да высновы, што параметр зламаны.

Спачатку прачытайце мінорную версію

nfsstat -m

Для існуючага мантавання гэта друкуе інфармацыю пра мантаванне і сцягі, у тым ліку эфектыўную версію як vers=4.0, vers=4.1 або vers=4.2. Нататка, якая кажа толькі “NFSv4”, апускае адзіную дэталь, што вырашае, ці мае гэты параметр дачыненне. Чытайце лік, а не слова.

Калі радок версіі паходзіць з прадвызначанага значэння сервера, а не з вашага каманднага радка, спытайце, якая мінорная версія была ўзгоднена. Сервер можа адхіліць вышэйшую мінорную версію і вярнуцца назад, і менавіта гэтае вяртанне — выпадак, калі зваротны выклік раптам робіцца важным. Радок мантавання, які вы напісалі, можа не апісваць мантаванне, якое вы маеце.

Для 4.0 аб’явіце адрас, дасяжны для сервера

Серверу NFSv4.0 можа спатрэбіцца асобнае злучэнне назад да кліента, напрыклад, калі ён адклікае дэлегаванне. Пры некалькіх інтэрфейсах або незвычайнай табліцы маршрутызацыі аўтаматычнае выяўленне адрасу зваротнага выкліку можа выбраць той, які сервер не здольны выкарыстаць.

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

Адрас перад двукроп’ем — гэта сервер, і ён застаецца прызначэннем. Адрас зваротнага выкліку належыць кліенту, і ён мусіць быць дасяжны з боку сервера ў тунелі. Адрас петлявога інтэрфейсу накіроўвае сервер назад на самога сябе. Прыватны адрас кліента без зваротнага маршруту гэтак жа непрыдатны, хоць на кліенце выглядае правільным.

Ужывайце гэта як ілюстрацыю, а не як прычыну паніжаць працоўнае мантаванне. Замяніце адрасы і шлях экспарту, захавайце аўтэнтыфікацыю і іншыя параметры, якіх патрабуе сервер. Адкідванне іх, каб адзін прыклад падыходзіў, — іншая змена з іншым вынікам, а на серверы, які патрабуе пэўны тып бяспекі, яна зрываецца яшчэ да спробы любога зваротнага выкліку.

4.1 і 4.2 не выкарыстоўваюць гэты параметр

Linux NFSv4.1 і 4.2 перадаюць зваротныя выклікі праз злучэнні, усталяваныя кліентам, і 4.1 называе гэты сродак backchannel. Яны не залежаць ад таго, ці адкрые сервер новае злучэнне да аб’яўленага адрасу, таму clientaddr не выпраўляе шлях зваротнага выкліку ў 4.1 ці 4.2.

Гэта не азначае, што ў 4.1 і 4.2 няма праблем са зваротнымі выклікамі. Гэта азначае, што дыягностыка іншая: аглядзіце ўсталяваную сесію і стан яе backchannel, а не шукайце ўваходны порт зваротнага выкліку, які ніколі не павінен быў існаваць. Адсутнае ўваходнае правіла — чаканы стан, а не памылка, якую трэба выправіць.

Аддзяліце памылку мантавання ад памылкі зваротнага выкліку

Спачатку ўстанавіце, ці дасягае кліент службы NFS і ці прымае сервер экспарт і запыт аўтэнтыфікацыі. Тайм-аўт перад гэтым абменам нічога не кажа пра адрас зваротнага выкліку. Змена аднаго, пакуль мантаванне ўсё яшчэ зрываецца, не набліжае расследаванне і хавае зыходную памылку за новым параметрам мантавання.

Толькі калі доказы паказваюць няўдалы зваротны выклік 4.0, аб’яўлены адрас мае значэнне — разам са зваротным шляхам сервера, слухачом на баку кліента і любым фільтраваннем паміж імі. Змена ліку ў параметры мантавання не можа стварыць гэтыя шляхі; яна можа толькі паказаць на той, што ўжо існуе. Запішыце, які з гэтых чатырох вы праверылі, бо наступная справаздача прыйдзе без любога з іх.

Корань NFS на ранняй загрузцы — асобнае асяроддзе са сваімі перадумовамі: initramfs патрэбныя інструменты і сетка, перш чым мантаванне зможа адбыцца. Мантаванне, якое працуе пасля ўваходу, нічога не даказвае пра гэтую паслядоўнасць, а памылка пры загрузцы рэдка згадвае ні initramfs, ні сетку.

Падобныя артыкулы