يُستخدم Wireshark عندما تعرف أن هناك مشكلة في الاتصال، لكنك لا تعرف أين تتوقف البيانات أو لماذا يتأخر الرد. فهو يلتقط حزم الشبكة (Packets)، ويفكك البروتوكولات داخلها، ويعرض ما حدث بين الجهاز والخادم بترتيب زمني دقيق بدلاً من الاعتماد على التخمين.
في هذا الدليل ستتعلم شرح أساسيات Wireshark عملياً: اختيار مكان الالتقاط الصحيح، قراءة الواجهة، تنفيذ أول Capture، استخدام الفلاتر، ثم تشخيص أمثلة شائعة في DNS وDHCP وTCP. الهدف ليس حفظ عشرات الفلاتر، بل بناء طريقة عمل تستطيع تكرارها عند معالجة مشكلة حقيقية.
ابدأ بتحديد الجهاز والاتصال والوقت، التقط الحزم من أقرب نقطة للمشكلة، ثم أعد إنتاج العطل مرة واحدة وأوقف الالتقاط. استخدم Display Filter لعزل عنوان IP أو البروتوكول، وتحقق من تسلسل الطلب والرد. إذا لم ترَ الحزم المتوقعة فلا تستنتج فوراً أن الطرف الآخر لم يرسلها؛ فقد تكون اخترت واجهة أو نقطة Capture لا تمر عبرها تلك الحزم.
ما هو Wireshark وماذا يستطيع أن يكشف؟
Wireshark هو محلل لحزم الشبكة (Network Packet Analyzer) مجاني ومفتوح المصدر. يعرض الحزمة على عدة طبقات، مثل Ethernet وIP وTCP أو UDP، ثم البروتوكول الأعلى مثل DNS أو DHCP أو HTTP أو TLS. ووفق دليل Wireshark الرسمي، تتمثل وظيفته الأساسية في تقديم بيانات الحزم الملتقطة بأكبر قدر ممكن من التفاصيل.
الأداة لا تصلح الشبكة تلقائياً ولا تمنع الهجمات، بل توفر الدليل الذي يساعد فني IT أو مسؤول الشبكة على تحديد الطبقة التي تعمل بصورة طبيعية والطبقة التي تفشل. يمكن مثلاً التحقق مما إذا كان العميل أرسل طلب DNS، وهل أجاب الخادم، وهل اكتملت مصافحة TCP، وهل ظهرت إعادة إرسال (Retransmission) أو رفض للاتصال (Reset).
| ما يمكن رؤيته | الفائدة العملية | الحدود التي يجب فهمها |
|---|---|---|
| عناوين المصدر والوجهة، المنافذ، البروتوكولات، التوقيت وأحجام الحزم | تحديد أطراف الاتصال ومساره وزمن الاستجابة | لا يثبت وحده سبب المشكلة إذا كان الالتقاط من نقطة واحدة فقط |
| طلبات وردود بروتوكولات مثل ARP وICMP وDNS وDHCP | تمييز فشل الاسم أو العنوان أو البوابة عن فشل التطبيق | قد لا ترى حركة أجهزة أخرى على شبكة Switch دون Port Mirroring أو TAP |
| مصافحة TCP وإعادة الإرسال والـ Reset وتسلسل الجلسة | فصل مشكلة الوصول إلى المنفذ عن مشكلة التطبيق بعد الاتصال | تنبيهات التحليل استنتاجات من الحزم الملتقطة وليست حكماً نهائياً منفرداً |
| بيانات بروتوكول غير مشفر | قراءة الطلب والرد ومحتوى الجلسة عند السماح بذلك | تشفير TLS يحجب محتوى HTTPS ما لم تتوفر أسرار الجلسة بطريقة مصرح بها |
قبل الالتقاط: اختر نقطة Capture الصحيحة
نجاح التحليل يبدأ من مكان التقاط الحزم، لا من الفلتر. في شبكة Ethernet مبنية على Switch، يصل إلى منفذ جهازك عادةً الترافيك الخاص بذلك الجهاز إضافة إلى بعض Broadcast وMulticast؛ لذلك لا يجعل Promiscuous Mode جهازك يرى تلقائياً كل اتصالات بقية المنافذ. توضح إرشادات التقاط Ethernet الرسمية أن مراقبة اتصال بين جهازين آخرين تتطلب اختيار نقطة مناسبة مثل الجهاز المتأثر أو Port Mirroring أو Network TAP.
| نقطة الالتقاط | متى تستخدمها؟ | ماذا تتوقع أن ترى؟ |
|---|---|---|
| الجهاز العميل المتأثر | عند تعطل تطبيق أو DNS أو تسجيل دخول على جهاز محدد | الترافيك الصادر والوارد لهذا الجهاز، وهي أبسط نقطة للبدء |
| الخادم | للتحقق مما إذا كانت الطلبات وصلت فعلاً وكيف ردت الخدمة | حركة الخادم، لكن قد لا تكشف ما فُقد قبل الوصول إليه |
| منفذ SPAN أو Mirror على Switch | عند تحليل منفذ جهاز آخر أو VLAN أو Uplink | نسخة من الترافيك الذي حددته في إعدادات السويتش |
| Network TAP | في التحليل الاحترافي أو عندما تحتاج نقطة مراقبة مستقرة | نسخة مخصصة من المرور وفق تصميم الـ TAP |
| العميل والخادم في الوقت نفسه | عند الاشتباه بفقد أو تغيير الحزم في المسار | مقارنة زمنية توضح ما خرج من طرف وما وصل إلى الطرف الآخر |
التقط الترافيك فقط على أجهزة وشبكات تملك تصريحاً بإدارتها. قد يحتوي ملف PCAPNG على عناوين داخلية وأسماء أجهزة واستعلامات DNS ورموز جلسات أو بيانات اعتماد إذا كان البروتوكول غير مشفر. تعامل معه كملف حساس، وحدد من يستطيع فتحه، ولا ترفعه إلى خدمة عامة قبل تنقيحه.
نزّل البرنامج من صفحة Wireshark الرسمية. على Windows يعتمد الالتقاط عادةً على Npcap؛ وإذا ظهرت الواجهات دون حزم أو لم تظهر أصلاً، فتحقق أولاً من تثبيت مكوّن الالتقاط وصلاحياته قبل تغيير إعدادات الشبكة.
فهم واجهة Wireshark وطبقات الحزمة
تعرض الشاشة الرئيسية واجهات الشبكة المتاحة مثل Ethernet وWi-Fi وواجهات VPN والـ Loopback. اختر الواجهة التي ارتفع مخطط النشاط بجانبها أثناء تنفيذ الاتصال المطلوب، لكن لا تعتمد على النشاط وحده: طابق اسم الواجهة مع عنوان IP الفعلي للجهاز واتجاه المشكلة.
| الجزء | ماذا يعرض؟ | كيف تقرؤه؟ |
|---|---|---|
| Packet List | سطر ملخص لكل حزمة: الرقم، الزمن، المصدر، الوجهة، البروتوكول، الطول والمعلومة المختصرة | استخدمه لبناء التسلسل الزمني والعثور على الطلب والرد |
| Packet Details | شجرة قابلة للتوسيع لطبقات الحزمة وحقول كل بروتوكول | افتح Ethernet ثم IP ثم TCP أو UDP ثم بروتوكول التطبيق |
| Packet Bytes | البايتات الخام بصيغة Hex وتمثيل ASCII عند إمكان عرضه | يتحدد الجزء الموافق للعنصر الذي اخترته في Packet Details |
إذا كانت الحزمة تحتوي Ethernet ثم IPv4 ثم TCP ثم TLS، فهذه ليست أربع حزم منفصلة؛ إنها طبقات مغلفة داخل الحزمة نفسها. يبدأ التحليل عادةً من المعلومة الأعلى التي تهمك، ثم تنزل إلى الطبقات الأقل عندما تحتاج إثباتاً أدق.
ألوان الصفوف تساعد على تمييز البروتوكولات والحالات وفق قواعد تلوين، لكنها لا تعني أن كل سطر أسود أو أحمر يمثل عطلاً. اقرأ حقل Info وPacket Details وتسلسل الجلسة قبل إصدار الحكم.
تنفيذ أول Capture عملي خطوة بخطوة
أفضل تمرين أول هو التقاط استعلام DNS واضح؛ لأنه يتكون غالباً من طلب ورد يسهل التعرف إليهما. سننشئ الترافيك بأنفسنا حتى نعرف وقت الحدث والاسم الذي نبحث عنه.
- افتح Wireshark وحدد واجهة Ethernet أو Wi-Fi التي يستخدمها الجهاز للوصول إلى الشبكة.
- ابدأ الالتقاط دون Capture Filter في هذا التمرين، حتى لا يؤدي خطأ في الفلتر إلى فقد الحزم.
- افتح CMD على Windows ونفّذ الأمر التالي لإنشاء استعلام DNS معروف.
nslookup example.com
وعلى Linux أو macOS، يمكن استخدام:
dig example.com
- ارجع إلى Wireshark وأوقف الالتقاط فور انتهاء الاختبار لتقليل الضجيج.
- احفظ الملف باسم واضح مثل dns-test.pcapng مع وقت الاختبار ووصف مختصر للحالة.
- اكتب الفلتر التالي في شريط Display Filter واضغط Enter.
dns
ابحث عن Query من جهازك إلى خادم DNS، ثم Response في الاتجاه المعاكس. افتح قسم Domain Name System داخل Packet Details وراجع اسم الاستعلام، نوعه مثل A أو AAAA، وReply Code والإجابة التي تحتوي عنوان IP إن نجح الطلب.
| ما ظهر في الالتقاط؟ | الاستنتاج الأولي | الخطوة التالية |
|---|---|---|
| Query ثم Response ناجح | مسار DNS لهذا الاختبار يعمل | تحقق من العنوان المعاد ثم انتقل إلى TCP أو التطبيق |
| Query متكرر بلا Response | الطلب خرج من نقطة الالتقاط، لكن الرد لم يظهر فيها | افحص الخادم والمسار وFirewall، أو التقط من نقطة ثانية |
| Response مع NXDOMAIN | الخادم أجاب بأن الاسم غير موجود ضمن النتيجة التي وصل إليها | راجع الاسم وSuffix والـ Zone والخادم الذي تلقى الاستعلام |
| لا توجد حزم DNS | قد تكون الواجهة خاطئة أو أن الطلب يستخدم Cache أو DNS مشفراً أو مساراً مختلفاً | أكد الواجهة والاختبار وطريقة DNS الفعلية قبل الاستنتاج |
الفرق بين Capture Filter وDisplay Filter
يمتلك Wireshark لغتين مختلفتين للفلاتر. Capture Filter يحدد ما سيتم حفظه أثناء الالتقاط باستخدام صياغة libpcap، أما Display Filter فيخفي أو يظهر حزماً من ملف تم التقاطه بالفعل. الخلط بينهما من أكثر أسباب فشل التمرين الأول.
| المعيار | Capture Filter | Display Filter |
|---|---|---|
| وقت التطبيق | قبل وأثناء الالتقاط | أثناء عرض الحزم أو بعد فتح الملف |
| الأثر | الحزم غير المطابقة لا تُحفظ، ولا يمكن استعادتها من الملف | الحزم غير المطابقة تبقى في الملف لكنها لا تظهر مؤقتاً |
| الاستخدام الأفضل | تقليل الحجم والضغط في Capture طويل أو شبكة مزدحمة | الاستكشاف والتحليل وتغيير زاوية البحث بأمان |
| الصياغة | مثل host 192.168.1.50 | مثل ip.addr == 192.168.1.50 |
host 192.168.1.50
src host 192.168.1.50
dst host 192.168.1.50
tcp port 443
udp port 53
net 192.168.10.0/24
ip.addr == 192.168.1.50
ip.src == 192.168.1.50
tcp.port == 443
dns
dns.flags.response == 0
dns.flags.rcode != 0
tcp.flags.syn == 1 and tcp.flags.ack == 0
tcp.analysis.retransmission
icmp or icmpv6
arp
dhcp
| الفلتر | ما الذي يعرضه؟ | متى تستخدمه؟ |
|---|---|---|
| ip.addr == 192.168.1.50 | الحزم التي يكون العنوان فيها مصدراً أو وجهة | لعزل حركة جهاز أو خادم محدد |
| tcp.port == 443 | اتصالات TCP التي تستخدم المنفذ 443 في أي اتجاه | لمراجعة الوصول إلى خدمة HTTPS |
| dns | حزم بروتوكول DNS التي فككها Wireshark | لتتبع الاستعلامات والردود وأخطاء الأسماء |
| dns.flags.rcode != 0 | ردود DNS التي تحمل Reply Code غير صفري | للعثور سريعاً على ردود مثل NXDOMAIN أو SERVFAIL |
| dhcp | رسائل DHCP مثل Discover وOffer وRequest وACK | لتحديد المرحلة التي توقف عندها منح العنوان |
| tcp.flags.syn == 1 and tcp.flags.ack == 0 | طلبات بدء اتصال TCP الجديدة | لرؤية محاولات الاتصال الأولية ومقارنتها بالردود |
| tcp.analysis.retransmission | الحزم التي صنفها تحليل Wireshark كإعادة إرسال | كنقطة بداية لفحص الفقد أو الازدحام مع مراجعة السياق |
| tcp.stream eq 5 | الحزم التابعة لمحادثة TCP رقم 5 | لعزل جلسة واحدة بعد معرفة رقم Stream الفعلي |
| icmp or icmpv6 | رسائل ICMP الخاصة بـIPv4 وIPv6 | لفحص Ping ورسائل التحكم وأخطاء الوصول |
| arp | طلبات وردود ARP داخل الشبكة المحلية | لتشخيص ربط عنوان IP بعنوان MAC |
يمكن دمج الشروط باستخدام and وor وnot والأقواس. ويوفر مرجع Display Filter الرسمي شرح الصياغة، بينما يوضح مرجع pcap-filter صياغة Capture Filter.
في Capture قصير لإعادة إنتاج عطل، التقط بصورة أوسع ثم ضيّق النتائج باستخدام Display Filter. انتقل إلى Capture Filter عندما تعرف بالضبط ما تحتاجه أو عندما يكون حجم الترافيك كبيراً؛ لأن الفلتر الخاطئ في مرحلة الالتقاط يحذف الدليل قبل حفظه.
ثلاثة سيناريوهات تشخيص يحتاجها فني IT
ابدأ بفلتر dns وحدد Query الخاص بالاسم المطلوب. إذا وصل Response ناجح يحمل عنواناً، انتقل إلى فلتر العنوان والمنفذ الخاص بالخدمة؛ فقد أثبت الالتقاط أن DNS أجاب، لكنه لم يثبت أن التطبيق استطاع الاتصال بذلك العنوان.
لإظهار طلبات DNS فقط استخدم:
dns.flags.response == 0
ولعزل الردود التي تحمل Reply Code غير صفري استخدم:
dns.flags.response == 1 and dns.flags.rcode != 0
استخدم Display Filter التالي، ثم اطلب من العميل تجديد عنوانه ضمن نافذة اختبار مراقبة ومصرح بها:
dhcp
ابحث عن التسلسل Discover ثم Offer ثم Request ثم ACK. ظهور Discover فقط يعني أن العميل أرسل طلبه عند نقطة الالتقاط، لكنه لم يتلق عرضاً فيها. عندها افحص وجود DHCP Server، وإعداد DHCP Relay، ومسار VLAN، وسياسات الحماية. ظهور Offer دون اكتمال Request وACK يغيّر اتجاه التشخيص نحو العميل أو تعدد العروض أو مسار الرد. لفهم وظيفة كل مرحلة وإعدادات Scope وRelay، راجع شرح بروتوكول DHCP في الشبكات.
اعزل الجهاز والخدمة معاً، مع استبدال العنوان والمنفذ بالقيم الفعلية:
ip.addr == 192.168.1.50 and tcp.port == 443
تبدأ الجلسة الطبيعية غالباً بمصافحة ثلاثية: SYN من العميل، ثم SYN/ACK من الخادم، ثم ACK من العميل. بعد ذلك تبدأ بيانات التطبيق أو TLS. قراءة التسلسل أهم من النظر إلى حزمة منفردة.
| النمط المرصود | ماذا يعني مبدئياً؟ | ما الذي تتحقق منه؟ |
|---|---|---|
| SYN متكرر ولا يوجد SYN/ACK | لا يظهر رد على محاولة الاتصال عند نقطة Capture | Routing وFirewall وNAT وحالة الخادم وكون الخدمة تستمع إلى المنفذ |
| SYN ثم RST | وصل رفض فعلي للاتصال | مصدر RST، والمنفذ، والخدمة، وسياسة الجهاز أو الوسيط |
| اكتملت المصافحة ثم توقف أو تأخر الرد | الوصول الأساسي إلى المنفذ نجح | TLS أو بروتوكول التطبيق أو أداء الخادم أو قاعدة البيانات الخلفية |
| Retransmission متكرر | Wireshark استنتج إعادة إرسال اعتماداً على الحزم التي رآها | فقد الحزم والازدحام وجودة الرابط ومكان الالتقاط وترتيب الحزم |
انقر بزر الفأرة الأيمن على حزمة من الجلسة ثم اختر Follow > TCP Stream. سيعزل Wireshark الحزم التابعة للمحادثة ويعرض بياناتها المتاحة بالترتيب. تدعم ميزة Follow Streams عدة بروتوكولات، لكن ظهور TLS لا يعني أن محتوى HTTPS سيصبح مقروءاً تلقائياً.
في اتصال HTTPS يمكنك عادةً رؤية عناوين الأطراف والمنافذ والتوقيت وأحجام الحزم وأجزاء من تفاوض TLS، لكن محتوى التطبيق مشفر. فك TLS يحتاج أسرار جلسة متاحة بطريقة مصرح بها، ويجب حماية هذه الأسرار وملف الالتقاط لأنها مواد حساسة.
أدوات التحليل وWorkflow منظم لتسليم نتيجة موثوقة
بعد عزل الاتصال، استخدم الأدوات الإحصائية لتكوين صورة أوسع بدلاً من تصفح آلاف الصفوف يدوياً.
| الأداة | ماذا تقدم؟ | الاستخدام العملي |
|---|---|---|
| Protocol Hierarchy | توزيع البروتوكولات والحجم النسبي لكل منها | فهم طبيعة ملف الالتقاط واكتشاف بروتوكول غير متوقع |
| Endpoints | الأطراف والعناوين التي ظهرت في الملف | معرفة الأجهزة الأكثر نشاطاً أو التحقق من ظهور هدف محدد |
| Conversations | المحادثات بين طرفين مع عدد الحزم والبايتات والمدة | عزل جلسة بعينها ومقارنة اتجاهي الترافيك |
| I/O Graphs | تغير معدل الحزم أو البايتات بمرور الزمن | ربط وقت البطء أو الانقطاع بارتفاع أو هبوط في الحركة |
| Expert Information | عناصر غير معتادة أو جديرة بالمراجعة اكتشفها المحلل | نقطة بداية سريعة، لا بديلاً عن فحص السياق |
- ثبّت العَرَض: دوّن رسالة الخطأ، الجهاز، الخادم، عنواني IP، المنفذ ووقت المشكلة.
- حدّد النطاق: هل المشكلة في مستخدم واحد أم VLAN كاملة أم جميع الفروع؟
- اختبر الأساسيات: راجع العنوان والبوابة وDNS والوصول إلى المنفذ قبل الالتقاط. يساعدك هنا دليل أهم أوامر CMD لفني الدعم الفني.
- اختر نقطة Capture: ابدأ من العميل أو الخادم الأقرب للعَرَض.
- التقط الحدث فقط: ابدأ، أعد إنتاج المشكلة مرة واحدة، ثم أوقف الالتقاط.
- اعزل الأدلة: صفِّ عنوان الجهاز والبروتوكول والمنفذ، ثم تتبع الطلب والرد.
- غيّر نقطة الالتقاط عند الحاجة: قارن العميل والخادم أو SPAN لتحديد أين اختفت الحزمة.
- وثّق النتيجة: سجّل رقم الحزمة والتوقيت والفلتر والاستنتاج والإجراء واختبار التحقق.
- الالتقاط من Wi-Fi بينما الاتصال الفعلي يخرج عبر Ethernet أو VPN.
- الاعتقاد أن Display Filter يقلل ما يُحفظ في الملف؛ هو يغيّر العرض فقط.
- تطبيق Capture Filter ضيق قبل التأكد من عناوين الأطراف والمنافذ.
- اعتبار كل Retransmission دليلاً قاطعاً على تلف الشبكة دون مقارنة التوقيت ونقطة الالتقاط.
- اعتبار TCP Checksum غير الصحيح مشكلة حقيقية دائماً؛ قد يظهر ذلك في Capture محلي بسبب Checksum Offloading قبل أن تكمل بطاقة الشبكة الحساب.
- ترك Capture يعمل مدة طويلة بلا حد للحجم أو الوقت، ما ينتج ملفات ضخمة ويزيد احتمال جمع بيانات لا تحتاجها.
- إرسال PCAPNG كاملاً إلى طرف آخر دون إزالة الترافيك غير المتعلق وفحص حساسية المحتوى.
الحزمة التي تراها تثبت أنها وصلت إلى نقطة الالتقاط. أما الحزمة التي لا تراها فلا تثبت وحدها أنها لم توجد؛ قد تكون خارج مسار الواجهة، أو حُذفت بواسطة Capture Filter، أو لم يرسلها السويتش إلى منفذك. اربط دائماً الاستنتاج بمكان الالتقاط.
الأسئلة الشائعة حول أساسيات Wireshark
هل Wireshark أداة اختراق؟
هو محلل حزم يمكن استخدامه في الإدارة والتشخيص والتعليم والتحقيق الأمني. حساسية الاستخدام تعتمد على الشبكة والتفويض والبيانات التي يجري التقاطها؛ لذلك يجب استخدامه فقط ضمن صلاحية واضحة.
لماذا لا أرى ترافيك بقية أجهزة الشبكة؟
لأن السويتش لا يرسل عادةً Unicast الخاص بالمنافذ الأخرى إلى منفذك. التقط على الجهاز المتأثر، أو استخدم SPAN/Port Mirroring أو Network TAP وفق تصميم الشبكة.
هل يمكن لـWireshark قراءة HTTPS؟
يمكنه تحليل اتصال TCP وتفاوض TLS وبعض البيانات الوصفية، لكن محتوى HTTPS مشفر. فك المحتوى يحتاج أسرار جلسة صالحة وإعداداً مناسباً وتفويضاً لحماية الخصوصية.
ما الفلتر المناسب لعنوان IP واحد؟
في Display Filter استخدم ip.addr == 192.168.1.50 لعرض الحزم التي يكون العنوان فيها مصدراً أو وجهة. وفي Capture Filter استخدم host 192.168.1.50.
لماذا يظهر TCP Checksum غير صحيح على الجهاز نفسه؟
قد يكون السبب Checksum Offloading؛ يلتقط Wireshark الحزمة قبل أن تحسب بطاقة الشبكة قيمة الـ Checksum عند الإرسال. لا تعتبره عطلاً قبل مقارنة Capture من جهة الاستقبال أو مراجعة سياق الحزم.
ما الصيغة الأفضل لحفظ الالتقاط؟
صيغة PCAPNG هي الصيغة الافتراضية المرنة في Wireshark وتدعم معلومات إضافية مقارنةً بـPCAP. استخدم اسماً يوضح النظام والحدث والوقت، واحفظ الملف في موقع مؤمّن.
إتقان Wireshark لا يبدأ بحفظ مئات الفلاتر، بل بفهم مكان الالتقاط وبناء تسلسل منطقي من الطلب إلى الرد. عندما تحدد الجهاز والواجهة والوقت والبروتوكول، يتحول ملف مليء بآلاف الحزم إلى دليل واضح يبين الطبقة التي نجحت والنقطة التي بدأ عندها الفشل.
ابدأ بتمرين DNS، ثم جرّب DHCP ومصافحة TCP داخل مختبر أو شبكة مصرح بها. في كل مرة دوّن توقعك قبل Capture، ثم قارنه بما ظهر فعلياً. هذه العادة هي التي تجعل Wireshark أداة تشخيص يومية لفني IT، لا مجرد شاشة مليئة بالألوان.