SMB শেয়ার শুধু VPN-এ ব্যর্থ হয়: সাইনিং নাকি সাবনেট সংঘর্ষ?
LAN-এ কাজ করা শেয়ার শুধু টানেল দিয়েই ব্যর্থ হতে পারে। সাইনিং প্রত্যাখ্যান, ওভারল্যাপিং সাবনেট এবং পুরোনো SMB সেশন আলাদা করুন।
অফিসে কাজ করে কিন্তু বাড়িতে টাইম আউট হয় এমন একটি ম্যাপ করা ড্রাইভ নিজে থেকে প্রায় কোনো কাজের তথ্য দেয় না। টানেল স্পষ্টতই প্যাকেট বহন করছে, নইলে সার্ভারে কিছুই পৌঁছাত না। যা ব্যর্থ হয়েছে তা তিনটি স্তরের একটি: নামটি ভুল ঠিকানায় রিজলভ হয়েছে, ক্লায়েন্ট সেশন সাইন করতে অস্বীকার করেছে, বা পুরোনো সেশন তাকে বহনকারী সংযোগের চেয়ে বেশি বেঁচে গেছে। প্রতিটির মেরামত আলাদা, এবং তিনটির মধ্যে দুটি ক্লায়েন্টের দিকে।
তিনটি ত্রুটি একই ভুল বহন করে
ড্রাইভ অক্ষর বলে না কোন স্তরটি ভেঙেছে, এবং ত্রুটির পাঠ সাধারণত তিনটির জন্যই যথেষ্ট সাধারণ। দুটি দ্রুত প্রশ্নে সেগুলো আলাদা করুন: সার্ভার কি তার IP ঠিকানায় উত্তর দেয়, এবং 445 পোর্ট কি সংযোগ গ্রহণ করে?
এই উত্তরগুলো অনুমানের বদলে একটি সিদ্ধান্তের সারণি তৈরি করে। IP কাজ করে আর নাম করে না, এটি নাম রিজলভের দিকে ইঙ্গিত করে। দুটোই কাজ করে আর লগইন প্রত্যাখ্যাত হয়, এটি সাইনিংয়ের দিকে ইঙ্গিত করে। দুটোই কাজ করে আর টানেল বিভ্রাটের পর ফাইল পড়া আটকে যায়, এটি পুরোনো সেশনের দিকে ইঙ্গিত করে।
| Symptom | Layer to inspect |
|---|---|
| IP works, hostname times out | DNS or subnet overlap |
| TCP 445 opens, logon refused | SMB signing policy |
| Hangs after reconnect | Session state and timers |
একই ক্রমে সেগুলো শেষ করুন, কারণ ভুল হোস্টে রিজলভ হওয়া নাম পরের প্রতিটি পরীক্ষাকে অর্থহীন করে দেয়।
শেয়ার স্পর্শ করার আগে নাম রিজলভ করুন
যদি সার্ভার তার ঠিকানায় উত্তর দেয় আর শেয়ারের নাম টাইম আউট হয়, তাহলে টানেল তার কাজ করছে আর ক্লায়েন্ট ভুল জায়গায় খুঁজছে। দূরবর্তী অ্যাক্সেসে এর বেশিরভাগের ব্যাখ্যা দুটি কারণ।
প্রথমটি ঠিকানার ওভারল্যাপ। যখন অফিস 192.168.70.0/24 ব্যবহার করে আর বাড়ির রাউটার একই পরিসর বিতরণ করে, তখন 192.168.70.20-এ রিজলভ হওয়া হোস্টনাম টানেলের পেছনের সার্ভারের বদলে স্থানীয় ডিভাইসের দিকে ইঙ্গিত করতে পারে। Windows তখন অনুরোধটি স্থানীয়ভাবে পাঠাতে পারে, রুট প্রত্যাখ্যান করতে পারে, বা এমন প্রিন্টারে রিজলভ করতে পারে যার ঘটনাক্রমে ওই ঠিকানা আছে। মেরামত হলো এক পক্ষকে পুনঃনম্বর দেওয়া, অন্য রুট যোগ করা নয়।
দ্বিতীয়টি DNS পরিসর। অভ্যন্তরীণ DNS সার্ভারহীন, বা টানেল দিয়ে অপ্রাপ্য সার্ভারযুক্ত VPN অ্যাডাপ্টার ছোট নামগুলোকে পাবলিক রিজলভারের কাছে যেতে দেয়। অ্যাডাপ্টারের DNS এন্ট্রিগুলো পড়ুন এবং শেয়ার স্পর্শ করার আগে অভ্যন্তরীণ নাম সরাসরি জিজ্ঞাসা করুন:
> ipconfig /all | findstr /i "DNS Servers"
> nslookup files.corp.internal
Server: 10.90.0.2
Address: 10.90.0.2
Name: files.corp.internal
Address: 10.90.0.15
যদি ওই কোয়েরি প্রত্যাশিত ঠিকানা ফেরত দেয়, নাম রিজলভ নিষ্পত্তি হয়েছে আর সমস্যা স্ট্যাকের উপরে।
দুই প্রান্তে সাইনিংয়ের প্রয়োজনীয়তা পড়ুন
প্রতিটি লগইন প্রত্যাখ্যান করে এমন পৌঁছানোযোগ্য সার্ভার নেটওয়ার্ক ত্রুটির নয়, নীতিমালার অমিলের চিহ্ন। Windows ক্লায়েন্টে SMB সাইনিং বাধ্যতামূলক করতে পারে, আর সাইন না করা সার্ভার বা NAS সেশন সম্পূর্ণ করতে পারে না, টানেল যতই সুস্থ থাকুক।
নীতিমালা সম্পাদকে খোঁজাখুঁজি না করেই ক্লায়েন্ট সেটিং পড়তে পারেন:
> Get-SmbClientConfiguration | Select-Object RequireSecuritySignature
RequireSecuritySignature
-------------------------
True
> Get-SmbConnection
সার্ভার পাশের সংশ্লিষ্ট মান সার্ভারের SMB কনফিগারেশনে থাকে, এবং দুটিকে মিলতে হবে। একটি রিপোর্ট করা ঘটনায় ক্লায়েন্টে প্রয়োজনীয়তা স্থানীয় নীতিমালায় সক্রিয় ছিল, অথচ সার্ভার আদৌ সাইন করছিল না; এটি নিষ্ক্রিয় করে gpupdate /force চালালে শেয়ার সঙ্গে সঙ্গে পুনরুদ্ধার হয়। এটি কারণ নিশ্চিত করার ডায়াগনস্টিক ধাপ, স্থায়ী সমাধান নয়।
যেখানে সার্ভার সমর্থন করে সেখানে দুই প্রান্তে সাইনিং চালু করাকে প্রাধান্য দিন। শেয়ার কাজ করার জন্য নিরাপত্তা সেটিং বদলালে তা আগের মান ও কারণসহ নথিভুক্ত করা উচিত, যাতে পরের অডিটে কাউকে তা আবার আবিষ্কার করতে না হয়।
টাইমার টিউন করার আগে পুরোনো সেশন পরিষ্কার করুন
যে শেয়ার কেবল VPN পড়ে গিয়ে আবার যুক্ত হওয়ার পর আটকে যায়, তা সাধারণত এমন সেশন ধরে রাখে যা সার্ভার ইতিমধ্যে ফেলে দিয়েছে। সার্ভার নিষ্ক্রিয় SMB সেশনগুলো LanmanServer\Parameters-এর অধীন Autodisconnect টাইমারে বন্ধ করে, যা ডিফল্টভাবে 15 মিনিট, অথচ ক্লায়েন্টের নিজের SessTimeout আছে LanmanWorkstation\Parameters-এর অধীন। ওই মানগুলোর চেয়ে দীর্ঘ বিভ্রাট প্রতিটি প্রান্তকে সেশন সম্পর্কে ভিন্ন ধারণা রেখে যায়।
ফলাফল অর্থবহ হতে পারে এমন নির্দিষ্ট ক্রমে এটি পুনরুৎপাদন করুন: টানেল যুক্ত করুন, শেয়ার খুলুন, দুই মিনিটের জন্য টানেল কাটুন, পুনরুদ্ধার করুন, তারপর একটি ফাইল পড়ার চেষ্টা করুন। মাউন্ট নিজে থেকে সেরে উঠলে টাইমারগুলো ছেড়ে দিন। আবার মাউন্ট না করা পর্যন্ত আটকে থাকলে, টানেল দাঁড়ানোর পর শেয়ার আবার যুক্ত করুন, এটি অস্তিত্বে আসার আগে মাউন্ট করার বদলে, এবং মাউন্ট সহায়ক আবার চেষ্টা করে কি না দেখুন।
টাইমআউট বাড়ানো অস্থির লিঙ্কের জন্য যুক্তিসঙ্গত শেষ ধাপ, কিন্তু এটি উপসর্গের চিকিৎসা করে। সার্ভার যে সেশন ভুলে গেছে তার জন্য বেশি সময় অপেক্ষা করা ক্লায়েন্ট তবুও অপেক্ষা করে।
মাউন্টের মাধ্যমে একটি ফাইল পড়ে এবং তারপর আরেকবার টানেল কেটে পুনরুদ্ধার করে শেষ করুন। ওই গ্রহণযোগ্যতা পরীক্ষা তিনটি স্তর একসঙ্গে ঢেকে দেয়, এবং ব্যবহারকারী বাস্তবে যা করেন তার সঙ্গে মেলে এমন একমাত্র পরীক্ষা এটি।