VPN-এ NFS clientaddr: মাইনর সংস্করণ দেখে সিদ্ধান্ত নিন, অভ্যাসে নয়
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 এই সুবিধার নাম দেয় backchannel। তারা সার্ভারের একটি ঘোষিত ঠিকানায় নতুন সংযোগ খোলার উপর নির্ভর করে না, তাই clientaddr 4.1 বা 4.2-এর কলব্যাক পথ মেরামত করে না।
এর মানে এই নয় যে 4.1 এবং 4.2-তে কলব্যাক সমস্যা নেই। এর মানে হলো নির্ণয় ভিন্ন: প্রতিষ্ঠিত সেশন ও তার backchannel অবস্থা দেখুন, এমন একটি অন্তর্গামী কলব্যাক পোর্ট খোঁজার বদলে যা কখনো থাকার কথা ছিল না। অনুপস্থিত অন্তর্গামী নিয়মই প্রত্যাশিত অবস্থা, সংশোধনযোগ্য ত্রুটি নয়।
মাউন্ট ব্যর্থতা থেকে কলব্যাক ব্যর্থতা আলাদা করুন
প্রথমে নিশ্চিত করুন ক্লায়েন্ট NFS সেবায় পৌঁছায় কিনা এবং সার্ভার এক্সপোর্ট ও প্রমাণীকরণ অনুরোধ গ্রহণ করে কিনা। সেই বিনিময়ের আগে টাইমআউট কলব্যাক ঠিকানা সম্পর্কে কিছু বলে না। মাউন্ট এখনো ব্যর্থ থাকা অবস্থায় একটি বদলালে তদন্ত এগোয় না, এবং মূল ত্রুটিটি নতুন মাউন্ট অপশনের আড়ালে ঢাকা পড়ে।
শুধু যখন প্রমাণ কোনো ব্যর্থ 4.0 কলব্যাক দেখায়, তখনই ঘোষিত ঠিকানাটি গুরুত্বপূর্ণ, সার্ভারের ফেরার পথ, ক্লায়েন্ট প্রান্তের লিসেনার এবং তাদের মধ্যে যেকোনো ফিল্টারিংসহ। মাউন্ট অপশনের সংখ্যা বদলে সেই পথগুলো তৈরি করা যায় না; এটি কেবল আগেই বিদ্যমান কোনো পথের দিকে ইশারা করতে পারে। এই চারটির মধ্যে কোনটি আপনি যাচাই করেছেন তা লিখে রাখুন, কারণ পরের প্রতিবেদন সেগুলোর কোনোটিই ছাড়াই আসবে।
প্রারম্ভিক বুটের NFS রুট একটি আলাদা পরিবেশ যার নিজস্ব পূর্বশর্ত আছে: মাউন্ট হওয়ার আগে initramfs-এর টুল ও নেটওয়ার্ক দরকার। লগইনের পরে কাজ করা মাউন্ট সেই ক্রম সম্পর্কে কিছুই প্রমাণ করে না, আর বুটের সময়ের ব্যর্থতা খুব কমই initramfs বা নেটওয়ার্কের কথা বলে।