একটি VPN ক্লায়েন্ট ফাইল সার্ভারে পিং করে, তার নাম রিজলভ করে, তবুও একটি শেয়ার খুলতে পারে না। Samba-র হোস্ট নীতি চারটি স্তরের একটি যা সেই সংযোগ প্রত্যাখ্যান করতে পারে, এবং মানুষ সেটিই সবার শেষে সম্পাদনা করে। অনুমোদিত তালিকাটি smbd যে সোর্স ঠিকানাটি সত্যিই পায় তার বিপরীতে যাচাই হয়, এবং সেটি ক্লায়েন্ট যেটি নিজের বলে মনে করে সেটি নাও হতে পারে। সেই সোর্স সঠিকভাবে নির্ধারণ করলে অস্পষ্ট অনুমতি সমস্যা এক লাইনের কনফিগারেশন পরিবর্তনে পরিণত হয়।

একই বার্তায় ব্যর্থ হওয়া চারটি স্তর

প্রত্যাখ্যান রুট, হোস্ট ফায়ারওয়াল, Samba হোস্ট নীতি বা SMB পরিচয় থেকে আসতে পারে। প্রতিটি স্তর ক্লায়েন্টের কাছে প্রায় একই কথা বলা একটি বার্তা তৈরি করে, তাই অনুমান একটি বিকেল নষ্ট করে। নেটওয়ার্ক থেকে ভেতরের দিকে ক্রম সাজালে বেশিরভাগ অনুমান দূর হয়।

পরিবহন দিয়ে শুরু করুন। যদি পোর্ট 445 কখনও সার্ভারে না পৌঁছায়, কোনো Samba সেটিং কাজে আসে না, এবং সার্ভার ইন্টারফেসে একটি ক্যাপচার সেটি সেকেন্ডে নিষ্পত্তি করে। এরপর আসে সার্ভারের নিজের হোস্ট ফায়ারওয়াল, যা smbd দেখার আগেই একটি অনুমোদিত সোর্স বাদ দিতে পারে। এই দুটি পার হওয়ার পরেই অনুমোদিত তালিকা প্রার্থী হয়। প্রমাণীকরণ সবার শেষে আসে, কারণ লগইন ব্যর্থতা আর হোস্ট প্রত্যাখ্যান সার্ভার লগে আলাদা দেখায়, এমনকি ক্লায়েন্ট যখন দুটিকেই অ্যাক্সেস প্রত্যাখ্যান হিসেবে জানায় তখনও। ক্রম টুলের চেয়ে বেশি গুরুত্বপূর্ণ, কারণ প্রতিটি স্তরের একটি কমান্ড আছে যা তার উত্তর দেয়।

smbd যে সোর্স ঠিকানাটি সত্যিই দেখে তা খুঁজুন

রাউটেড অ্যাক্সেসে সার্ভার সাধারণত VPN পুল থেকে ক্লায়েন্টের ঠিকানা দেখে। গেটওয়েতে সোর্স অনুবাদ থাকলে সে বদলে গেটওয়ের LAN ঠিকানা দেখে, এবং সেই গেটওয়ের পেছনের প্রতিটি ক্লায়েন্ট আলাদা করা যায় না।

এই পার্থক্যই ঠিক করে অনুমোদিত তালিকার একটি এন্ট্রি নীতি, না ফুটো। অনূদিত গেটওয়ে ঠিকানা অনুমোদন করলে তার পেছনের সবাই ঢুকে যায়, যা প্রতি-ক্লায়েন্ট নিয়ম খুব কমই বোঝাতে চেয়েছিল। সোর্স সার্ভার থেকেই পড়ুন, ক্লায়েন্টের নিজের ঠিকানা সম্পর্কে ধারণা থেকে নয়। সার্ভার ইন্টারফেসে ক্যাপচারই এটি দেখার সবচেয়ে সস্তা উপায়, এবং সেই ক্যাপচারই প্রমাণ করে প্যাকেট আদৌ পৌঁছেছে কি না। ক্যাপচারকে প্যাকেট সংখ্যা দিয়ে সীমিত করুন এবং কোন ক্লায়েন্ট অনুসরণ করছেন জানার পর হোস্ট ফিল্টার যোগ করুন। Samba সেশন টেবিল উত্তরটির অন্য অর্ধেক: smbstatus -b-এ প্রতিটি সেশন সারির ক্লায়েন্ট কলামটি সেই পিয়ার যা smbd লিপিবদ্ধ করেছে, এবং এটি সেই ঠিকানার দ্রুততম নিশ্চিতকরণ যা সত্যিই সেবায় পৌঁছেছে।

sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'

অনুমোদিত তালিকা Samba যেভাবে পড়ে সেভাবেই পড়ুন

hosts allow সেটিং ঠিকানা, নেটওয়ার্ক বা নামের একটি তালিকা নেয়, এবং এটি গ্লোবালভাবে বা একটি শেয়ারের ভেতরে থাকতে পারে। আপনার কাছে সমতুল্য দেখানো দুটি এন্ট্রি পার্সারের কাছে সমতুল্য নাও হতে পারে, তাই কার্যকর কনফিগারেশনই যাচাই করার জিনিস। এর মানে একীভূত দৃশ্য, আপনি যে ফাইলটি ঘটনাচক্রে সম্পাদনা করেছেন সেটি নয়।

একটি দৃষ্টান্তমূলক জোড়া প্রিফিক্স নিচের লাইনের মতো দেখায়, এবং এটি উদাহরণ, আগে থেকে থাকা এন্ট্রিগুলোর প্রতিস্থাপন নয়। আজ বৈধভাবে সংযুক্ত প্রশাসনিক ও অ্যাপ্লিকেশন ক্লায়েন্টগুলো রাখুন, এবং একই ধাপে যেকোনো নিষিদ্ধ তালিকা পড়ুন। কোনো হোস্ট গ্রহণ করা হবে কিনা তা সামগ্রিক নীতির উপর নির্ভর করে, তাই অগ্রাধিকার নিয়ে ভাবনার বদলে নির্দিষ্ট ক্লায়েন্ট পরীক্ষা করুন। হোস্ট অনুমতি শেয়ার অনুমতি বা ফাইলসিস্টেম মোড সম্পর্কেও কিছু বলে না, যেগুলো আলাদা দরজা। পরীক্ষার টুলের সাফল্য মানে হোস্ট নীতি সেই সোর্সকে গ্রহণ করে, এর বেশি কিছু নয়।

hosts allow = 192.168.50.0/24 10.90.0.0/24
testparm -s
testparm -s /etc/samba/smb.conf client.example 10.90.0.14

রিবুটেও টিকে থাকে এমন ফাইলটি পরিবর্তন করুন

সাধারণ Linux হোস্টে কনফিগারেশন পথটি নির্দিষ্ট এবং পুনরায় চালু হলে সেবা সেটি আবার পড়ে। রাউটার বা অ্যাপ্লায়েন্সে চলমান smb.conf প্রায়ই বুটের সময় তৈরি হয়, এবং হাতে করা সম্পাদনা পরের রিবুটে হারিয়ে যায়। অ্যাপ্লায়েন্সের সমর্থিত কাস্টমাইজেশন ব্যবস্থা ব্যবহার করুন, যা সাধারণত তার নিজস্ব কনফিগারেশন ফাইল।

এই পর্যায়ে প্রলোভন হলো বিকল্প ফার্মওয়্যার ফ্ল্যাশ করা, কারণ একটি থ্রেড জানিয়েছে যে এটি কাজ করে। এটি ছোট নীতি সমস্যার জন্য বড় পরিবর্তন, এবং ডিভাইসটিকে তার সমর্থিত অবস্থার বাইরে নিয়ে যায়। আগে সমর্থিত নিয়ন্ত্রণটি চিহ্নিত করুন, কারণ বেশিরভাগ অ্যাপ্লায়েন্স নিজের ইন্টারফেস দিয়েই অনুমোদিত তালিকা দেখায়। তারা সত্যিই না দেখালে সেই সীমাবদ্ধতা ভিন্ন হার্ডওয়্যারের পক্ষে যুক্তি, অসমর্থিত বিল্ডের পক্ষে নয়।

কোন ফাইল পরিবর্তন করেছেন এবং কোনটি সেটি আবার তৈরি করে তা লিপিবদ্ধ করুন, যাতে পরের ব্যক্তি রোগনির্ণয় পুনরাবৃত্তি না করে।

একটি অনুমোদিত ও একটি বাদ দেওয়া ক্লায়েন্ট পরীক্ষা করুন

দুটি ফলাফলই পরীক্ষা করুন, শুধু যেটি চেয়েছিলেন সেটি নয়। সংযুক্ত হওয়া অনুমোদিত ক্লায়েন্ট প্রমাণ করে পরিবর্তনটি কাজ করে; প্রত্যাখ্যাত থাকা বাদ দেওয়া ক্লায়েন্ট প্রমাণ করে নিয়মটি সহজভাবে সবকিছু খুলে দেয়নি।

smbclient -L //fileserver -U alice
sudo testparm -s /etc/samba/smb.conf alice-laptop 10.90.0.14
sudo tail -n 40 /var/log/samba/log.smbd

সংযোগ যখন smbd-তে কখনও পৌঁছায় না, উত্তরটি রাউটিং বা সার্ভার ফায়ারওয়ালে থাকে। হোস্ট অনুমোদিত হয়ে লগইন ব্যর্থ হলে সমস্যা পরিচয়ে, এবং অনুমোদিত তালিকা আবার প্রশস্ত করলে সাহায্য হবে না। ডায়াগনস্টিক আউটপুট ব্যক্তিগত রাখুন, কারণ বিস্তারিত Samba লগ শেয়ার পথ ও অ্যাকাউন্টের নাম প্রকাশ করতে পারে। প্রতি চেষ্টায় এক স্তর পরিবর্তন করুন, নইলে পরের ফলাফল আপনাকে কিছুই বলবে না।

সম্পর্কিত নিবন্ধ