أدوات التشخيص وحل الأعطال
درس 3 من 6
3أدوات التشخيص وحل الأعطال
الصورة الكبيرةالفرق بين مبتدئ ومحترف في الشبكات ليس عدد الأوامر المحفوظة، بل الترتيب. المبتدئ يعيد تشغيل الراوتر ويجرب عشرة أشياء عشوائيًا. المحترف يسأل خمسة أسئلة بالترتيب، وكل جواب يحذف نصف الاحتمالات.
ماذا تشاهد في الرسم: traceroute يرسل حزمًا بعمر يزيد واحدًا كل مرة. كل موجّه تموت عنده حزمة يرد برسالة، فيظهر الطريق قفزة قفزة.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
حين لا يعمل الإنترنت، تصرّف مثل كهربائي: لا تفتح الجدار قبل أن تتأكد أن القابس موصول. اسأل بالترتيب: هل أنا متصل بالشبكة؟ هل معي عنوان؟ هل أصل للراوتر؟ هل أصل للإنترنت برقم؟ هل الأسماء تعمل؟ أول «لا» هي مكان المشكلة. لكل سؤال أمر واحد تكتبه، ولا تحتاج أكثر من هذا في أغلب الحالات.
المنهج من الأسفل للأعلى (Bottom-up) يتبع نموذج OSI، وبدائله من الأعلى للأسفل أو «فرّق تسد» من الطبقة 3. ping يستخدم ICMP Echo، وtraceroute يزيد TTL ويستقبل ICMP Time Exceeded (tracert في ويندوز، ومثله mtr مع إحصاءات). الأدوات: ip addr وip route وip neigh وss -tulpn وdig وcurl -v. في Cisco: show ip interface brief وshow ip route وshow mac address-table وshow vlan brief وshow interfaces للأخطاء. Wireshark يلتقط الحزم ويفككها طبقة طبقة، وفلاتر العرض مثل dns وtcp.port == 443 وtcp.flags.syn == 1.
قبل أن تبدأ
🧅الطبقات
التشخيص يمشي على الطبقات.
🚀فتح موقع
تعرف المحطات التي قد تتعطل.
الفكرة الجوهرية
1سلّم التشخيص
ابدأ من الأسفل، وانتقل للدرجة التالية فقط إذا نجحت الحالية. كل درجة تحتها أمر جاهز.
هذا السلّم نفسه في شكل دالة. أول شرط يفشل هو التشخيص.
def diagnose(link_up, ip, gw_ok, ping_ip_ok, dns_ok, port_open):
if not link_up:
return "L1: cable or Wi-Fi is not connected"
if ip.startswith("169.254"):
return "L3: DHCP did not answer - check the router"
if not gw_ok:
return "L2/L3: cannot reach the gateway - wrong network or VLAN?"
if not ping_ip_ok:
return "L3: the gateway works, the internet does not - provider or route"
if not dns_ok:
return "L7: numbers work, names do not - it's DNS"
if not port_open:
return "L4: the server is up, the port is blocked or closed"
return "network is fine - look at the application itself"
print(diagnose(True, "169.254.3.9", False, False, False, False))
print(diagnose(True, "192.168.1.20", True, True, False, False))
print(diagnose(True, "192.168.1.20", True, True, True, True))2الأوامر في كل نظام
الأوامر تختلف قليلًا بين الأنظمة، لكن السؤال واحد. احفظ السؤال، والأمر يأتي.
| السؤال | ويندوز | لينكس | ماك |
|---|---|---|---|
| ما عنواني وبوابتي؟ | ipconfig /all | ip addr; ip route | ifconfig; netstat -rn |
| هل أصل لهذا الجهاز؟ | ping 1.1.1.1 | ping -c 4 1.1.1.1 | ping -c 4 1.1.1.1 |
| أين يتوقف الطريق؟ | tracert example.com | traceroute example.com | traceroute example.com |
| هل الاسم يعمل؟ | nslookup example.com | dig example.com | dig example.com |
| من يستمع على أي منفذ؟ | netstat -ano | ss -tulpn | lsof -i -P |
| جدول ARP | arp -a | ip neigh | arp -a |
| هل المنفذ البعيد مفتوح؟ | Test-NetConnection host -Port 443 | nc -zv host 443 | nc -zv host 443 |
هكذا يبدو الحل في الطرفية: ثلاثة أوامر وتعرف المشكلة.
$ ping -c 3 1.1.1.1 64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=11.8 ms 64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=12.1 ms 64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=11.6 ms 3 packets transmitted, 3 received, 0% packet loss $ ping -c 1 example.com ping: example.com: Name or service not known # numbers work, names do not: DNS $ dig +short example.com @1.1.1.1 203.0.113.10 # another resolver answers: fix your DNS setting
3Wireshark: انظر داخل الحزم
Wireshark يلتقط كل حزمة تمر ببطاقة الشبكة ويعرضها طبقات كما في درس الطبقات: إطار Ethernet، ثم IP، ثم TCP، ثم HTTP. هو أفضل معلم للشبكات لأنه يريك الحقيقة، لا الشرح.
| الفلتر | ماذا يُظهر |
|---|---|
dns | أسئلة DNS وأجوبتها فقط |
ip.addr == 192.168.1.20 | كل ما يخص جهازًا واحدًا |
tcp.port == 443 | حركة HTTPS |
tcp.flags.syn == 1 && tcp.flags.ack == 0 | بدايات الاتصالات فقط |
arp || dhcp | رسائل ARP وDHCP: بداية كل اتصال بالشبكة |
tcp.analysis.retransmission | إعادات الإرسال: علامة فقد حزم |
dns || tcp.flags.syn == 1. سترى بعينك سؤال DNS ثم المصافحة الثلاثية، تمامًا كما في الرسوم.4أوامر Cisco الأساسية
في Packet Tracer وعلى أجهزة Cisco، أوامر show تقرأ ولا تغيّر شيئًا، فجرّبها بلا خوف. هذه أهمها وما تبحث عنه في كل واحد.
«administratively down» تعني أن أحدًا أغلق المنفذ بأمر، والحل no shutdown.
R1# show ip interface brief
Interface IP-Address OK? Method Status Protocol
Gi0/0 10.1.1.1 YES manual up up
Gi0/1 203.0.113.2 YES manual up up
Gi0/2 unassigned YES unset administratively down down <- "shutdown" is still on
R1# show interfaces gi0/1 | include errors|CRC
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored <- CRC errors mean a bad cableمثال محلول
المسألة: موظف لا يصل لأي شيء. ipconfig يعطي 192.168.1.57 وبوابة 192.168.1.1. ping 192.168.1.1 ينجح، وping 1.1.1.1 يفشل، وtracert 1.1.1.1 يتوقف بعد القفزة الأولى. أين المشكلة؟ الحل: الطبقات 1 و2 و3 المحلية تعمل لأن البوابة ترد. الطريق يتوقف بعد البوابة مباشرة، إذن المشكلة في الراوتر نفسه أو في وصلته بمزوّد الخدمة. افحص منفذ WAN في الراوتر وحالة خط المزوّد. ولا فائدة من فحص DNS الآن.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| إذا فشل ping فالجهاز مطفأ. | كثير من الخوادم والجدران تمنع ICMP عمدًا؛ جرّب المنفذ نفسه. |
| النجوم في traceroute تعني أن الطريق مقطوع. | بعض الموجّهات لا ترد على traceroute لكنها تمرر الحركة؛ المهم هل تصل القفزات بعدها. |
| إعادة تشغيل الراوتر تحل كل شيء. | قد تخفي المشكلة مؤقتًا، لكن دون تشخيص ستعود. |
أين تقابله في العمل
🎧الدعم الفني
سلّم التشخيص هو سيناريو المكالمة اليومي.
☁️مهندس سحابة
curl -v وdig يكشفان أغلب مشاكل النشر.
🔍محلل أمن
Wireshark لقراءة ما فعله جهاز مشبوه بالضبط.
اختبر فهمك
ping 1.1.1.1 ينجح وping example.com يفشل. أين المشكلة؟
الوصول بالرقم يعمل، فالمشكلة في تحويل الاسم.
كيف يكتشف traceroute القفزات؟
كل موجّه تموت عنده الحزمة يكشف نفسه.
أي فلتر Wireshark يُظهر بدايات اتصالات TCP فقط؟
أول رسالة في المصافحة SYN بلا ACK.
منفذ موجّه حالته «administratively down». ما الحل؟
المنفذ مغلق بأمر، لا بعطل.
ping لعنوان IP ينجح لكن لاسم الموقع يفشل. أين المشكلة؟
الطريق سليم، والفشل في تحويل الاسم لعنوان.
أي أمر يعرض القفزات حتى الوجهة في Windows؟
وفي Linux اسمه traceroute.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا نبدأ التشخيص من الطبقة 1؟
لأن كل طبقة تعتمد على التي تحتها؛ لا معنى لفحص DNS والكابل مفصول.
ping لخادم يفشل لكن الموقع يفتح. كيف؟
الخادم أو الجدار يمنع ICMP ويسمح بـ 443.
ماذا تعني أخطاء CRC المتزايدة على منفذ؟
إطارات تصل تالفة، غالبًا كابل سيئ أو تداخل كهربائي.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.