بلاگ/کاربرد فرمان SS لینوکس
به‌روز شده

کاربرد فرمان SS لینوکس

ابزار ss یا socket statistics، یک فرمان CLI است که برای نمایش آمار شبکه به کار می‌رود. فرمان ss در واقع، یک نسخه ساده‌تر و سریعتر از فرمان «تاریخ‌ مصرف گذشته» CLI است. ss در کنار فرمان ip، ابزارهایی اساسی برای جمع‌اوری اطلاعات شبکه و رفع مشکل آن به شمار می‌روند. در این مطلب، به نحوه استفاده از...

1399/12/253642 بازدید
کاربرد فرمان SS لینوکس
ابزار ss یا socket statistics، یک فرمان CLI است که برای نمایش آمار شبکه به کار می‌رود. فرمان ss در واقع، یک نسخه ساده‌تر و سریعتر از فرمان «تاریخ‌ مصرف گذشته» CLI است. ss در کنار فرمان ip، ابزارهایی اساسی برای جمع‌اوری اطلاعات شبکه و رفع مشکل آن به شمار می‌روند. در این مطلب، به نحوه استفاده از فرمان ss لینوکس خواهیم پرداخت و برخی از رایج‌ترین موارد استفاده آن را مرور خواهیم کرد. با ما همراه باشید.

پیش‌نیازها

  • دسترسی به یک ترمینال یا خط فرمان
  • نصب بسته نرم‌افزاری iproute2
نکته: از فرمان apt-get برای نصب، بروزرسانی یا ارتقای بسته نرم‌افزاری iproute2 استفاده کنید.

مثال‌های فرمان ss لینوکس

نمونه پایه استفاده از فرمان ss بدون هیچ‌گونه پارامتر خاص
php
ss
در خروجی لیسیتی از سوکت‌های دارای ارتباط و بدون دریافت اطلاعات مشاهده خواهید کرد.
خروجی ترمینال فرمان ss
خروجی ترمینال فرمان ss
ستون‌های این خروجی حاوی جزئیات زیر هستند.
  • Netid: نوع سوکت. TCP، UDP، u_str و u_seq معمول‌ترین نوع سوکت‌ها هستند.
  • State: وضعیت سوکت. رایج ترین وضعیت‌ها عبارتند از ESTAB (فعال)، UNCONN (عدم ارتباط) و LISTEN (دریافت اطلاعات).
  • Recv-Q: تعداد بسته‌های داده دریافتی در صف.
  • Send-Q: تعداد بسته‌های داده ارسالی در صف
  • Local address:port: آدرس سیستم محلی و پورت
  • Peer address:port: آدرس سیستم ریموت و پورت
برای داشتن اطلاعات جزئی‌تر می‌توانید برخی گزینه‌ها را به فرمان ss اضافه کنید.
php
ss <options>
یا اینکه می‌توانید گزینه‌ها را به صورت تک به تک وارد کنید.
php
ss <option 1> <option 2> <option 3>
در صورتی که شبکه سرعت پایینی دارد، ابزارهای CLI مختلفی در لینوکس برای این منظور پیش‌بینی شده است.

لیست تمام ارتباط ها

به کمک فرمان زیر می‌توان لیست تمام ارتباط‌های دریافتی و غیر دریافتی را تهیه کنید.
php
ss -a
و یا فرمان زیر:
php
ss --all
خروجی ترمینال فرمان ss -a
خروجی ترمینال فرمان ss -a

لیست سوکت‌های دریافتی

برای اینکه تنها سوکت‌هایی نمایش داده شوند که دریافت داده از آنها انجام می‌شود، از فرمان زیر استفاده کنید.
php
ss -l
و یا:
php
ss --listen
خروجی ترمینال فرمان ss -l
خروجی ترمینال فرمان ss -l

لیست ارتباط های TCP

برای تهیه لیست از ارتباط‌های TCP، گزینه -t را به انتهای فرمان ss لینوکس اضافه کنید.
php
ss -t
البته به جای آن می‌توانید از فرمان زیر نیز استفاده کنید.
php
ss --tcp
خروجی فرمان ss -t
خروجی فرمان ss -t

لیست تمام ارتباط‌های TCP

با ترکیب گزینه‌های -a و -t با فرمان ss موجب می‌شود که در خروجی شاهد لیستی از تمام ارتباط‌های TCP باشیم.
php
ss -at
خروجی ترمینال فرمان ss -at
خروجی ترمینال فرمان ss -at

لیست تمام ارتباط های TCP دریافتی

ترکیب گزینه‌های -l و -t با فرمان ss منجر به نمایش تمام ارتباط‌های TCP دریافتی می‌شود.
php
ss -lt
خروجی ترمینال فرمان ss -lt
خروجی ترمینال فرمان ss -lt

لیست ارتباط های UDP

برای نمایش لیست ارتباط های UDP داریم:
php
ss -u
و یا:
php
ss --udp
خروجی ترمینال فرمان ss -u
خروجی ترمینال فرمان ss -u

لیست تمام ارتباط‌های UDP

برای این منظور از ترکیب گزینه‌های -a و -u با فرمان ss استفاده می‌کنیم.
php
ss -au
خروجی ترمینال فرمان ss -au لینوکس
خروجی ترمینال فرمان ss -au

لیست تمام ارتباط‌های UDP دریافتی

برای تهیه لیست تمام ارتباط های دریافتی UDP از فرمان ss همراه با گزینه‌های -l و -u استفاده می‌کنیم.
php
ss -lu
خروجی ترمینال فرمان ss -lu
خروجی ترمینال فرمان ss -lu

لیست سوکت‌های یونیکس

برای نمایش تمام سوکت‌های خانواده یونیکس داریم:
php
ss -f unix
و یا نسخه اختصاری‌تر این فرمان:
php
ss -x
خروجی ترمینال فرمان ss -x
خروجی ترمینال فرمان ss -x

لیست سوکت‌های خام یا Raw

برای نمایش لیست سوکت‌های خام از فرمان زیر استفاده کنید.
php
ss -w
و یا:
php
ss --raw

لیست ارتباط‌ها با یک آدرس IP خاص

با کمک فرمان زیر یک لیست از ارتباط‌ها با یک IP مقصد خاص نمایش داده می‌شوند.
php
ss dst <address>
به عنوان مثال:
php
ss dst 104.21.3.132
خروجی ترمینال از فرمان ss dst
خروجی ترمینال از فرمان ss dst
به منظور نمایش ارتباط‌ها با یک آدرس منبع خاص، داریم:
php
ss src <addresss>
به عنوان مثال:
php
ss src 192.168.100.2
خروجی ترمینال فرمان ss src
خروجی ترمینال فرمان ss src
نکته: برای نمایش تمام  ارتباط‌ها به یک سیستم لوکال، آدرس IP خود را بررسی کرده و سپس فرمان ss src را اِعمال نمایید.

بررسی شناسه فرآیندها

به منظور نمایش شناسه‌ فرآیندها یا PID، فرمان زیر را تایپ کنید.
php
ss -p
خروجی ترمینال فرمان ss -p
خروجی ترمینال فرمان ss -p

لیست خلاصه آمار به کمک فرمان ss لینوکس

نمایش لیست خلاصه آماری ارتباط‌ها از فرمان زیر استفاده می‌شود.
php
ss -s
خروجی ترمینال فرمان ss -s
خروجی ترمینال فرمان ss -s

لیست ارتباط‌های سوکت IPv4 و IPv6

با استفاده از فرمان زیر و لیست‌کردن ارتباط‌های IPv4/IPv6، به نتایج خلاصه‌تری دست پیدا کنید.
php
ss -4
و یا:
php
ss -6
به عنوان نمونه، برای نمایش لیست تمام ارتباط‌های IPv6 UDP داریم:
php
ss -au6
خروجی ترمینال فرمان ss -au6
خروجی ترمینال فرمان ss -au6

فیلتر کردن ارتباط ها

فرمان ss به شما اجازه می‌دهد که فیلترینگ پیشرفته‌ای برای نتایج داشته باشید و پورت‌ها یا حالت‌های خاص TCP را جستجو کنید.

فیلتر با استفاده از وضعیت‌های TCP

فیلترینگ ارتباط‌های TCP با کمک وضعیت‌های از پیش تعریف شده TCP به شکل زیر صورت می‌گیرد.
php
ss state <name of state>
به عنوان مثال، برای پیدا کردن تمام ارتباط های دریافتی TCP  داریم:
php
ss -t state listening
خروجی ترمینال فرمان ss -t state listening
خروجی ترمینال فرمان ss -t state listening

فیلتر نتایج از طریق شماره پورت

برای فیلترینگ خروجی بر اساس یک شماره یا عنوان پروت خاص از قالب فرمان زیر استفاده کنید.
php
ss <options> dst :<port number or name>
برای مثال:
php
ss dst :5228
خروجی ترمینال فرمان ss dst برای شماره پورت
خروجی ترمینال فرمان ss dst برای شماره پورت
یا می‌توانید از عنوان پورت استفاده کنید:
php
ss dst :https
خروجی ترمینال فرمان ss dst برای عنوان پورت
خروجی ترمینال فرمان ss dst برای عنوان پورت
می‌توانید از ترکیب گزینه‌ها برای فیلترینگ پیشرفته نتایج استفاده کنید. به عنوان نمونه، برای پیدا کردن تمام ارتباط ها با پورت مقصد 5228 یا پورت منبع mysql داریم:
php
ss -a dst :5228 or src :mysql
خروجی ترمینال فرمان ss لینوکس با حالت جستجوی پیشرفته
خروجی ترمینال فرمان ss با حالت جستجوی پیشرفته
نهایتاً بررسی صفحه راهنمای فرمان ss می‌تواند جزئیات بیشتری در اختیار شما قرار دهد.
php
man ss
همچنین برای داشتن اطلاعات فوری از گزینه‌های در دسترس می‌توانید فرمان زیر را تایپ کنید.
php
ss -h

مقایسه فرمان‌های netstat و ss لینوکس

فرمان ss به عنوان یک فرمان جایگزین برای ابزار انقضا یافته netstat درنظر گرفته می‌شود. سرعت بیشتر و گزینه‌های بهتر برای فیلترینگ نتایج که از طریق بسته نرم‌افزاری iproute2 در دسترس قرار می‌گیرند، مطمئناً نسبت به ابزارهای بسته net-tools ترجیح داده می‌شوند. صفحه راهنمای فرمان netstat نیز ss را به عنوان یک گزینه سطح بالاتر درنظر می‌گیرد. البته ابزار netstat هنوز هم برای استفاده در دسترس قرار دارد. با این وجود، فرمان ss لینوکس یک گزینه بهتر و سریعتر است.

جمع‌بندی

ابزار ss با گزینه‌های فیلترینگ هوشمند موجب می شود که در هنگام بروز مشکل، شرایط بهتری در بررسی سوکت‌ها و آمار شبکه داشته باشیم. در واقع، این یکی از ابزارهای ضروری برای هر مدیر سیستم و شبکه‌ای محسوب می‌شود.