ما هي netstat وكيف تفحص اتصالات الشبكة؟
الكاتب: فريق تحرير Domeny.ForSale تاريخ النشر
باختصار: 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, Ubuntu | sudo apt update && sudo apt install net-tools |
| Fedora | sudo dnf install net-tools |
| Arch Linux | sudo pacman -S net-tools |
| openSUSE | sudo 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.
عنوان الاستماع مهم:
127.0.0.1:8080— الخدمة متاحة عبر عنوان IPv4 المحلي، وليست متاحة مباشرةً من حواسيب أخرى.0.0.0.0:8080— الاستماع على جميع عناوين IPv4 المحلية.:::8080— الاستماع على جميع عناوين IPv6 المحلية؛ ويعتمد دعم IPv4 على إعدادات النظام والتطبيق.
لا تعتبر العنوان 0.0.0.0:* في العمود Foreign Address عنوان عميل بعيد. فعند ظهوره في سطر مقبس يستمع، يعني أن الطرف الآخر غير محدد.
مثال: تطبيق لا يستطيع استخدام المنفذ 8080
إذا أبلغ التطبيق بأن المنفذ 8080 قيد الاستخدام، فافحص مقابس TCP التي تستمع:
sudo netstat -tlnp | grep ':8080 '
اقرأ PID واسم البرنامج، ثم افحص العملية بالأمر ps -p PID -f، مع استبدال PID بالرقم الذي وجدته. حدد ما إذا كانت العملية نسخة سابقة من تطبيقك أم خدمة تحتاج إليها. بعد ذلك فقط، أوقف البرنامج المعني بالطريقة المعتادة لإيقافه، أو اختر منفذاً آخر؛ لا تُنهِ عملية مجهولة لمجرد أنها تمنع تشغيل تطبيقك.
إذا لم تتوفر netstat، يمكنك إجراء فحص مشابه باستخدام:
sudo ss -tulnp
عند مواجهة مشكلة في الوصول من حاسوب آخر، تحقق أولاً من عنوان الاستماع والعملية، ثم افحص الجدار الناري ومسار الشبكة. يساعد هذا الترتيب على التمييز بين تعطل التطبيق ومشكلة الوصول إلى منفذه.
