কেস স্টাডি: নেটওয়ার্ক সমস্যা ডিবাগ করা
এই পাঠে যা শিখবেন
- একটি সিস্টেমেটিক, স্তর-অনুযায়ী নেটওয়ার্ক ডিবাগিং পদ্ধতি
- কোন চেক কোন স্তরের সমস্যা চিহ্নিত করে ও কেন এই নির্দিষ্ট ক্রমে করা হয়
- কেন DNS সমস্যাকে সাধারণ কানেক্টিভিটি সমস্যা থেকে আলাদাভাবে দেখা জরুরি
- Python দিয়ে একটি ডায়াগনস্টিক ডিসিশন-ট্রি ফাংশন লেখা ও কয়েকটি দৃশ্যপটে যাচাই
১ · দৃশ্যপট (Scenario)
"ইন্টারনেট কাজ করছে না" — এটি সম্ভবত সবচেয়ে সাধারণ কিন্তু সবচেয়ে অস্পষ্ট অভিযোগ। বাস্তব সমস্যাটি হতে পারে অনেক ভিন্ন স্তরে — একটি ঢিলে থাকা তার থেকে শুরু করে একটি ভুল DNS সেটিং পর্যন্ত। একজন অভিজ্ঞ নেটওয়ার্ক ইঞ্জিনিয়ার এলোমেলোভাবে অনুমান করেন না — তিনি একটি সিস্টেমেটিক, নিচ থেকে উপরের দিকে যাওয়া পদ্ধতি অনুসরণ করেন।
২ · ওয়াকথ্রু (Walkthrough) — বটম-আপ ডায়াগনস্টিক ক্রম
- ফিজিক্যাল সংযোগ (M2) — সবচেয়ে সহজ স্তর প্রথমে: কেবল লাগানো আছে? WiFi সংযুক্ত?
- IP কনফিগারেশন (M4/L14, M6/L33) — ডিভাইসের একটি বৈধ IP ঠিকানা আছে? DHCP লিজ ঠিকমতো পাওয়া গেছে?
- লোকাল reachability (M4/L21 — ICMP) — ডিফল্ট গেটওয়েতে ping করে দেখুন।
- দূরবর্তী reachability — একটি পরিচিত বাহ্যিক IP-তে ping করুন (যেমন একটি পাবলিক DNS সার্ভার) — এটি বুঝিয়ে দেয় সমস্যা লোকাল নেটওয়ার্কে নাকি গেটওয়ের বাইরে।
- DNS রেজোলিউশন — সংযোগ থেকে আলাদাভাবে (M6/L30) — একটি অত্যন্ত সাধারণ বাস্তব গোচার: "ইন্টারনেট নেই" প্রায়ই আসলে মানে "DNS রেজোলিউশন ব্যর্থ হচ্ছে", যেখানে পরিচিত একটি বাহ্যিক IP-তে raw কানেক্টিভিটি ঠিকই কাজ করে।
- পোর্ট-লেভেল ব্লকিং (M10/L46) — যদি একটি নির্দিষ্ট অ্যাপ্লিকেশন ব্যর্থ হয় অথচ বেসিক কানেক্টিভিটি কাজ করছে, তাহলে ফায়ারওয়াল নিয়ম পরীক্ষা করুন।
এই পদ্ধতিটি ঠিক OSI স্তরের ক্রম অনুসরণ করে — ফিজিক্যাল → লিংক/নেটওয়ার্ক → এরপর DNS ও অ্যাপ্লিকেশন-নির্দিষ্ট সমস্যায় ফোকাস সংকুচিত করা। প্রথমে সবচেয়ে সহজ ও সস্তা চেকগুলো করলে বেশিরভাগ সাধারণ সমস্যা দ্রুত ধরা পড়ে, এবং প্রতিটি পরের ধাপ আগের ধাপের ফলাফলের উপর নির্ভর করে পরবর্তী সন্দেহভাজন এলাকা নির্ধারণ করে।
def diagnose(physical_up, ip_configured, gateway_reachable,
external_ip_reachable, dns_resolves):
"""বটম-আপ ডায়াগনস্টিক ক্রম অনুসরণ করে সবচেয়ে সম্ভাব্য সমস্যার স্তর/কারণ ফেরত দেয়।"""
if not physical_up:
return "ফিজিক্যাল স্তর সমস্যা (M2) — কেবল/WiFi সংযোগ নেই, প্রথমে এটি ঠিক করুন"
if not ip_configured:
return "IP কনফিগারেশন সমস্যা (M4/L14, M6/L33) — বৈধ IP/DHCP লিজ নেই"
if not gateway_reachable:
return "লোকাল নেটওয়ার্ক সমস্যা (M4/L21) — ডিফল্ট গেটওয়ে পৌঁছানো যাচ্ছে না"
if not external_ip_reachable:
return "গেটওয়ের বাইরের সংযোগ সমস্যা — ISP বা আপস্ট্রিম রাউটিং সমস্যা"
if not dns_resolves:
return ("DNS রেজোলিউশন সমস্যা (M6/L30), সাধারণ কানেক্টিভিটি সমস্যা নয় — "
"IP দিয়ে সংযোগ ঠিকই কাজ করছে, শুধু ডোমেইন নেম রেজোলভ হচ্ছে না")
return "বেসিক কানেক্টিভিটি ও DNS ঠিক আছে — নির্দিষ্ট অ্যাপ্লিকেশন বা পোর্ট ব্লকিং (M10/L46) পরীক্ষা করুন"
scenarios = [
{"name": "কেবল খোলা", "physical_up": False, "ip_configured": True, "gateway_reachable": True, "external_ip_reachable": True, "dns_resolves": True},
{"name": "DHCP লিজ ব্যর্থ", "physical_up": True, "ip_configured": False, "gateway_reachable": False, "external_ip_reachable": False, "dns_resolves": False},
{"name": "গেটওয়ে ডাউন", "physical_up": True, "ip_configured": True, "gateway_reachable": False, "external_ip_reachable": False, "dns_resolves": False},
{"name": "\"ইন্টারনেট নেই\" (আসলে DNS)", "physical_up": True, "ip_configured": True, "gateway_reachable": True, "external_ip_reachable": True, "dns_resolves": False},
{"name": "সব ঠিক, একটি অ্যাপ ব্যর্থ", "physical_up": True, "ip_configured": True, "gateway_reachable": True, "external_ip_reachable": True, "dns_resolves": True},
]
for s in scenarios:
name = s.pop("name")
result = diagnose(**s)
print(f"দৃশ্যপট: {name}")
print(f" নির্ণয়: {result}\n")
নেটওয়ার্ক ডিবাগিং কোনো জাদু নয় — এটি OSI স্তরের ক্রম অনুসরণ করে একটি সিস্টেমেটিক প্রক্রিয়া, যেখানে সবচেয়ে সহজ চেক আগে করা হয় এবং প্রতিটি ফলাফল পরবর্তী সন্দেহভাজন এলাকা সংকুচিত করে। "DNS বনাম সংযোগ" পার্থক্যটি মনে রাখা — বেশিরভাগ "ইন্টারনেট ডাউন" রিপোর্টের প্রকৃত মূল কারণ ধরতে সাহায্য করে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ কেন ফিজিক্যাল সংযোগ সবার আগে চেক করা হয়, DNS বা অ্যাপ্লিকেশন-নির্দিষ্ট সমস্যা আগে নয়?
কারণ যদি ফিজিক্যাল সংযোগ না থাকে, তাহলে উপরের কোনো স্তরই (IP, DNS, TCP, অ্যাপ্লিকেশন) কাজ করার কোনো সুযোগই পাবে না — সেগুলো চেক করা সময় নষ্ট হবে। সবচেয়ে সহজ ও মৌলিক নির্ভরতা আগে নিশ্চিত করলে বাকি ধাপগুলোর ফলাফল অর্থপূর্ণ হয়।
প্র ০২ একজন ব্যবহারকারী বলছেন "ব্রাউজারে কিছুই খুলছে না, কিন্তু আমি একটি অনলাইন গেম ঠিকমতো খেলতে পারছি" — এই তথ্য কীভাবে ডায়াগনসিসে সাহায্য করে?
যেহেতু গেম (যা সাধারণত সরাসরি IP দিয়ে সংযোগ করে) কাজ করছে, ফিজিক্যাল, IP ও রাউটিং সবই ঠিক আছে —
সমস্যাটি সম্ভবত DNS-নির্দিষ্ট, কারণ ব্রাউজার ডোমেইন নেম রেজোলভ করতে ব্যর্থ হচ্ছে। এই একটি পর্যবেক্ষণই
diagnose()-এর কয়েকটি ধাপ এড়িয়ে সরাসরি DNS সন্দেহের দিকে ইঙ্গিত দেয়।
প্র ০৩ কেন গেটওয়ে reachability ও বাহ্যিক IP reachability দুটি আলাদা চেক হিসেবে রাখা হয়েছে, একটি একক চেক নয়?
এই দুটি ভিন্ন সমস্যা এলাকা চিহ্নিত করে — গেটওয়ে পৌঁছানো না গেলে সমস্যা সম্পূর্ণ লোকাল নেটওয়ার্কে (আপনার রাউটার/সুইচ), কিন্তু গেটওয়ে পৌঁছানো গেলেও বাহ্যিক IP-তে ব্যর্থ হলে সমস্যা গেটওয়ের বাইরে (ISP বা আপস্ট্রিম রাউটিং) — এই পার্থক্য না রাখলে "কোথায় ঠিক করতে হবে" তা বোঝা যেত না।
অনুশীলন
-
চিন্তা করুন:
scenariosলিস্টে একটি নতুন দৃশ্যপট যোগ করুন যেখানে সবকিছু ঠিক আছে (সবTrue) এবং ফলাফল কী আসবে অনুমান করুন, তারপর Run চেপে যাচাই করুন।ফলাফল হবে "বেসিক কানেক্টিভিটি ও DNS ঠিক আছে — নির্দিষ্ট অ্যাপ্লিকেশন বা পোর্ট ব্লকিং (M10/L46) পরীক্ষা করুন" — কারণ সব বেসিক চেক পাস করলে, ফাংশনটি ধরে নেয় সমস্যাটি আরও নির্দিষ্ট কোনো অ্যাপ্লিকেশন-স্তরের কারণে, সাধারণ কানেক্টিভিটির সমস্যা নয়।
-
পরীক্ষা করুন:
diagnose()ফাংশনেgateway_reachable=Falseকিন্তুexternal_ip_reachable=True— এমন একটি অসম্ভব-শোনা সংমিশ্রণ পরীক্ষা করুন এবং ফলাফল বিশ্লেষণ করুন।যেহেতু ফাংশনটি ক্রমান্বয়ে চেক করে ও
gateway_reachable=Falseথেকেই থেমে যায় (early return), এটি "লোকাল নেটওয়ার্ক সমস্যা" রিপোর্ট করবে,external_ip_reachable-এর মান যাই হোক না কেন — বাস্তবে গেটওয়ে পৌঁছানো না গিয়ে বাহ্যিক IP পৌঁছানো অস্বাভাবিক, তাই এই early-return ডিজাইনটি বাস্তবসম্মত অনুমানের উপর ভিত্তি করে তৈরি।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ পরের কেস স্টাডি — একটি সম্পূর্ণ হোম/অফিস নেটওয়ার্ক ডিজাইন করা।
- Cloud Computing & DevOps কোর্স সঙ্গী কোর্স ক্লাউড ইনফ্রাস্ট্রাকচারে অনুরূপ মনিটরিং ও ডায়াগনস্টিক টুল কীভাবে কাজ করে তা শিখতে দেখুন।
- Cybersecurity & Ethical Hacking কোর্স সঙ্গী কোর্স কখন একটি "নেটওয়ার্ক সমস্যা" আসলে একটি আক্রমণের লক্ষণ হতে পারে তা শিখতে দেখুন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps ও Computer Networks — সব এক জায়গায়।