إتقان أمر Netstat في لينكس: من الأساسيات إلى مراقبة الشبكة المتقدمة
المقدمة
أمر netstat
(إحصائيات الشبكة) هو واحد من أهم أدوات الشبكات في مجموعة أدوات مديري أنظمة لينكس. توفر هذه الأداة المتعددة الاستخدامات من سطر الأوامر رؤية شاملة للاتصالات الشبكية، وجداول التوجيه، وإحصائيات الواجهات، ومعلومات أخرى حيوية تتعلق بالشبكة.
ما هو netstat؟
netstat
هو أداة شبكة من سطر الأوامر تعرض معلومات متنوعة تتعلق بالشبكة، بما في ذلك:
- اتصالات الشبكة (الواردة والصادرة)
- جداول التوجيه
- إحصائيات واجهة الشبكة
- اتصالات التمويه
- عضويات البث المتعدد
- إحصائيات البروتوكولات
لماذا هو مهم
يعتمد مدراء الأنظمة ومهندسو الشبكات على netstat
للعديد من المهام الحرجة:
- استكشاف مشكلات الشبكة - تحديد مشاكل الاتصال بسرعة واختناقات الشبكة
- مراقبة الأمان - اكتشاف الاتصالات الشبكية غير المصرح بها والأنشطة المشبوهة
- تحليل الأداء - مراقبة أنماط حركة مرور الشبكة وإحصائيات الواجهة
- تدقيق النظام - مراجعة الخدمات النشطة والمنافذ المفتوحة
تاريخ موجز
كان أمر netstat
جزءًا من مجموعة أدوات الشبكات TCP/IP منذ الأيام الأولى لأنظمة Unix. بينما نشأ في BSD Unix، فقد تطور ليصبح أداة قياسية عبر أنظمة التشغيل الشبيهة بـ Unix، بما في ذلك لينكس. على الرغم من اعتباره "مُهملًا" لصالح أدوات أحدث مثل ss
، إلا أن netstat
لا يزال مستخدمًا على نطاق واسع بسبب:
- الألفة بين مديري الأنظمة
- التوفر الواسع عبر أنظمة Unix الشبيهة
- مجموعة الميزات الغنية وخيارات الإخراج التفصيلية
- الوثائق الشاملة ودعم المجتمع
الصيغة الأساسية والاستخدام
تنسيق الأمر
الصيغة الأساسية لأمر netstat هي:
netstat [options]
يمكن استخدام الأمر مع خيارات مختلفة لتخصيص الإخراج بناءً على احتياجاتك. بدون أي خيارات، سيعرض netstat قائمة بالمآخذ المفتوحة.
الخيارات والعلامات الشائعة
إليك أكثر الخيارات استخدامًا:
الخيار | الوصف |
---|---|
-a | يعرض جميع المنافذ المستمعة والاتصالات النشطة |
-t | يعرض اتصالات TCP |
-u | يعرض اتصالات UDP |
-n | يعرض العناوين الرقمية بدلاً من حل المضيفين والمنافذ |
-l | يعرض فقط المآخذ المستمعة |
-p | يعرض PID واسم البرنامج |
-r | يعرض جدول التوجيه |
-i | يعرض إحصائيات واجهة الشبكة |
-s | يعرض إحصائيات البروتوكولات |
أمثلة أساسية
- عرض جميع الاتصالات النشطة
netstat -a
- عرض جميع اتصالات TCP
netstat -at
- عرض المنافذ المستمعة مع معلومات البرنامج
sudo netstat -tulnp
تظهر هذه المجموعة الشائعة:
-t
: اتصالات TCP-u
: اتصالات UDP-l
: فقط المنافذ المستمعة-n
: عناوين رقمية-p
: معلومات البرنامج
- التحقق من جدول التوجيه
netstat -r
- عرض إحصائيات الواجهة
netstat -i
فهم الإخراج
يتضمن إخراج netstat النموذجي عدة أعمدة:
- Proto: البروتوكول (TCP، UDP)
- Recv-Q: البيانات المتراكمة للاستقبال
- Send-Q: البيانات المتراكمة للإرسال
- Local Address: نقطة النهاية المحلية للاتصال
- Foreign Address: نقطة النهاية البعيدة للاتصال
- State: حالة الاتصال (LISTEN، ESTABLISHED، إلخ)
مثال على الإخراج عند استخدام netstat -tan
:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.5:22 192.168.1.100:52614 ESTABLISHED
الميزات الرئيسية والخيارات
خيارات العرض
قائمة بجميع الاتصالات
يوفر أمر netstat طرقًا مختلفة لقائمة الاتصالات الشبكية بناءً على احتياجاتك المحددة:
- عرض جميع البروتوكولات مع العناوين الرقمية
netstat -an
- عرض معلومات موسعة
netstat -ae
يضيف هذا معلومات إضافية مثل المستخدم وinode
- عرض معلومات المؤقت
netstat -o
يضيف معلومات التوقيت المفيدة لاستكشاف الأخطاء
عرض محدد للبروتوكول
- TCP فقط
# عرض جميع اتصالات TCP بما في ذلك المنافذ المستمعة
netstat -at
# عرض المنافذ المستمعة TCP فقط
netstat -lt
- UDP فقط
# عرض جميع اتصالات UDP
netstat -au
# عرض المنافذ المستمعة UDP فقط
netstat -lu
- مآخذ النطاق Unix
# عرض مآخذ النطاق Unix
netstat -x
خيارات تنسيق الإخراج
العرض الرقمي
# إخراج رقمي كامل (بدون حل الأسماء)
netstat -n
# دمج مع خيارات أخرى
netstat -ant # اتصالات TCP مع عناوين رقمية
فوائد العرض الرقمي:
- تنفيذ أسرع
- لا عمليات بحث DNS
- أكثر موثوقية في حالة مشاكل DNS
عرض معلومات موسعة
# عرض معلومات العملية
sudo netstat -p
# عرض معلومات المستخدم والعملية
sudo netstat -ep
# عرض إحصائيات واجهة الشبكة مع معلومات موسعة
netstat -ie
عرض مستمر
# تحديث كل 2 ثانية
netstat -c
# دمج مع خيارات أخرى للمراقبة المستمرة
netstat -ct # مراقبة TCP المستمرة
عرض الإحصائيات
- إحصائيات البروتوكول
# عرض إحصائيات ملخصة لجميع البروتوكولات
netstat -s
# عرض إحصائيات TCP فقط
netstat -st
# عرض إحصائيات UDP فقط
netstat -su
- إحصائيات الواجهة
# عرض إحصائيات الواجهة
netstat -i
# عرض معلومات الواجهة الموسعة
netstat -ie
مثال على إخراج إحصائيات الواجهة:
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 158426 0 0 0 88573 0 0 0 BMRU
lo 65536 24846 0 0 0 24846 0 0 0 LRU
حيث:
- RX: إحصائيات الاستقبال
- TX: إحصائيات الإرسال
- OK: حزم ناجحة
- ERR: عدد الأخطاء
- DRP: حزم مفقودة
- OVR: أحداث تجاوز
حالات الاستخدام الشائعة
استكشاف الشبكة
التحقق من المنافذ المفتوحة
- البحث عن جميع المنافذ المفتوحة على النظام
sudo netstat -tulpn | grep LISTEN
يساعد هذا الأمر في تحديد:
- الخدمات التي تعمل
- المنافذ التي تستخدمها
- العمليات التي تمتلك هذه المنافذ
- التحقق مما إذا كان منفذ معين قيد الاستخدام
sudo netstat -tulpn | grep ":80" # التحقق من خادم الويب
sudo netstat -tulpn | grep ":3306" # التحقق من MySQL
تحديد الاتصالات النشطة
- مراقبة الاتصالات الحالية
# عرض جميع الاتصالات القائمة
netstat -nat | grep ESTABLISHED
# عد الاتصالات لكل عنوان IP
netstat -nat | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
- تتبع حالات الاتصال
# عرض توزيع حالات الاتصال
netstat -ant | awk '{print $6}' | sort | uniq -c
مراقبة حركة مرور الشبكة
- تحليل حركة مرور الواجهة
# مراقبة إحصائيات الواجهة في الوقت الحقيقي
netstat -i
watch -n 1 "netstat -i"
- المراقبة المحددة للبروتوكول
# مراقبة إحصائيات حركة مرور TCP
netstat -st
# مراقبة إحصائيات حركة مرور UDP
netstat -su
تحليل الأمان
العثور على اتصالات مشبوهة
- اكتشاف المنافذ غير العادية
# قائمة بجميع المنافذ المستمعة غير القياسية
sudo netstat -tulpn | grep -v ":22\|:80\|:443"
- التحقق من أنماط الاتصال المشبوهة
# البحث عن اتصالات من IPs غير متوقعة
netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn
اكتشاف عمليات مسح المنافذ
# البحث عن محاولات اتصال متعددة
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
تدقيق النظام
- التحقق من الخدمات
# التحقق من العمليات التي تستمع على أي منافذ
sudo netstat -tulpn | grep LISTEN | sort -k 4
- تسجيل الاتصالات
# إنشاء سجل بسيط للاتصالات
while true; do
date >> connection_log.txt
netstat -ant >> connection_log.txt
sleep 60
done
- مراقبة استخدام الموارد
# مراقبة عدد الاتصالات لكل خدمة
netstat -ant | grep ESTABLISHED | awk '{print $4}' | cut -d: -f2 | sort | uniq -c
سيناريوهات استكشاف الأخطاء الشائعة
- مشكلات خادم الويب
# التحقق من اتصالات خادم الويب
sudo netstat -ant | grep ":80\|:443" | awk '{print $6}' | sort | uniq -c
- مشكلات اتصال قاعدة البيانات
# مراقبة اتصالات قاعدة البيانات (مثال MySQL)
sudo netstat -ant | grep :3306 | awk '{print $6}' | sort | uniq -c
- تحليل خادم البريد
# التحقق من اتصالات خادم البريد
sudo netstat -ant | grep ":25\|:465\|:587" | awk '{print $6}' | sort | uniq -c
الاستخدام المتقدم
الجمع مع أوامر أخرى
استخدام مع grep و awk
- تصفية وتحليل معقد
# عد الاتصالات حسب الحالة والمنفذ
netstat -ant | awk '{print $6, $4}' | sort | uniq -c | sort -rn
# مراقبة اتصالات خدمة معينة على مر الزمن
watch -n 1 'netstat -ant | grep ":80" | wc -l'
- تحليل متقدم للاتصالات
# إنشاء ملخص للاتصالات
netstat -ant | \
awk '{ip[$5]++} END {for (i in ip) print ip[i],i}' | \
sort -nr | head -n 10
توصيل بأدوات أخرى
# استخدام مع tee للتسجيل
netstat -ant | tee network_status.log
# استخدام مع xargs لإدارة العمليات
netstat -tulpn | grep LISTEN | awk '{print $7}' | cut -d/ -f1 | xargs ps -f
سكربتات وأتمتة
سكربت مراقبة أساسي
#!/bin/bash
LOG_FILE="/var/log/network_monitor.log"
monitor_connections() {
echo "=== تقرير حالة الشبكة ===" >> $LOG_FILE
date >> $LOG_FILE
echo "الاتصالات النشطة:" >> $LOG_FILE
netstat -ant | grep ESTABLISHED | wc -l >> $LOG_FILE
echo "المنافذ المستمعة:" >> $LOG_FILE
netstat -tulpn | grep LISTEN >> $LOG_FILE
echo "=========================" >> $LOG_FILE
}
# تشغيل كل 5 دقائق
while true; do
monitor_connections
sleep 300
done
سكربت تحليل متقدم
#!/bin/bash
analyze_network() {
echo "=== تحليل الشبكة ==="
echo -e "\nأفضل 10 اتصالات IP:"
netstat -ant | grep ESTABLISHED | \
awk '{print $5}' | cut -d: -f1 | \
sort | uniq -c | sort -rn | head -n 10
echo -e "\nحالات الاتصال:"
netstat -ant | awk '{print $6}' | \
sort | uniq -c | sort -rn
echo -e "\nاستخدام المنافذ:"
netstat -ant | awk '{print $4}' | \
cut -d: -f2 | sort | uniq -c | sort -rn | head -n 10
}
# حفظ إلى ملف مع الطابع الزمني
analyze_network | tee -a "network_analysis_$(date +%Y%m%d_%H%M%S).log"
مراقبة الأداء
تتبع استخدام الموارد
- تأثير CPU والذاكرة
# مراقبة استخدام netstat الخاص به
while true; do
ps aux | grep netstat | grep -v grep
sleep 1
done
- أداء واجهة الشبكة
#!/bin/bash
# مراقبة تدفق الواجهة
INTERVAL=1
INTERFACE="eth0"
while true; do
R1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
T1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
sleep $INTERVAL
R2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
T2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RBPS=$(( ($R2 - $R1) / $INTERVAL ))
TBPS=$(( ($T2 - $T1) / $INTERVAL ))
echo "واجهة $INTERFACE:"
echo "RX: $(($RBPS/1024)) KB/s"
echo "TX: $(($TBPS/1024)) KB/s"
echo "------------------------"
done
حلول مراقبة طويلة الأجل
#!/bin/bash
# إنشاء تقرير إحصائيات الشبكة كل ساعة
LOGDIR="/var/log/netstat_reports"
mkdir -p $LOGDIR
generate_report() {
TIMESTAMP=$(date +%Y%m%d_%H)
REPORT="$LOGDIR/netstat_report_$TIMESTAMP.log"
echo "تقرير الشبكة - $(date)" > $REPORT
echo "=========================" >> $REPORT
echo "ملخص الاتصال:" >> $REPORT
netstat -s >> $REPORT
echo "إحصائيات الواجهة:" >> $REPORT
netstat -i >> $REPORT
echo "الاتصالات الحالية:" >> $REPORT
netstat -ant >> $REPORT
}
# تشغيل توليد التقرير
generate_report
نصائح التكامل
- الجمع مع مراقبة النظام
# إضافة إلى سكربتات مراقبة النظام
if [ $(netstat -ant | grep ESTABLISHED | wc -l) -gt 100 ]; then
echo "تم الكشف عن عدد اتصالات مرتفع" | mail -s "تنبيه الشبكة" [email protected]
fi
- وظائف التقارير المخصصة
network_summary() {
local port="$1"
echo "الاتصالات على المنفذ $port:"
netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}
# الاستخدام: network_summary 80
بدائل لـ netstat
أمر ss
ss
(إحصائيات المآخذ) هو البديل الحديث لـ netstat في أنظمة لينكس. بشكل عام، هو أسرع وأكثر ثراءً بالميزات من netstat.
المزايا الرئيسية لـ ss
- تنفيذ أسرع، خاصة على الأنظمة ذات الاتصالات العديدة
- معلومات مآخذ أكثر تفصيلًا
- دعم أفضل للبروتوكولات الأحدث
- استخدام أقل لموارد النظام
المقارنة مع netstat
# أمر netstat مقابل ss المعادل
# قائمة بجميع الاتصالات
netstat -a
ss
# عرض المنافذ TCP المستمعة
netstat -tln
ss -tln
# عرض معلومات العملية
netstat -p
ss -p
# عرض الإحصائيات
netstat -s
ss -s
مثال على استخدام ss
# عرض معلومات المآخذ التفصيلية
ss -i
# عرض معلومات المؤقت
ss -o
# عرض استخدام الذاكرة
ss -m
# تصفية حسب الحالة
ss state established
# تصفية حسب المنفذ
ss sport = :80
بدائل حديثة
lsof (قائمة الملفات المفتوحة)
# عرض اتصالات الشبكة
lsof -i
# عرض المنافذ المستمعة
lsof -i -P -n | grep LISTEN
# عرض الاتصالات القائمة
lsof -i | grep ESTABLISHED
nmap
# مسح المنافذ المفتوحة
nmap localhost
# مسح تفصيلي للمنافذ
nmap -sV localhost
iptraf-ng
- مراقب حركة مرور IP في الوقت الحقيقي
- إحصائيات بروتوكول تفصيلية
- إحصائيات الواجهة
- مراقب محطات LAN
متى تستخدم ماذا
استخدم netstat عندما:
- تعمل على أنظمة قديمة
- تحتاج إلى توافق عبر الأنظمة
- تتبع الوثائق المعتمدة
- تقوم بتشخيصات الشبكة البسيطة
استخدم ss عندما:
- تعمل على أنظمة لينكس الحديثة
- تحتاج إلى تنفيذ أسرع
- تتعامل مع العديد من الاتصالات
- تتطلب معلومات مآخذ تفصيلية
استخدم lsof عندما:
- تحتاج إلى رؤية معلومات وصفات الملفات
- تريد ربط اتصالات الشبكة بالعمليات
- استكشاف مشكلات التطبيقات
استخدم nmap عندما:
- تقوم بإجراء تدقيقات أمان
- تحتاج إلى مسح تفصيلي للمنافذ
- تحليل خدمات الشبكة
دليل الهجرة
الانتقال من netstat إلى ss
أمر netstat | معادل ss | الوصف |
---|---|---|
netstat -t | ss -t | عرض اتصالات TCP |
netstat -u | ss -u | عرض اتصالات UDP |
netstat -l | ss -l | عرض المآخذ المستمعة |
netstat -p | ss -p | عرض معلومات العملية |
netstat -n | ss -n | عدم حل الأسماء |
netstat -a | ss | عرض جميع المآخذ |
netstat -r | ip route | عرض جدول التوجيه |
مثال على هجرة السكربت
# سكربت netstat القديم
#!/bin/bash
netstat -tulpn | grep LISTEN > listening_ports.log
# المعادل الجديد لـ ss
#!/bin/bash
ss -tulpn | grep LISTEN > listening_ports.log
نصائح اختيار الأدوات
- اعتبارات الأداء
- للأنظمة الكبيرة: استخدم
ss
- للفحوصات الأساسية: تعمل أي أداة بشكل جيد
- للتحليل التفصيلي: دمج أدوات متعددة
- مشكلات التوافق
# تحقق مما إذا كان ss متاحًا
if command -v ss >/dev/null 2>&1; then
ss -tulpn
else
netstat -tulpn
fi
- متطلبات الميزات
- المراقبة الأساسية: netstat/ss
- تحليل الأمان: nmap
- ربط العمليات: lsof
- المراقبة في الوقت الحقيقي: iptraf-ng
أفضل الممارسات والنصائح
اعتبارات الأداء
تحسين استخدام الأوامر
- استخدم الإخراج الرقمي عند الإمكان
# أبطأ (مع حل DNS)
netstat -ta
# أسرع (بدون حل DNS)
netstat -tan
- تحديد حجم الإخراج
# بدلاً من عرض جميع الاتصالات
netstat -a
# تصفية لمعلومات محددة
netstat -an | grep ':80'
- تجنب الاستطلاع المستمر
# غير موصى به للأنظمة المزدحمة
netstat -c
# نهج أفضل مع فترة زمنية محددة
while true; do
netstat -an | grep ESTABLISHED
sleep 5
done
الأخطاء الشائعة
مشكلات استخدام الموارد
- المشكلة: استخدام CPU مفرط أثناء حل الأسماء
# أمر مشكل
watch -n 1 'netstat -ta'
# بديل أفضل
watch -n 1 'netstat -tan'
مشكلات الأذونات
- المشكلة: عدم وجود معلومات العملية
# سيظهر معلومات غير مكتملة
netstat -p
# الاستخدام الصحيح
sudo netstat -p
تفسير الإخراج
- المشكلة: سوء تفسير حالات الاتصال
# سوء الفهم الشائع مع TIME_WAIT
netstat -ant | grep TIME_WAIT
# تحليل أفضل مع السياق
netstat -ant | awk '{print $6}' | sort | uniq -c
نصائح للاستخدام اليومي
إنشاء اختصارات مفيدة
# أضف إلى ~/.bashrc
alias ns='netstat -tulpn'
alias nsc='netstat -ant | grep ESTABLISHED'
alias nsl='sudo netstat -tulpn | grep LISTEN'
فحوصات أمان سريعة
# التحقق من المنافذ المستمعة غير العادية
check_ports() {
echo "المنافذ المعروفة:"
sudo netstat -tulpn | grep -E ':22|:80|:443'
echo -e "\nالمنافذ غير المعروفة:"
sudo netstat -tulpn | grep -vE ':22|:80|:443'
}
قوالب المراقبة
# قالب مراقبة الاتصالات
monitor_connections() {
local port=$1
local threshold=$2
count=$(netstat -an | grep ":$port" | grep ESTABLISHED | wc -l)
if [ $count -gt $threshold ]; then
echo "تنبيه: $count اتصالات على المنفذ $port تتجاوز الحد المسموح به $threshold"
fi
}
# الاستخدام: monitor_connections 80 100
الوثائق والتسجيل
إنشاء سجلات مفيدة
#!/bin/bash
# مسجل حالة الشبكة
log_network_status() {
local logfile="/var/log/network_status.log"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
{
echo "=== حالة الشبكة في $timestamp ==="
echo "المنافذ المستمعة:"
netstat -tulpn | grep LISTEN
echo "الاتصالات الحالية:"
netstat -ant | awk '{print $6}' | sort | uniq -c
echo "=================================="
} >> "$logfile"
}
إجراءات التشغيل القياسية
# قالب للفحوصات المنتظمة
daily_network_check() {
echo "1. التحقق من المنافذ المستمعة..."
sudo netstat -tulpn | grep LISTEN
echo "2. التحقق من الاتصالات القائمة..."
netstat -ant | grep ESTABLISHED | wc -l
echo "3. التحقق من حالات الاتصال..."
netstat -ant | awk '{print $6}' | sort | uniq -c
echo "4. التحقق من إحصائيات الواجهة..."
netstat -i
}
إرشادات استكشاف الأخطاء
- مشكلات الاتصال
connection_troubleshoot() {
local port=$1
echo "=== استكشاف الأخطاء في الاتصال للمنفذ $port ==="
echo "1. التحقق مما إذا كان المنفذ يستمع:"
sudo netstat -tulpn | grep ":$port"
echo "2. التحقق من الاتصالات النشطة:"
netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
echo "3. التحقق من حالات الاتصال:"
netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}
- مراقبة موارد النظام
resource_check() {
echo "=== فحص موارد النظام ==="
echo "1. إجمالي الاتصالات:"
netstat -ant | wc -l
echo "2. الاتصالات لكل IP:"
netstat -ant | grep ESTABLISHED | \
awk '{print $5}' | cut -d: -f1 | \
sort | uniq -c | sort -nr | head -5
echo "3. استخدام الذاكرة للعمليات الشبكية:"
ps aux | grep -E 'netstat|ss' | grep -v grep
}
الأسئلة الشائعة (FAQ)
س: لماذا لا أستطيع رؤية معلومات العملية (PID)؟
ج: عادة ما يكون ذلك بسبب الأذونات. قم بتشغيل الأمر مع sudo:
sudo netstat -tulpn
تتطلب خيار -p صلاحيات الجذر لعرض معلومات العملية.
س: ما الفرق بين حالات LISTEN و ESTABLISHED؟
ج:
- LISTEN: تشير إلى أن خدمة تستمع على هذا المنفذ، في انتظار الاتصالات
- ESTABLISHED: تمثل جلسة نشطة ومتصلة حاليًا
س: كيف يمكنني التحقق من الاتصالات لمنفذ معين؟
ج: يمكنك استخدام grep لتصفية الاتصالات الخاصة بالمنفذ:
# تحقق من جميع الاتصالات على المنفذ 80
netstat -an | grep ":80"
# تحقق من المنافذ المستمعة فقط
netstat -tunl | grep ":80"
س: لماذا يعمل أمر netstat ببطء؟
ج: سببان رئيسيان:
1. حل DNS - استخدم خيار -n لتجنب حل الأسماء
2. عدد كبير جدًا من الاتصالات - استخدم التصفية أو اعتبر الانتقال إلى ss
# مثال على أمر أسرع
netstat -tan | grep ESTABLISHED
س: هل سيؤثر netstat على أداء النظام؟
ج: يمكن أن يؤثر الاستطلاع المتكرر على الأداء. أفضل الممارسات:
1. زيادة فترات الاستطلاع
2. استخدام التصفية لتقليل الإخراج
3. اعتبر ss للأنظمة الكبيرة
4. تجنب الوضع المستمر (-c) على الأنظمة المزدحمة
س: كيف يمكنني تحديد التطبيق الذي يستخدم منفذًا معينًا؟
ج: استخدم هذه الأوامر:
# عرض العملية التي تستخدم المنفذ 80
sudo netstat -tulpn | grep ":80"
# بديل باستخدام lsof
sudo lsof -i :80
س: كيف يمكنني مراقبة حالات الاتصال؟
ج: عدة طرق:
# عد الاتصالات حسب الحالة
netstat -ant | awk '{print $6}' | sort | uniq -c
# مراقبة الاتصالات القائمة
watch -n 1 'netstat -ant | grep ESTABLISHED | wc -l'
س: كيف يمكنني التحقق من الاتصالات المشبوهة؟
ج: ابحث عن:
1. المنافذ غير العادية:
netstat -tulpn | grep -vE ':22|:80|:443'
2. عدد كبير من الاتصالات من IP واحد:
netstat -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
س: كيف يمكنني اكتشاف محاولات مسح المنافذ؟
ج: راقب اتصالات SYN_RECV:
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
س: ما الفرق بين خيارات -t و -u؟
ج:
-t : يعرض اتصالات TCP فقط
-u : يعرض اتصالات UDP فقط
يمكنك دمجها:
netstat -tu : يعرض كل من TCP و UDP
س: كيف يمكنني حفظ إخراج netstat إلى ملف؟
ج: عدة طرق:
# إخراج أساسي إلى ملف
netstat -ant > network_status.log
# مع الطابع الزمني
(date; netstat -ant) > network_status.log
# تسجيل مستمر
while true; do
netstat -ant >> network_log.txt
sleep 300
done
س: ماذا يعني "العنوان مستخدم بالفعل" في إخراج netstat؟
ج: يشير ذلك إلى أن منفذًا قيد الاستخدام بالفعل من قبل عملية أخرى. للعثور عليه:
sudo netstat -tulpn | grep "<port_number>"
س: لماذا أرى العديد من الاتصالات في حالة TIME_WAIT؟
ج: TIME_WAIT أمر طبيعي بعد إغلاق الاتصالات. ومع ذلك، قد تشير العديد من الحالات إلى:
1. دوران عالي للاتصالات
2. مشكلات محتملة في الشبكة
3. التطبيق لا يعيد استخدام الاتصالات
راقب باستخدام:
netstat -ant | grep TIME_WAIT | wc -l