
إذا كنت مثلي، فأنت ما زلت تتمسك بالأوامر التي ستصبح قريبًا غير مدعومة مثل 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
واستفد من ميزاته القوية لتعزيز مهام إدارة الشبكة الخاصة بك.