ما هي netstat وكيف تفحص اتصالات الشبكة؟

الكاتب: تاريخ النشر

باختصار: netstat أداة لسطر الأوامر تعرض اتصالات الشبكة والمنافذ التي تنتظر البرامج استقبال حركة الشبكة عليها، ومعلومات أخرى عن الشبكة. تتوفر عادةً على Linux ضمن حزمة net-tools: يعرض الأمر sudo netstat -tulnp منافذ TCP وUDP والعمليات المرتبطة بها. يفيد الأمر sudo netstat -tnp في فحص اتصالات TCP القائمة، أما البديل الحديث فهو ss.

ماذا تعرض netstat ومتى تفيد؟

تتيح netstat معرفة العناوين التي يتواصل معها الحاسوب والبرامج التي تقدم خدمات عبر الشبكة. تساعدك، مثلاً، على التحقق من عمل خادم الويب، أو معرفة سبب عجز تطبيق عن استخدام منفذ، أو تحديد العملية التي تحتفظ باتصال مع جهاز آخر.

المنفذ رقم يُستخدم لتوجيه حركة الشبكة إلى خدمة محددة. فالبرنامج الذي يستمع على منفذ ينتظر استقبال اتصالات، بينما يربط اتصال TCP النشط عنواناً ومنفذاً محليين محددين بعنوان الطرف الآخر ومنفذه.

تعرض netstat الحالة التي يمكن رصدها على الحاسوب الذي تفحصه. ولا تثبت النتائج وحدها أن الخدمة متاحة عبر الإنترنت؛ فقد يمنع الوصولَ إليها جدارٌ ناري أو موجّه أو قواعد الشبكة لدى مزوّد البنية التحتية.

كيف تثبّت netstat على Linux؟

تحقق أولاً مما إذا كانت الأداة تعمل بالفعل:

netstat --version

إذا أبلغت الصدفة عن عدم العثور على الأمر، فثبّت حزمة net-tools باستخدام مدير الحزم في توزيعتك. من الأوامر المعتادة:

التوزيعةالتثبيت
Debian, Ubuntusudo apt update && sudo apt install net-tools
Fedorasudo dnf install net-tools
Arch Linuxsudo pacman -S net-tools
openSUSEsudo zypper install net-tools

يتطلب التثبيت صلاحيات المسؤول. إذا كنت تعمل على خادم مُدار ولا تملك صلاحية استخدام sudo، فاطلب من المسؤول تثبيت الأداة، أو تحقق من توفر الأمر ss.

لا تُثبَّت netstat افتراضياً في كثير من أنظمة Linux الحديثة، ويُوصى باستخدام ss من حزمة iproute2 لتشخيص الاتصالات. ومع ذلك، قد تظل netstat مفيدة عند التعامل مع إرشادات وبيئات قديمة.

كيف تفحص الاتصالات النشطة؟

لعرض اتصالات TCP دون المقابس التي تنتظر اتصالات جديدة، نفّذ:

sudo netstat -tnp

يختار الخيار -t بروتوكول TCP، ويعرض -n العناوين والمنافذ بصيغة رقمية دون تحويلها إلى أسماء، بينما يضيف -p معلومات العملية. يتيح sudo أيضاً عرض بيانات العمليات التابعة لمستخدمين آخرين؛ وقد لا تتوفر بعض المعلومات دون الصلاحيات المناسبة.

تجد حالة الاتصال في العمود State. تعني ESTABLISHED أن الاتصال قائم، وSYN_SENT أن هناك محاولة لإنشائه، أما TIME_WAIT فهي حالة تلي انتهاء الاتصال، يحتفظ النظام خلالها ببياناته لبعض الوقت. ظهور TIME_WAIT لا يعني بحد ذاته وجود عطل.

إذا أردت عرض اتصالات TCP القائمة فقط، فيمكنك تصفية النتائج:

sudo netstat -tnp | grep ESTABLISHED

يحتوي العمود Local Address على العنوان والمنفذ المحليين، بينما يحتوي Foreign Address على عنوان الطرف الآخر ومنفذه. لا ينشئ UDP اتصالات بالطريقة نفسها التي يستخدمها TCP، لذا لا تظهر لمقابسه حالة مماثلة لـ ESTABLISHED. لفحص هذه المقابس، استخدم sudo netstat -unp.

كيف تحدد البرامج التي تستمع على المنافذ؟

الأمر الأكثر فائدة عملياً لفحص خدمات الشبكة هو:

sudo netstat -tulnp

يحصر الخيار -l النتائج في المقابس التي تستمع، ويضيف -u مقابس UDP إلى النتائج. في حالة TCP سترى الحالة LISTEN؛ أما في حالة UDP فالمقصود مقابس تستقبل رزم البيانات، وليس الاستماع لاتصالات بالمعنى المستخدم في TCP.

قد يبدو سطر مبسّط من النتائج كما يلي:

tcp  0  0  127.0.0.1:8080  0.0.0.0:*  LISTEN  2451/python3

يعني ذلك أن العملية python3 ذات المعرّف PID 2451 تستمع على المنفذ 8080، ولكن على واجهة الاسترجاع المحلية فقط. وPID هو معرّف العملية الذي يتيح فحصها بمزيد من التفصيل، مثلاً باستخدام الأمر ps -p 2451 -f.

عنوان الاستماع مهم:

لا تعتبر العنوان 0.0.0.0:* في العمود Foreign Address عنوان عميل بعيد. فعند ظهوره في سطر مقبس يستمع، يعني أن الطرف الآخر غير محدد.

مثال: تطبيق لا يستطيع استخدام المنفذ 8080

إذا أبلغ التطبيق بأن المنفذ 8080 قيد الاستخدام، فافحص مقابس TCP التي تستمع:

sudo netstat -tlnp | grep ':8080 '

اقرأ PID واسم البرنامج، ثم افحص العملية بالأمر ps -p PID -f، مع استبدال PID بالرقم الذي وجدته. حدد ما إذا كانت العملية نسخة سابقة من تطبيقك أم خدمة تحتاج إليها. بعد ذلك فقط، أوقف البرنامج المعني بالطريقة المعتادة لإيقافه، أو اختر منفذاً آخر؛ لا تُنهِ عملية مجهولة لمجرد أنها تمنع تشغيل تطبيقك.

إذا لم تتوفر netstat، يمكنك إجراء فحص مشابه باستخدام:

sudo ss -tulnp

عند مواجهة مشكلة في الوصول من حاسوب آخر، تحقق أولاً من عنوان الاستماع والعملية، ثم افحص الجدار الناري ومسار الشبكة. يساعد هذا الترتيب على التمييز بين تعطل التطبيق ومشكلة الوصول إلى منفذه.

اقرأ أيضًا

تعرّف على كيفية معالجة PHP-FPM لطلبات PHP، والفرق بينه وبين خادم الويب، وكيفية ضبط عملياته وفق حركة الزيارات وموارد الاستضافة.
تعرّف إلى BIND، برنامج خادم DNS مفتوح المصدر، وأدواره في خدمة النطاقات، ومتطلبات تأمينه، ومتى تختار تشغيله بنفسك أو خدمة مُدارة.
تعرّف إلى سجل REGON ورقم التعريف فيه في بولندا، والفرق بينه وبين NIP وKRS، وكيفية التحقق من بيانات المنشآت وحدود ما يثبته السجل.