ابزار ss یا socket statistics، یک فرمان CLI است که برای نمایش آمار شبکه به کار میرود. فرمان ss در واقع، یک نسخه سادهتر و سریعتر از فرمان «تاریخ مصرف گذشته» CLI است. ss در کنار فرمان ip، ابزارهایی اساسی برای جمعاوری اطلاعات شبکه و رفع مشکل آن به شمار میروند. در این مطلب، به نحوه استفاده از فرمان ss لینوکس خواهیم پرداخت و برخی از رایجترین موارد استفاده آن را مرور خواهیم کرد. با ما همراه باشید.
پیشنیازها
- دسترسی به یک ترمینال یا خط فرمان
- نصب بسته نرمافزاری iproute2
نکته: از فرمان apt-get برای نصب، بروزرسانی یا ارتقای بسته نرمافزاری iproute2 استفاده کنید.
مثالهای فرمان 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 -l
و یا:
ss --listen
لیست ارتباط های TCP
برای تهیه لیست از ارتباطهای TCP، گزینه -t را به انتهای فرمان ss لینوکس اضافه کنید.
ss -t
البته به جای آن میتوانید از فرمان زیر نیز استفاده کنید.
ss --tcp
لیست تمام ارتباطهای TCP
با ترکیب گزینههای -a و -t با فرمان ss موجب میشود که در خروجی شاهد لیستی از تمام ارتباطهای TCP باشیم.
ss -at
لیست تمام ارتباط های TCP دریافتی
ترکیب گزینههای -l و -t با فرمان ss منجر به نمایش تمام ارتباطهای TCP دریافتی میشود.
ss -lt
لیست ارتباط های UDP
برای نمایش لیست ارتباط های UDP داریم:
ss -u
و یا:
ss --udp
لیست تمام ارتباطهای UDP
برای این منظور از ترکیب گزینههای -a و -u با فرمان ss استفاده میکنیم.
ss -au
لیست تمام ارتباطهای UDP دریافتی
برای تهیه لیست تمام ارتباط های دریافتی UDP از فرمان ss همراه با گزینههای -l و -u استفاده میکنیم.
ss -lu
لیست سوکتهای یونیکس
برای نمایش تمام سوکتهای خانواده یونیکس داریم:
ss -f unix
و یا نسخه اختصاریتر این فرمان:
ss -x
لیست سوکتهای خام یا Raw
برای نمایش لیست سوکتهای خام از فرمان زیر استفاده کنید.
ss -w
و یا:
ss --raw
لیست ارتباطها با یک آدرس IP خاص
با کمک فرمان زیر یک لیست از ارتباطها با یک IP مقصد خاص نمایش داده میشوند.
ss dst <address>
به عنوان مثال:
ss dst 104.21.3.132
به منظور نمایش ارتباطها با یک آدرس منبع خاص، داریم:
ss src <addresss>
به عنوان مثال:
ss src 192.168.100.2
نکته: برای نمایش تمام ارتباطها به یک سیستم لوکال، آدرس IP خود را بررسی کرده و سپس فرمان ss src را اِعمال نمایید.
بررسی شناسه فرآیندها
به منظور نمایش شناسه فرآیندها یا PID، فرمان زیر را تایپ کنید.
ss -p
لیست خلاصه آمار به کمک فرمان ss لینوکس
نمایش لیست خلاصه آماری ارتباطها از فرمان زیر استفاده میشود.
ss -s
لیست ارتباطهای سوکت IPv4 و IPv6
با استفاده از فرمان زیر و لیستکردن ارتباطهای IPv4/IPv6، به نتایج خلاصهتری دست پیدا کنید.
ss -4
و یا:
ss -6
به عنوان نمونه، برای نمایش لیست تمام ارتباطهای IPv6 UDP داریم:
ss -au6
فیلتر کردن ارتباط ها
فرمان ss به شما اجازه میدهد که فیلترینگ پیشرفتهای برای نتایج داشته باشید و پورتها یا حالتهای خاص TCP را جستجو کنید.
فیلتر با استفاده از وضعیتهای TCP
فیلترینگ ارتباطهای TCP با کمک وضعیتهای از پیش تعریف شده TCP به شکل زیر صورت میگیرد.
ss state <name of state>
به عنوان مثال، برای پیدا کردن تمام ارتباط های دریافتی TCP داریم:
ss -t state listening
فیلتر نتایج از طریق شماره پورت
برای فیلترینگ خروجی بر اساس یک شماره یا عنوان پروت خاص از قالب فرمان زیر استفاده کنید.
ss <options> dst :<port number or name>
برای مثال:
ss dst :5228
یا میتوانید از عنوان پورت استفاده کنید:
ss dst :https
میتوانید از ترکیب گزینهها برای فیلترینگ پیشرفته نتایج استفاده کنید. به عنوان نمونه، برای پیدا کردن تمام ارتباط ها با پورت مقصد 5228 یا پورت منبع mysql داریم:
ss -a dst :5228 or src :mysql
نهایتاً بررسی صفحه راهنمای فرمان ss میتواند جزئیات بیشتری در اختیار شما قرار دهد.
man ss
همچنین برای داشتن اطلاعات فوری از گزینههای در دسترس میتوانید فرمان زیر را تایپ کنید.
ss -h
مقایسه فرمانهای netstat و ss لینوکس
فرمان ss به عنوان یک فرمان جایگزین برای ابزار انقضا یافته netstat درنظر گرفته میشود. سرعت بیشتر و گزینههای بهتر برای فیلترینگ نتایج که از طریق بسته نرمافزاری iproute2 در دسترس قرار میگیرند، مطمئناً نسبت به ابزارهای بسته net-tools ترجیح داده میشوند.
صفحه راهنمای فرمان netstat نیز ss را به عنوان یک گزینه سطح بالاتر درنظر میگیرد. البته ابزار netstat هنوز هم برای استفاده در دسترس قرار دارد. با این وجود، فرمان ss لینوکس یک گزینه بهتر و سریعتر است.
جمعبندی
ابزار ss با گزینههای فیلترینگ هوشمند موجب می شود که در هنگام بروز مشکل، شرایط بهتری در بررسی سوکتها و آمار شبکه داشته باشیم. در واقع، این یکی از ابزارهای ضروری برای هر مدیر سیستم و شبکهای محسوب میشود.