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

নাম দিয়ে শুরু করুন, টানেল দিয়ে নয়

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

resolvectl query host.internal
getent hosts host.internal

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

কার্নেলকে জিজ্ঞাসা করুন সে কোন পথ বেছে নিয়েছে

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

ip route get 10.20.30.40
ip -brief address show

dev, via এবং src ফিল্ডগুলো এই ক্রমে পড়ুন, কারণ প্রতিটি ভিন্ন একটি সন্দেহ দূর করে। এই স্তরটি ক্লায়েন্টের ইনস্টল করা অবস্থারও মালিক, কারণ ফায়ারওয়াল নিয়ম ও রুট অস্বাভাবিক প্রস্থানের পরেও থেকে যেতে পারে। এজন্যই «টানেল ছাড়া ইন্টারনেট নেই» আর «ক্লায়েন্ট না চললে ইন্টারনেট নেই» দুটি নয়, একই ত্রুটি-পরিবার।

প্যাকেটের আকার পরীক্ষা করুন

বড় স্থানান্তর আটকে যাওয়ার সময় ছোট উত্তর ফিরে আসা প্রথমে পাথ MTU-র দিকে ইশারা করে। টানেলের ভেতর থেকে পাঠানো, do-not-fragment বিট সেট করা একটি প্রোব এই স্তরটিকে বাকিগুলো থেকে আলাদা করে। প্রোব ব্যর্থ হওয়া পর্যন্ত পেলোড বাড়ান, তাহলে যে সংখ্যাটি গুরুত্বপূর্ণ তা পেয়ে যাবেন।

ping -M do -s 1400 10.20.30.40

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

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

দূর প্রান্ত পরীক্ষা করুন

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

curl -sv http://10.20.30.41:8080/health
nc -vz -w 3 10.20.30.41 3389
ss -lnt 'sport = :8080'

টানেল দিয়ে পৌঁছানো কোনো কিছুই শুধু 127.0.0.1-এ শোনা একটি পরিষেবা হতে পারে না, কারণ লিসেনার প্যাকেটটি কখনো দেখে না। যখন দূর হোস্টের ফায়ারওয়াল অফিস সাবনেটকে অনুমতি দেয় কিন্তু টানেল পুল প্রত্যাখ্যান করে, ফলাফলটি ক্লায়েন্টের ত্রুটির মতো দেখায়, অথচ তা নয়। Remote Desktop বা ফাইল শেয়ারিং ভেঙে পড়া অথচ ওয়েব ট্রাফিক টিকে থাকা সাধারণত এখানেই পড়ে, ব্যবহারকারী যেভাবেই বলুক।

অভিযোগটিকে একটি স্তরে মেলান

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

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

প্রথম ব্যর্থতা যেই স্তর তৈরি করেছে সেটি কমান্ডের আউটপুটসহ লিপিবদ্ধ করুন। যে টিকিট বলে সোর্স ঠিকানা ভুল ছিল এবং সঙ্গে রুট লাইন সংযুক্ত, সেটি নিয়ে কাজ করা উচিত; আর যে টিকিট VPN ভাঙা বলে জানায়, সেটি নয়।

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