ابزار ss یا socket statistics، یک فرمان CLI است که برای نمایش آمار شبکه به کار میرود. فرمان ss در واقع، یک نسخه سادهتر و سریعتر از فرمان «تاریخ مصرف گذشته» CLI است. ss در کنار فرمان ip، ابزارهایی اساسی برای جمعاوری اطلاعات شبکه و رفع مشکل آن به شمار میروند. در این مطلب، به نحوه استفاده از...
1399/12/253642 بازدید
ابزار ss یا socket statistics، یک فرمان CLI است که برای نمایش آمار شبکه به کار میرود. فرمان ss در واقع، یک نسخه سادهتر و سریعتر از فرمان «تاریخ مصرف گذشته» CLI است. ss در کنار فرمان ip، ابزارهایی اساسی برای جمعاوری اطلاعات شبکه و رفع مشکل آن به شمار میروند. در این مطلب، به نحوه استفاده از فرمان ss لینوکس خواهیم پرداخت و برخی از رایجترین موارد استفاده آن را مرور خواهیم کرد. با ما همراه باشید.
پیشنیازها
دسترسی به یک ترمینال یا خط فرمان
نصب بسته نرمافزاری iproute2
نکته: از فرمان apt-get برای نصب، بروزرسانی یا ارتقای بسته نرمافزاری iproute2 استفاده کنید.
مثالهای فرمان ss لینوکس
نمونه پایه استفاده از فرمان ss بدون هیچگونه پارامتر خاص
php
1ss
در خروجی لیسیتی از سوکتهای دارای ارتباط و بدون دریافت اطلاعات مشاهده خواهید کرد.
خروجی ترمینال فرمان ss
ستونهای این خروجی حاوی جزئیات زیر هستند.
Netid: نوع سوکت. TCP، UDP، u_str و u_seq معمولترین نوع سوکتها هستند.
State: وضعیت سوکت. رایج ترین وضعیتها عبارتند از ESTAB (فعال)، UNCONN (عدم ارتباط) و LISTEN (دریافت اطلاعات).
Recv-Q: تعداد بستههای داده دریافتی در صف.
Send-Q: تعداد بستههای داده ارسالی در صف
Local address:port: آدرس سیستم محلی و پورت
Peer address:port: آدرس سیستم ریموت و پورت
برای داشتن اطلاعات جزئیتر میتوانید برخی گزینهها را به فرمان ss اضافه کنید.
php
1ss <options>
یا اینکه میتوانید گزینهها را به صورت تک به تک وارد کنید.
به کمک فرمان زیر میتوان لیست تمام ارتباطهای دریافتی و غیر دریافتی را تهیه کنید.
php
1ss -a
و یا فرمان زیر:
php
1ss --all
خروجی ترمینال فرمان ss -a
لیست سوکتهای دریافتی
برای اینکه تنها سوکتهایی نمایش داده شوند که دریافت داده از آنها انجام میشود، از فرمان زیر استفاده کنید.
php
1ss -l
و یا:
php
1ss --listen
خروجی ترمینال فرمان ss -l
لیست ارتباط های TCP
برای تهیه لیست از ارتباطهای TCP، گزینه -t را به انتهای فرمان ss لینوکس اضافه کنید.
php
1ss -t
البته به جای آن میتوانید از فرمان زیر نیز استفاده کنید.
php
1ss --tcp
خروجی فرمان ss -t
لیست تمام ارتباطهای TCP
با ترکیب گزینههای -a و -t با فرمان ss موجب میشود که در خروجی شاهد لیستی از تمام ارتباطهای TCP باشیم.
php
1ss -at
خروجی ترمینال فرمان ss -at
لیست تمام ارتباط های TCP دریافتی
ترکیب گزینههای -l و -t با فرمان ss منجر به نمایش تمام ارتباطهای TCP دریافتی میشود.
php
1ss -lt
خروجی ترمینال فرمان ss -lt
لیست ارتباط های UDP
برای نمایش لیست ارتباط های UDP داریم:
php
1ss -u
و یا:
php
1ss --udp
خروجی ترمینال فرمان ss -u
لیست تمام ارتباطهای UDP
برای این منظور از ترکیب گزینههای -a و -u با فرمان ss استفاده میکنیم.
php
1ss -au
خروجی ترمینال فرمان ss -au
لیست تمام ارتباطهای UDP دریافتی
برای تهیه لیست تمام ارتباط های دریافتی UDP از فرمان ss همراه با گزینههای -l و -u استفاده میکنیم.
php
1ss -lu
خروجی ترمینال فرمان ss -lu
لیست سوکتهای یونیکس
برای نمایش تمام سوکتهای خانواده یونیکس داریم:
php
1ss -f unix
و یا نسخه اختصاریتر این فرمان:
php
1ss -x
خروجی ترمینال فرمان ss -x
لیست سوکتهای خام یا Raw
برای نمایش لیست سوکتهای خام از فرمان زیر استفاده کنید.
php
1ss -w
و یا:
php
1ss --raw
لیست ارتباطها با یک آدرس IP خاص
با کمک فرمان زیر یک لیست از ارتباطها با یک IP مقصد خاص نمایش داده میشوند.
php
1ss dst <address>
به عنوان مثال:
php
1ss dst 104.21.3.132
خروجی ترمینال از فرمان ss dst
به منظور نمایش ارتباطها با یک آدرس منبع خاص، داریم:
php
1ss src <addresss>
به عنوان مثال:
php
1ss src 192.168.100.2
خروجی ترمینال فرمان ss src
نکته: برای نمایش تمام ارتباطها به یک سیستم لوکال، آدرس IP خود را بررسی کرده و سپس فرمان ss src را اِعمال نمایید.
بررسی شناسه فرآیندها
به منظور نمایش شناسه فرآیندها یا PID، فرمان زیر را تایپ کنید.
php
1ss -p
خروجی ترمینال فرمان ss -p
لیست خلاصه آمار به کمک فرمان ss لینوکس
نمایش لیست خلاصه آماری ارتباطها از فرمان زیر استفاده میشود.
php
1ss -s
خروجی ترمینال فرمان ss -s
لیست ارتباطهای سوکت IPv4 و IPv6
با استفاده از فرمان زیر و لیستکردن ارتباطهای IPv4/IPv6، به نتایج خلاصهتری دست پیدا کنید.
php
1ss -4
و یا:
php
1ss -6
به عنوان نمونه، برای نمایش لیست تمام ارتباطهای IPv6 UDP داریم:
php
1ss -au6
خروجی ترمینال فرمان ss -au6
فیلتر کردن ارتباط ها
فرمان ss به شما اجازه میدهد که فیلترینگ پیشرفتهای برای نتایج داشته باشید و پورتها یا حالتهای خاص TCP را جستجو کنید.
فیلتر با استفاده از وضعیتهای TCP
فیلترینگ ارتباطهای TCP با کمک وضعیتهای از پیش تعریف شده TCP به شکل زیر صورت میگیرد.
php
1ss state <name of state>
به عنوان مثال، برای پیدا کردن تمام ارتباط های دریافتی TCP داریم:
php
1ss -t state listening
خروجی ترمینال فرمان ss -t state listening
فیلتر نتایج از طریق شماره پورت
برای فیلترینگ خروجی بر اساس یک شماره یا عنوان پروت خاص از قالب فرمان زیر استفاده کنید.
php
1ss <options> dst :<port number or name>
برای مثال:
php
1ss dst :5228
خروجی ترمینال فرمان ss dst برای شماره پورت
یا میتوانید از عنوان پورت استفاده کنید:
php
1ss dst :https
خروجی ترمینال فرمان ss dst برای عنوان پورت
میتوانید از ترکیب گزینهها برای فیلترینگ پیشرفته نتایج استفاده کنید. به عنوان نمونه، برای پیدا کردن تمام ارتباط ها با پورت مقصد 5228 یا پورت منبع mysql داریم:
php
1ss -a dst :5228 or src :mysql
خروجی ترمینال فرمان ss با حالت جستجوی پیشرفته
نهایتاً بررسی صفحه راهنمای فرمان ss میتواند جزئیات بیشتری در اختیار شما قرار دهد.
php
1man ss
همچنین برای داشتن اطلاعات فوری از گزینههای در دسترس میتوانید فرمان زیر را تایپ کنید.
php
1ss -h
مقایسه فرمانهای netstat و ss لینوکس
فرمان ss به عنوان یک فرمان جایگزین برای ابزار انقضا یافته netstat درنظر گرفته میشود. سرعت بیشتر و گزینههای بهتر برای فیلترینگ نتایج که از طریق بسته نرمافزاری iproute2 در دسترس قرار میگیرند، مطمئناً نسبت به ابزارهای بسته net-tools ترجیح داده میشوند.
صفحه راهنمای فرمان netstat نیز ss را به عنوان یک گزینه سطح بالاتر درنظر میگیرد. البته ابزار netstat هنوز هم برای استفاده در دسترس قرار دارد. با این وجود، فرمان ss لینوکس یک گزینه بهتر و سریعتر است.
جمعبندی
ابزار ss با گزینههای فیلترینگ هوشمند موجب می شود که در هنگام بروز مشکل، شرایط بهتری در بررسی سوکتها و آمار شبکه داشته باشیم. در واقع، این یکی از ابزارهای ضروری برای هر مدیر سیستم و شبکهای محسوب میشود.