كيفية استخدام أمر ss: دليل شامل

استخدام أمر ss في لينكس Debian Ubuntu centos almalinux

إذا كنت مثلي، فأنت ما زلت تتمسك بالأوامر التي ستصبح قريبًا غير مدعومة مثل ifconfig و nslookup و netstat. البدائل الجديدة هي ip و dig و ss على التوالي. حان الوقت (على مضض) للتخلي عن الأدوات القديمة والتوجه نحو المستقبل مع ss. يستحق أمر ip الذكر هنا لأن جزءًا من وظائف netstat قد تم استبداله بـ ip. يغطي هذا المقال الأساسيات لأمر ss حتى لا تضطر إلى البحث عنها (دون قصد للتورية).

مقدمة إلى ss

رسميًا، ss (إحصائيات المقابس) هو أداة سطر أوامر تستخدم لفحص المقابس. إنه البديل الحديث لأداة netstat القديمة. الميزة الرئيسية لـ ss على netstat هي قدرته على توفير معلومات أكثر تفصيلاً وأكثر شمولاً عن اتصالات الشبكة، مما يجعله أداة أساسية لمسؤولي ومهندسي الشبكات.

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

الاستخدام الأساسي

عرض مقابس TCP

أحد الاستخدامات الشائعة لـ netstat هو عرض مقابس TCP. إليك كيفية القيام بذلك باستخدام كل من netstat و ss:

باستخدام netstat:

$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 rhel8:ssh               khess-mac:62036         ESTABLISHED

باستخدام ss:

$ ss -t
State         Recv-Q          Send-Q                    Local Address:Port                   Peer Address:Port
ESTAB         0               0                          192.168.1.65:ssh                    192.168.1.94:62036

يوفر الناتج من كلا الأمرين معلومات مماثلة، مظهرًا اتصالات TCP النشطة.

حل أسماء المضيفين

لمحاكاة ناتج netstat بشكل أفضل، يمكنك استخدام الخيار -r (حل) في ss، والذي يحل أسماء المضيفين:

$ ss -tr
State            Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port
ESTAB            0                  0                                       rhel8:ssh                             khess-mac:62036

عرض أرقام المنافذ

إذا كنت تفضل رؤية أرقام المنافذ بدلاً من أسماء خدماتها، استخدم الخيار -n:

$ ss -ntr
State            Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port
ESTAB            0                  0                                       rhel8:22                              khess-mac:62036

عرض جميع المقابس

لعرض جميع المقابس، بما في ذلك المستمعة وغير المستمعة، استخدم الخيار -a:

$ ss -a
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

يسرد هذا الأمر جميع المقابس في حالات مختلفة.

التصفية حسب الحالة

يمكنك تصفية الناتج لإظهار المقابس في حالة معينة فقط. على سبيل المثال، لإظهار المقابس المستمعة فقط:

$ ss -l
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
LISTEN      0           128                  [::]:22                           [::]:*

عرض مقابس نطاق Unix

لعرض مقابس نطاق Unix، استخدم الخيار -x:

$ ss -x
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  /run/user/0/systemd/private       * 0
LISTEN      0           128                  /var/lib/sss/pipes/private/sbus-dp_implicit_files.642  * 0

عرض إحصائيات ملخصة

لعرض إحصائيات ملخصة لجميع اتصالات المقابس، استخدم الخيار -s:

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW      1         0         1
UDP      3         2         1
TCP      3         2         1
INET     7         4         3
FRAG     0         0         0

الاستخدام المتقدم

التصفية حسب العنوان والمنفذ

يمكنك تصفية المقابس بناءً على العناوين والمنافذ المحلية أو البعيدة. على سبيل المثال، لعرض جميع المقابس المتصلة بالمنفذ 22:

$ ss -at '( dport = :22 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

للتصفية حسب العنوان المحلي:

$ ss -at '( src = 192.168.1.65 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

الجمع بين المرشحات

يمكنك الجمع بين عدة مرشحات لتنقيح بحثك. على سبيل المثال، لعرض جميع اتصالات TCP إلى المنفذ 22 على عنوان IP محدد:

$ ss -at '( dport = :22 and src = 192.168.1.65 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

عرض حالات الاتصال

لعرض المقابس في حالات محددة مثل ESTABLISHED، LISTEN، أو CLOSE-WAIT:

$ ss state established
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

عرض واجهات الشبكة

لعرض معلومات عن واجهات الشبكة، استخدم الخيار -i:

$ ss -i
Netid     State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port
u_str     ESTAB       0           0                            * 20241                           * 0
         skmem:(r0,rb79377,t0,tb32768,f1348,w0,o0,bl0,d0)

المقارنة مع netstat

عرض عضويات المجموعات

تم نقل بعض وظائف netstat إلى أمر ip. على سبيل المثال، لعرض عضويات المجموعات:

باستخدام netstat:

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
enp0s3          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
enp0s3          1      ff02::1:ffa6:ab3e
enp0s3          1      ff02::1:ff8d:912c
enp0s3          1      ff02::1
enp0s3          1      ff01::1

باستخدام ip:

$ ip maddr
1: lo
    inet  224.0.0.1
    inet6 ff02::1
    inet6 ff01::1
2: enp0s3
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:8d:91:2c
    link  33:33:ff:a6:ab:3e
    inet  224.0.0.1
    inet6 ff02::1:ffa6:ab3e
    inet6 ff02::1:ff8d:912c
    inet6 ff02::1
    inet6 ff01::1

عرض إحصائيات الشبكة

يوفر netstat إحصائيات شبكة مفصلة، والتي يفتقر إليها ss حاليًا:

باستخدام netstat:

$ netstat -s
Ip:
    Forwarding: 2
    6231 total packets received
    2 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    3104 incoming packets delivered
    2011 requests sent out
    243 dropped because of missing route
<مختصر>

باستخدام ss:

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW	 	  1         0         1
UDP	 	  3         2         1
TCP	 	  3         2         1
INET	  7         4         3
FRAG	  0         0         0

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

الأمثلة العملية

مراقبة اتصالات الشبكة

أحد الاستخدامات العملية لأمر ss هو مراقبة اتصالات الشبكة النشطة في الوقت الفعلي. يمكن أن يكون هذا مفيدًا بشكل خاص لاستكشاف مشكلات الشبكة أو التأكد من أن الخدمات تعمل كما هو متوقع.

لمشاهدة الاتصالات النشطة، يمكنك استخدام watch مع ss:

$ watch -n 1 'ss -t -a'

يقوم هذا الأمر بتحديث العرض كل ثانية، مظهرًا لك الحالة الحالية لاتصالات TCP.

التحقق من المنافذ المستمعة

لرؤية المنافذ التي تستمع إليها مختلف الخدمات على نظامك، استخدم:

$ ss -ltn
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port
LISTEN     0      128     0.0.0.0:22           0.0.0.0:*
LISTEN     0      128     [::]:22              [::]:*

يساعد هذا الأمر في تحديد جميع منافذ TCP المستمعة والخدمات المرتبطة بها، وهو مفيد للتأكد من أن الخدمات المطلوبة تعمل.

تشخيص مشاكل الشبكة

عند تشخيص مشاكل الشبكة، يمكن استخدام ss لتصفية الاتصالات بواسطة معايير مختلفة لتحديد المشكلات.

على سبيل المثال، إذا كنت تشك في وجود مشكلة في الاتصالات بخادم معين، يمكنك التصفية حسب العنوان البعيد:

$ ss -t dst 192.168.1.94
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port
ESTAB      0      0       192.168.1.65:ssh     192.168.1.94:62036

يظهر هذا الأمر جميع اتصالات TCP إلى العنوان البعيد المحدد.

تحليل حركة المرور على منافذ محددة

لتحليل حركة المرور على منفذ محدد، مثل المنفذ 80 (HTTP)، يمكنك استخدام:

$ ss -o state established '( dport = :80 or sport = :80 )'
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Timer
ESTAB      0      0       192.168.1.65:49852   93.184.216.34:80   on (5.34/8.74)

يظهر هذا الأمر الاتصالات المستقرة التي تتضمن المنفذ 80، مما يوفر نظرة ثاقبة على حركة مرور الويب.

الانتقال من netstat إلى ss

يمكن أن يكون الانتقال من netstat إلى ss سلسًا إذا فهمت الخيارات والأوامر المكافئة. فيما يلي بعض أوامر netstat الشائعة ومكافئاتها في ss:

عرض إحصائيات واجهة الشبكة

باستخدام netstat:

$ netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   983   0      0      0      879   0      0      0      BMRU
lo         65536  8821  0      0      0      8821  0      0      0      LRU

باستخدام ss:

$ ss -i
Netid     State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port
u_str     ESTAB       0           0                            * 20241                           * 0
         skmem:(r0,rb79377,t0,tb32768,f1348,w0,o0,bl0,d0)

عرض جدول التوجيه

باستخدام netstat:

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG      0   0        0   eth0
192.168.1.0     0.0.0.0         255.255.255.0   U       0   0        0   eth0

باستخدام ip:

$ ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.65

عرض عضويات مجموعات البث المتعدد

باستخدام netstat:

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
enp0s3          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
enp0s3          1      ff02::1:ffa6:ab3e
enp0s3          1      ff02::1:ff8d:912c
enp0s3          1      ff02::1
enp0s3          1      ff01::1

باستخدام ip:

$ ip maddr
1: lo
    inet  224.0.0.1
    inet6 ff02::1
    inet6 ff01::1
2: enp0s3
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:8d:91:2c
    link  33:33:ff:a6:ab:3e
    inet  224.0.0.1
    inet6 ff02::1:ffa6:ab3e
    inet6 ff02::1:ff8d:912c
    inet6 ff02::1
    inet6 ff01::1

عرض إحصائيات بروتوكول الشبكة

باستخدام netstat:

$ netstat -s
Ip:
    Forwarding: 2
    6231 total packets received
    2 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    3104 incoming packets delivered
    2011 requests sent out
    243 dropped because of missing route
<مختصر>

باستخدام ss:

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW	  	  1         0         1
UDP	  	  3         2         1
TCP	  	  3         2         1
INET	  7         4         3
FRAG	  0         0         0

كما ترى، يوفر ss ملخصًا بدلاً من تفصيل مفصل. بينما قد يكون هذا مفيدًا للنظرات العامة السريعة، فقد لا يوفر عمق المعلومات اللازمة للتشخيص الشامل للشبكة.

خلاصة

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

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

لذا، تبنى مستقبل إحصائيات الشبكة مع ss واستفد من ميزاته القوية لتعزيز مهام إدارة الشبكة الخاصة بك.

LEAVE A COMMENT