ابزار ss یا socket statistics، یک فرمان CLI است که برای نمایش آمار شبکه به کار میرود. فرمان ss در واقع، یک نسخه سادهتر و سریعتر از فرمان «تاریخ مصرف گذشته» CLI است. ss در کنار فرمان ip، ابزارهایی اساسی برای جمعاوری اطلاعات شبکه و رفع مشکل آن به شمار میروند. در این مطلب، به نحوه استفاده از فرمان ss لینوکس خواهیم پرداخت و برخی از رایجترین موارد استفاده آن را مرور خواهیم کرد. با ما همراه باشید.
پیشنیازها
- دسترسی به یک ترمینال یا خط فرمان
- نصب بسته نرمافزاری iproute2
نکته: از فرمان apt-get برای نصب، بروزرسانی یا ارتقای بسته نرمافزاری iproute2 استفاده کنید.
مثالهای فرمان ss لینوکس
نمونه پایه استفاده از فرمان 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 اضافه کنید.
ss <options>
یا اینکه میتوانید گزینهها را به صورت تک به تک وارد کنید.
ss <option 1> <option 2> <option 3>
در صورتی که شبکه سرعت پایینی دارد، ابزارهای CLI مختلفی در لینوکس برای این منظور پیشبینی شده است.
لیست تمام ارتباط ها
به کمک فرمان زیر میتوان لیست تمام ارتباطهای دریافتی و غیر دریافتی را تهیه کنید.
ss -a
و یا فرمان زیر:
ss --all

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

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

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

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

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

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

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

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

خروجی ترمینال فرمان ss -x
لیست سوکتهای خام یا Raw
برای نمایش لیست سوکتهای خام از فرمان زیر استفاده کنید.
ss -w
و یا:
ss --raw
لیست ارتباطها با یک آدرس IP خاص
با کمک فرمان زیر یک لیست از ارتباطها با یک IP مقصد خاص نمایش داده میشوند.
ss dst <address>
به عنوان مثال:
ss dst 104.21.3.132

خروجی ترمینال از فرمان ss dst
به منظور نمایش ارتباطها با یک آدرس منبع خاص، داریم:
ss src <addresss>
به عنوان مثال:
ss src 192.168.100.2

خروجی ترمینال فرمان ss src
نکته: برای نمایش تمام ارتباطها به یک سیستم لوکال، آدرس IP خود را بررسی کرده و سپس فرمان ss src را اِعمال نمایید.
بررسی شناسه فرآیندها
به منظور نمایش شناسه فرآیندها یا PID، فرمان زیر را تایپ کنید.
ss -p

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

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

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

خروجی ترمینال فرمان ss -t state listening
فیلتر نتایج از طریق شماره پورت
برای فیلترینگ خروجی بر اساس یک شماره یا عنوان پروت خاص از قالب فرمان زیر استفاده کنید.
ss <options> dst :<port number or name>
برای مثال:
ss dst :5228

خروجی ترمینال فرمان ss dst برای شماره پورت
یا میتوانید از عنوان پورت استفاده کنید:
ss dst :https

خروجی ترمینال فرمان ss dst برای عنوان پورت
میتوانید از ترکیب گزینهها برای فیلترینگ پیشرفته نتایج استفاده کنید. به عنوان نمونه، برای پیدا کردن تمام ارتباط ها با پورت مقصد 5228 یا پورت منبع mysql داریم:
ss -a dst :5228 or src :mysql

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