NFS clientaddr عبر VPN: احسم الأمر حسب الإصدار الفرعي لا حسب العادة
يعلن clientaddr عنوان رد اتصال خاصًا بـ NFSv4.0 فقط. اقرأ الإصدار الفرعي المتفاوض عليه، وتحقق من مسار العودة، وافصله عن أعطال التركيب.
clientaddr من خيارات التركيب التي تُنسخ إلى سطر أوامر بعد أن يزول سببها بوقت طويل. يخبر خادم NFSv4.0 بمكان الاتصال بالعميل للرد. لا يختار الخادم، ولا يربط كل طلب بعنوان مصدر، ولا يدفع حركة المرور إلى نفق. على حاسوب محمول بعدة عناوين، يتطلب تحديد ما إذا كان ينطبق أصلًا ثلاثة أسئلة.
ثلاثة شروط تحدد ما إذا كان الخيار مهمًا
الأول هو الإصدار الفرعي المتفاوض عليه، لأن 4.1 و4.2 يتعاملان مع ردود الاتصال بطريقة مختلفة. الثاني هو ما إذا كان الخادم يستطيع الوصول إلى العنوان الذي ستعلنه، وهو ما يسمح به النفق الموجَّه عادة ولا يسمح به المسار المترجم عادة. الثالث هو ما إذا كان العطل الذي تلاحقه عطل رد اتصال أصلًا.
| 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 |
الإجابة عنها بترتيب مختلف هي الطريقة التي ينتهي بها الناس إلى إضافة عنوان رد اتصال إلى تركيب 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 هذه الآلية القناة الخلفية. لا تعتمدان على فتح الخادم اتصالًا جديدًا إلى عنوان معلن، لذا لا يصلح clientaddr مسار رد اتصال في 4.1 أو 4.2.
لا يعني ذلك أن 4.1 و4.2 بلا مشاكل في ردود الاتصال. يعني أن التشخيص مختلف: افحص الجلسة القائمة وحالة قناتها الخلفية بدل البحث عن منفذ رد اتصال وارد لم يُقصد به أن يوجد قط. غياب قاعدة واردة هو الحالة المتوقعة، لا عطل يجب إصلاحه.
افصل عطل التركيب عن عطل رد الاتصال
أثبت أولًا ما إذا كان العميل يصل إلى خدمة NFS وما إذا كان الخادم يقبل التصدير وطلب المصادقة. انتهاء المهلة قبل هذا التبادل لا يقول شيئًا عن عنوان رد اتصال. تغيير أحدهما بينما لا يزال التركيب يفشل لا يقرّب التحقيق، ويخفي الخطأ الأصلي خلف خيار تركيب جديد.
لا يصبح العنوان المعلن مهمًا إلا عندما تُظهر الأدلة فشل رد اتصال في 4.0، إلى جانب مسار عودة الخادم والمستمع على جهة العميل وأي تصفية بينهما. تغيير الرقم في خيار التركيب لا يستطيع إنشاء تلك المسارات؛ ولا يمكنه إلا الإشارة إلى مسار موجود بالفعل. اكتب أي تلك المسارات الأربعة تحققت منه، لأن التقرير التالي سيصل دون أي منها.
جذر NFS المبكر عند الإقلاع بيئة منفصلة بشروطها المسبقة: تحتاج initramfs إلى الأدوات والشبكة قبل أن يحدث التركيب. التركيب الذي يعمل بعد تسجيل الدخول لا يثبت شيئًا عن ذلك التسلسل، والعطل عند الإقلاع نادرًا ما يذكر initramfs أو الشبكة.