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

در این مقاله به آموزش کار با فرمان ss به منظور مانیتورینگ شبکه در لینوکس می‌پردازیم.

آشنایی با دستور ss

فرمان ss که در واقع مخفف عبارت Socket Statistics است، برای بررسی آمار سوکت‌ها به کار می‌رود و جایگزین ابزار قدیمی netstat است. این دستور خروجی ساده‌تری دارد و استفاده کردن از آن نیز ساده‌تر است. اطلاعات سوکت‌ها شامل TC P و UDP و همین‌طور سوکت‌های پرکاربردی مثل DCCP و RAW با فرمان ss نمایش داده می‌شود.

استفاده از فرمان ss و آپشن‌های مهم آن

ساده‌ترین دستوری که می‌توان برای نمایش اطلاعات سوکت‌ها اجرا کرد، دستور ss بدون آپشن‌های اضافی است. با توجه به اینکه لیست اطلاعات طولانی است، بهتر است از دستور less پس از فرمان ss استفاده کنید تا چک کردن خروجی دستور ساده‌تر شود.

علاوه بر این می‌توانید اطلاعات مربوط به نوعی خاص از سوکت‌ها را مشاهده کنید. برای فیلتر کردن نتایج و نمایش اطلاعات سوکت‌های TCP از دستور زیر استفاده کنید:

خروجی دستور فوق را در تصویر زیر مشاهده می‌کنید که شامل آدرس آی‌پی و پورت و همین‌طور میزان ارسال و دریافت می‌شود:

به همین ترتیب برای سوکت UDP می‌بایست سوییچ -u را اضافه کنید:

به صورت پیش‌فرض فقط سوکت‌هایی که کانکشنی برقرار کرده‌اند، لیست می‌شود. برای نمایش تمام موارد می‌بایست سوییچ -a را اضافه کنید. به عنوان مثال در مورد سوکت TCP دستور زیر را اجرا کنید تا تمام سوکت‌ها لیست شود:

در ادامه با برخی کاربردهای دستور ss در لینوکس آشنا می‌شویم که البته بسیار متنوع است. لذا صرفاً چند مورد از مهم‌ترین کاربردها را بررسی می‌کنیم.

مانیتور کردن وضعیت سوکت‌های TCP

کانکشن‌های TCP چند مرحله دارند. در واقع یک کانکشن که با استفاده از سوکت TCP برقرار شده، از شروع تا پایان کار، چند مرحله را طی می‌کند. با دستور ss می‌توان لیستی از سوکت‌های TCP که در مرحله‌ای خاص قرار دارند را به راحتی مشاهده و بررسی کرد. به جز وضعیت‌های اصلی و مهم مثل established یا closed که به معنی برقراری کانکشن و بسته شدن کانکشن آن است، می‌توان از چند فیلتر سفارشی دیگر مثل connected استفاده کرد.

آدرس‌های IPv4 و IPv6

اگر در شبکه‌ای از آدرس‌های IPv4‌ و IPv6‌ به صورت هم‌زمان استفاده شده باشد، می‌توانید لیست سوکت‌هایی که آدرس از نوع خاصی است را با فرمان ss مشاهده کنید. به عنوان مثال برای رویت کردن کانکشن‌هایی با وضعیت connected و آدرس از نوع IPv4 از دستور زیر استفاده کنید:

آموزش کار با دستور ss در لینوکس برای مانیتورینگ شبکه و سوکت‌ها

در مورد IPv6 نیز از فلگ -6‌ به جای -4‌ استفاده می‌شود:

پیدا کردن برنامه‌ای که از سوکت خاصی استفاده می‌کند

لیست سوکت‌ها در حالت عادی شامل شناسه‌ی پردازشی که از آن استفاده می‌کند، نمی‌شود اما می‌توانید این مورد را نیز با دستور ss بررسی کنید. به عنوان مثال اگر فرمان زیر را اجرا کنید، تمام کانکشن‌های TCP فعال با ذکر ID پردازش مربوطه، لیست می‌شود:

به خروجی دستور فوق توجه کنید، در مورد اغلب پردازش‌ها، نام پردازش نیز در کنار شناسه ذکر شده و تشخیص دادن نرم‌افزار مربوطه ساده است:

آموزش کار با دستور ss در لینوکس برای مانیتورینگ شبکه و سوکت‌ها

خلاصه وضعیت شبکه و سوکت‌ها

برای چک کردن شبکه با فرمان ss، می‌توانید از آپشن -s استفاده کنید تا اطلاعات خلاصه‌تر شود:

همان‌طور که مشاهده می‌کنید خروجی دستور بسیار ساده و کوتاه‌تر می‌شود:

آموزش کار با دستور ss در لینوکس برای مانیتورینگ شبکه و سوکت‌ها