কম্পিউটার টিউটোরিয়াল

লিনাক্সে Traceroute কমান্ড: নেটওয়ার্ক পথ ট্রেস করা

জানা দরকার

  • traceroute কমান্ডের সাথে অবশ্যই ডেস্টিনেশন হোস্টের নাম বা IP অ্যাড্রেস দিতে হয়।
  • প্রোব TTL ১ থেকে শুরু করে ১ করে বাড়াতে হয় যতক্ষণ না ICMP "port unreachable" মেসেজ পাওয়া যায় বা मैক্স অটেম্প্টের লিমিটে পৌঁছায়।

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

Traceroute কীভাবে কাজ করে

traceroute কমান্ড সোর্স থেকে ডেস্টিনেশনে তথ্য প্যাকেটের যাত্রার পথ ম্যাপ করে। এর একটি ব্যবহার হলো নেটওয়ার্কে কোথায় ডেটা লস হচ্ছে সেটা খুঁজে বের করা, যা কোনো নোড ডাউন থাকার সংকেত দিতে পারে।

রেকর্ডের প্রতিটি হপ সোর্স পিসি এবং টার্গেটের মাঝপথে একটি নতুন সার্ভার বা রাউটার প্রতিফলিত করে। traceroute স্ক্যানের রেজাল্ট রিভিউ করলে স্লো পয়েন্টগুলো চিহ্নিত করা যায় যা আপনার নেটওয়ার্ক ট্রাফিককে বিরূপভাবে প্রভাবিত করতে পারে।

Traceroute দিয়ে ট্রাবলশুটিং

নেটওয়ার্ক ট্রাফিক যে নির্দিষ্ট রুট ফলো করে (বা যে গেটওয়ে আপনার প্যাকেট ড্রপ করছে সেটা খুঁজে বের করা) বেশ কয়েকটি ট্রাবলশুটিং চ্যালেঞ্জ উপস্থাপন করে। Traceroute IP প্রোটোকলের time to live ফিল্ড ব্যবহার করে প্রতিটি গেটওয়ে থেকে ICMP TIME_EXCEEDED রেসপন্স অনুরোধ করে ডেস্টিনেশন হост পর্যন্ত পথে।

traceroute কমান্ড এক্সিকিউট করার সময় আপনাকে অবশ্যই ডেস্টিনেশন হোস্টের নাম বা IP অ্যাড্রেস প্যারামিটার হিসেবে দিতে হবে।

Traceroute সিনট্যাক্স এবং সুইচসমূহ

লিনাক্সে Traceroute কমান্ড: নেটওয়ার্ক পথ ট্রেস করা

Traceroute নিচের সাধারণ সিনট্যাক্স ফলো করে:

traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g gateway ] [ -i iface ] [ -m max_ttl ] [ -p port ] [ -q nqueries ] [ -s src_addr ] [ -t tos ] [ -w waittime ] [ -z pausemsecs ] host [ packetlen ]

কমান্ডের পারফরম্যান্স বা আউটপুট পরিবর্তন করার জন্য এক বা একাধিক অপশনাল সুইচ নির্দিষ্ট করা যায়।

Traceroute কমান্ড সুইচসমূহ
-fপ্রথম আউটগোইং প্রোব প্যাকেটে ব্যবহৃত প্রাথমিক time-to-live সেট করুন।
-F"Don't fragment" বিট সেট করুন।
-dসকেট লেভেল ডিবাগিং অন করুন।
-gলুজ সোর্স রুট গেটওয়ে নির্দিষ্ট করুন (সর্বোচ্চ ৮টি)।
-iআউটগোইং প্রোব প্যাকেটের সোর্স IP অ্যাড্রেস পাওয়ার জন্য নেটওয়ার্ক ইন্টারফেস নির্দিষ্ট করুন। এটি সাধারণত মাল্টি-হোমড হোস্টে ব্যবহারী। (-s ফ্ল্যাগ দেখুন অন্য পদ্ধতির জন্য।)
-IUDP ডেটাগ্রামের পরিবর্তে ICMP ECHO ব্যবহার করুন।
-mআউটগোইং প্রোব প্যাকেটে ব্যবহৃত मैক্স time-to-live (ম্যাক্স হপ সংখ্যা) সেট করুন। ডিফল্ট ৩০ হপ (TCP কানেকশনের মতোই)।
-nহপ অ্যাড্রেস সংখ্যায় প্রিন্ট করুন সিম্বলিক এবং সংখ্যায় না (প্রতিটি গেটওয়ের জন্য নেমসার্ভার অ্যাড্রেস-টু-নেম লুকআপ বাঁচায়)।
-pপ্রোবগুলোতে ব্যবহৃত বেস UDP পোর্ট নম্বর সেট করুন (ডিফল্ট ৩৩৪৩৪)। Traceroute আশা করে ডেস্টিনেশন হোস্টে UDP পোর্ট base থেকে base + nhops - 1 রেঞ্জে কিছু লিসেন করছে না (তाकি ICMP PORT_UNREACHABLE মেসেজ রিটার্ন করে রুট ট্রেসিং টার্মিনেট হয়)। যদি ডিফল্ট রেঞ্জে কোনো পোর্টে কিছু লিসেন করে থাকে, এই অপশন দিয়ে অনইউজড পোর্ট রেঞ্জ বেছে নেওয়া যায়।
-rনরমাল রাউটিং টেবিল বাইপাস করে সরাসরি আটैচড নেটওয়ার্কের হোস্টে পাঠান। হোস্ট যদি ডিরেক্টলি আটैচড নেটওয়ার্কে না থাকে, এরর রিটার্ন করবে। এই অপশন দিয়ে কোনো রুট না থাকা ইন্টারফেসের মাধ্যমে লোকাল হোস্টে পিং করা যায়।
-sনিচের IP অ্যাড্রেস (সাধারণত IP নম্বর হিসেবে, হোস্টনেম হিসেবে না) আউটগোইং প্রোব প্যাকেটে সোর্স অ্যাড্রেস হিসেবে ব্যবহার করুন। মাল্টি-হোমড হোস্টে (যার একাধিক IP আছে) এই অপশন দিয়ে সোর্স অ্যাড্রেস অন্য কিছুতে ফোর্স করা যায়। IP অ্যাড্রেস যদি এই মেশিনের ইন্টারফেস অ্যাড্রেসের একটা না হয়, এরর দেবে। (-i ফ্ল্যাগ দেখুন অন্য পদ্ধতির জন্য।)
-tপ্রোব প্যাকেটে type-of-service সেট করুন (ডিফল্ট শূন্য)। মান ০ থেকে ২৫৫ পর্যন্ত ডেসিমেল ইন্টিজার হতে হবে। এই অপশন দিয়ে দেখা যায় আলাদা টাইপ-অফ-সার্ভিসে আলাদা পথ পাওয়া যায় কিনা। (4.4bsd না চালালে একাডেমিক বিষয়। 텔নেট এবং ftp-এর মতো নরমাল নেটওয়ার্ক সার্ভিস TOS কন্ট্রোল করতে দেয় না।) সব TOS মান লিগাল বা অর্থবহ নয়—IP স্পেসিফিকেশন দেখুন। útil মানগুলো: -t 16 (low delay) এবং -t 8 (high throughput)।
-vVerbose আউটপুট। TIME_EXCEEDED এবং UNREACHABLE ছাড়া রিসিভড ICMP প্যাকেটগুলো লিস্ট হবে।
-wপ্রোবের রেসপন্সের জন্য কত সেকেন্ড অপেক্ষা করবে সেট করুন (ডিফল্ট ৫ সেকেন্ড)।
-xIP checksums টগল করুন। সাধারণত এটি traceroute-কে IP checksums ক্যালকুলেট করতে বাধা দেয়। কিছু কেসে অপারেটিং সিস্টেম আউটগোইং প্যাকেটের অংশ ওভাররাইট করে কিন্তু checksum রিক্যালকুলেট করে না; তাই ডিফল্ট হচ্ছে checksum ক্যালকুলেট না করা এবং -x ব্যবহার করলে সেগুলো ক্যালকুলেট হয়। ICMP ECHO প্রোব (-I) ব্যবহার করার সময় চেকসাম সাধারণত লাস্ট হপের জন্য আবশ্যক, তাই ICMP ব্যবহার করার সময় সেগুলো অলগে ক্যালকুলেট হয়।
-zপ্রোব দুটির মাঝপথে কত মিলিসেকেন্ড পজ করবে সেট করুন (ডিফল্ট ০)। Solaris এবং Cisco রাউটারলে icmp মেসেজ রেট-লিমিট করে। এই কেসে ৫০০ (০.৫ সেকেন্ড) ভালো মান।

রেজাল্ট ইন্টারপ্রিটেশন

Traceroute UDP প্রোব প্যাকেট ছোট TTL-এ লঞ্চ করে এবং গেটওয়ে থেকে ICMP "time exceeded" রিপ্লাই শোনা দিয়ে একটি IP প্যাকেট যে পথে ইন্টারনেট হোস্টে যায় সেটা আউটলাইন করে। প্রোব TTL ১ থেকে শুরু করে ১ করে বাড়ায় যতক্ষণ না ICMP "port unreachable" পাওয়া যায় (যা মানে প্যাকেট ডেস্টিনেশনে পৌঁছেছে) বা ডিফল্ট ৩০ হপের ম্যাক্স অটেম্প্ট লিমিটে পৌঁছায় (যা -m ফ্ল্যাগ দিয়ে পরিবর্তন করা যায়)।

Traceroute এক্সিকিউট করলে এটি প্রতিটি TTL সেটিং-এ তিনটি প্রোব পাঠায় এবং কনসোলে একটি লাইন প্রিন্ট করে যায়: TTL, গেটওয়ের অ্যাড্রেস, এবং প্রতিটি প্রোবের রাউন্ড-ট্রিপ টাইম। যদি প্রোব আন্সার ভিন্ন গেটওয়ে থেকে আসে, প্রতিটি রেসপন্ডিং সিস্টেমের অ্যাড্রেস প্রিন্ট হয়। ৫ সেকেন্ডের মধ্যে (-w ফ্ল্যাগ দিয়ে পরিবর্তনযোগ্য) রেসপন্স না পেলে সেই প্রোবের জন্য একটি এস্টেরিস্ক প্রিন্ট করে।

ডেস্টিনেশন হোস্টে UDP প্রোব-প্যাকেট প্রসেসিং ওভারওয়েলমিং না হয় সেজন্য traceroute ডেস্টিনেশন পোর্টকে এমন একটি মান সেট করে যা ডিভাইসটি সম্ভবত ব্যবহার করে না। যদি ডেস্টিনেশনের নেটওয়ার্ক বা সার্ভিস সেই পোর্ট ব্যবহার করে, -p ফ্ল্যাগ দিয়ে মান পরিবর্তন করুন।

Traceroute রেজাল্ট উদাহরণ

একটি স্যাম্পল ব্যবহার এবং আউটপুট নিচের উদাহরণের মতো ফেরত দেবে:

[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
 8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms

দ্বিতীয় এবং তৃতীয় লাইন একই। এই ফলাফল দ্বিতীয় হপ সিস্টেম (lbl-csam.arpa) এর বাগি কার্নেলের সাথে সম্পর্কিত যা শূন্য TTL-এ প্যাকেট ফরওয়ার্ড করে (4.3 BSD ডিস্ট্রিবিউটেড ভার্সনে একটি বাগ)। NSFNet (129.140) যেহেতু তার NSSes-এর জন্য অ্যাড্রেস-টু-নেম ট্রান্সলেশন দেয় না, তাই প্যাকেটগুলো ক্রস-কান্ট্রি কোন পথে যাচ্ছে সেটা অনুমান করতে হয়।

সাইলেন্ট গেটওয়ে উদাহরণ

একটি আরও আকর্ষণীয় উদাহরণ:

[yak 72]% traceroute allspice.lcs.mit.edu.
traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hops max
 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms
 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms
 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms
 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms
 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms
 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms
 8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms
 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms
10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms
11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms
12 * * *
13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms

লক্ষ্য করুন ১২, ১৪, ১৫, ১৬, এবং ১৭ হপ দূরত্বে গেটওয়েগুলো ICMP "time exceeded" মেসেজ পাঠায় না বা olyan ছোট TTL-এ পাঠায় যা আমাদের কাছে পৌঁছায় না। ১৪ থেকে ১৭ লাইন MIT C Gateway কোড চলে যেটি "time exceeded" মেসেজ পাঠায় না।

উপরোক্ত উদাহরণে সাইলেন্ট গেটওয়ে ১২ হতে পারে 4.[23]BSD নেটওয়ার্ক কোড এবং এর ডেরিভেটিভগুলোর একটি বাগের ফলাফল: 4.3 কোড এবং এর পুরনো ভার্সন চালানোর মেশিনগুলো আসল ডেটাগ্রামে অবশিষ্ট TTL ব্যবহার করে unreachable মেসেজ পাঠায়। গেটওয়ের জন্য অবশিষ্ট TTL শূন্য, তাই ICMP "time exceeded" গ্যারান্টিড আমাদের কাছে ফিরে আসে না।

ডেস্টিনেশন সিস্টেম সাইলেন্ট গেটওয়ে উদাহরণ

ডেস্টিনেশন সিস্টেমে এই বাগের আচরণ কিছুটা বেশি আকর্ষণীয়:

 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
 6 csgw.Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
 7 * * *
 8 * * *
 9 * * *
10 * * *
11 * * *
12 * * *
13 rip.Berkeley.EDU (128.32.131.22) 59 ms ! 39 ms ! 39 ms !

লক্ষ্য করুন ১২টি "গেটওয়ে" আছে (১৩ ফাইনাল ডেস্টিনেশন), এবং তাদের অর্ধেক মিসিং। আসলে হচ্ছে rip নামের সার্ভার (একটি Sun-3 যেটি Sun OS 3.5 চালাচ্ছে) আমাদের আসা ডেটাগ্রামের TTL-ই তার ICMP রিপ্লাইয়ের TTL হিসেবে ব্যবহার করছে। তাই রিপ্লাই রিটার্ন পথে টাইম আউট হবে (কোনো নোটিশ যাবে না কারণ ICMP-র জন্য ICMP পাঠানো হয় না) যতক্ষণ না আমরা পথের দৈর্ঘ্যের কমপক্ষে দ্বিগুণ TTL-এ প্রোব করি—অর্থাৎ rip আসলে শুধু সাত হপ দূরে।

TTL ১-এ রিপ্লাই ফেরত আসা এই সমস্যার একটি সংকেত। Traceroute টাইমের পরে ! প্রিন্ট করে যদি TTL ≤ ১ হয়। যেহেতু ভেন্ডররা পুরনো (DEC-এর Ultrix, Sun 3.x) বা নন-স্ট্যান্ডার্ড (HPUX) সফ্টওয়্যার শিপ করে, এই সমস্যা ঘন ঘন দেখতে পাওয়া যায় এবং টার্গেট হোস্ট বেছে নেওয়ার সময় সাবধান থাকতে হয়।

টাইমের পর অন্যান্য সম্ভাব্য অ্যানোটেশন: !H, !N, বা !P (হোস্ট, নেটওয়ার্ক, বা প্রোটোকল unreachable), !S (সোর্স রুট ফেইল্ড), !F- (ফ্র্যাগমেন্টেশন নিডেড—RFC1191 Path MTU Discovery মান দেখাবে), !X (কমিউনিকেশন অ্যাডমিনিস্ট্রেটিভলি প্রোহিবিটেড), !V (হোস্ট প্রেসিডেন্স ভায়োলেশন), !C (প্রেসিডেন্স কাটঅফ ইন ইফেক্ট), বা ! (ICMP unreachable code)। এই কোডগুলো RFC1812-এ ডিফাইন করা আছে যা RFC1716 স 업সেড করে। যদি প্রায় সব প্রোব unreachable হোস্টের ফলাফল দেয়, traceroute হার মানবে এবং এক্সিট করবে।

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

  1. লিনাক্সের জন্য নতুন PC বিল্ড করার পদ্ধতি

  2. লিনাক্স নতুনদের জন্য বেসিক Bash কমান্ড

  3. লিনাক্সের জন্য ৪টি Time Machine অ্যাল্টারনেটিভ

  4. নতুন লিনাক্স ইউজারের জন্য ৬টি সবচেয়ে উপযোগী টার্মিনাল কমান্ড