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

ট্রেস পরিবহন সম্পর্কে প্রমাণ হওয়ার আগেই ডায়াগনস্টিকস সম্পর্কে প্রমাণ। জিজ্ঞাসা করার মতো প্রশ্ন হলো তিনটি কড়ির মধ্যে কোনটি ব্যর্থ হয়েছে, আর সেই উত্তর আউটপুটের আকৃতি থেকে নয়, প্যাকেট থেকে আসে।

তারা একটি অনুপস্থিত উত্তর, অনুপস্থিত হপ নয়

traceroute প্রতিটি রাউন্ডে এমন প্রোব পাঠিয়ে বাইরের দিকে এগোয় যাদের TTL এক রাউটার বেশি দূরে শেষ হয়। যে রাউটার মেয়াদোত্তীর্ণ প্রোব ফেলে দেয়, তার নিজের নামসহ একটি ICMP Time Exceeded বার্তা ফেরত দেওয়ার কথা, এবং টুলটি সেই নাম ছাপে। টুলটি আসলে অপেক্ষা করে সেই বার্তাটি একটি টাইমআউটের মধ্যে পৌঁছানোর জন্য। যদি রাউটার ভিন্ন সোর্স ঠিকানা থেকে উত্তর দেয়, ত্রুটি তৈরির হার সীমিত করে, বা কোনো কথা না বলে প্রোব ফেলে দেয়, তবে রাউন্ডটি ছাপার মতো কিছু দেয় না।

এই ফলাফলগুলোর কোনোটিই বলে না যে সামনের পথ ভাঙা। তারা হলো উত্তরহীন ডাকের প্রতিবেদন, খালি রাস্তার নয়।

প্রোব পদ্ধতি ঠিক করে আপনি কোন ফিল্টারের মুখোমুখি হবেন

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

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

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

ফেরার পথ নিজস্ব একটি রুট

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

ট্রেস সম্পূর্ণ হওয়া পর্যন্ত প্রতিটি সিলেক্টর প্রশস্ত করা ছবিটিকে সুন্দর আর নীতিকে খারাপ করে। নির্দিষ্ট ডায়াগনস্টিক ঠিকানাটি মেরামত করুন, অথবা তারাটি মেনে নিয়ে অ্যাপ্লিকেশনটি অন্য উপায়ে পরীক্ষা করুন।

একটি বাস্তব অনুরোধ দিয়ে টানেল নিশ্চিত করুন

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

traceroute -I -n -w 2 203.0.113.40
traceroute -T -p 443 -n -w 2 203.0.113.40
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 5 http://203.0.113.40:8080/health
ss -tan state established

প্রথমে দুটি traceroute রান পড়ুন: ICMP রান যদি হপ দেখায় আর TCP রান না দেখায়, তবে পার্থক্যটি পথে নয়, পদ্ধতিতে। তারপর curl ফলাফলটিকে অ্যাপ্লিকেশন-স্তরের উত্তর হিসেবে নিন, কারণ সংবেদনশীল স্ট্যাটাস কোডসহ সম্পূর্ণ বিনিময় মানে সামনের ও ফেরার পথ দুটোই বাস্তব ট্রাফিকের জন্য কাজ করে। সকেট তালিকা দেখায় সংযোগটি আদৌ প্রতিষ্ঠিত কি না, যা কোনো ট্রেস আপনাকে বলতে পারে না।

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

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