iproute2 در مقابل net-tools (این قسمت: ss) (قسمت چهارم)

چندی پیش می‌خواستم برای netstat مطلبی بنویسم که وقتی قرار شد iproute2 را قلم بزنم دیگر نیاز به این کار ندیدم. زیرا فرمان ss نسخه iproute2 همان netstat بسته net-tools می‌باشد. وقتی ss را نوشته‌اند، به این موضوع دقت بسیاری کرده‌اند که option های قدیمی تغییر نکنند و شخصی که از netstat مهاجرت می‌کند،‌ ظرف یک ربع یا کمتر همه مسایل آن را یاد بگیرد. linux_foundation
نکته: یکی از قابلیت‌های بزرگ این فرمان، استفاده از فیلتر می‌باشد که در جلوتر با مثال توضیح داده خواهد شد.

نکته: این فرمان یک زیر فرمان از فرمان ip نمی‌باشد و به صورت تنها به کار می‌رود:

نکته: این فرمان مخفف Socket Statistics می‌باشد.

۱. کار کردن اولیه با ss

۱.۱ option های ضروری فرمان ss

اگر فقط به دنبال اعداد و ارقام در سطح خلاصه باشیم، می‌توان به صورت زیر عمل کرد:

نکته: در سیستم‌های یونیکس، فایلی با عنوان etc/services/ وجود دارد که پورت‌های UDP و TCP در آن به یک سرویس نسبت داده شده‌اند. این فایل در بسته netbase وجود دارد. در بسته netbase می‌توان فایل‌های مهم دیگری را نیز پیدا کرد:

به صورت پیش‌فرض تمام پورت‌ها از روی این فایل خوانده می‌شوند، و اگر بخواهید به صورت numeric خوانده شوند، همانند netstat باید از گزینه n- استفاده نمایید:

همانطور که در چند شماره پیشین مطالب قبلی‌ام اشاره کرده‌ بودم، بهتر است از grep و چیزی که به فرمان دوم نیاز داشته باشد استفاده نکنیم. زیرا برای ماشین overhead ایجاد می‌کند. به عنوان مثال وقتی می‌خواهیم به پورت‌هایی که listen دارند چه بهتر که از l- استفاده نماییم.
نکته: همانطور که در تمام فرمان‌های iproute2 دیدید، 4- و 6- برای فیلتر کردن نسخه IP بکار می‌روند که بسیار مفید می‌باشند. به عنوان مثال همین فرمان بالا را برای نسخه 4 اگر به کار ببریم اینگونه می‌شود:

نکته: اگر به خاطر داشته باشید، در netstat گزینه‌ای داشتیم که هردوی listening و غیر listening را لیست می‌کرد. همان گزینه عیناً در ss وجود دارد: a-
خوبی این گزینه برای زمانی است که شما بخواهید از یکسری IP ، معدل بگیرید و یا با گزینه‌های زیر به کار ببرید:

  • UDP : -u

  • TCP : -t

  • RAW Socket : -w

  • UNIX Socket Domain : -x

  • و دیگر انواع پروتکل ها


  • نکته: به سادگی موارد بالا با هم قابل ترکیب می‌باشند. به مثال زیر دقت نمایید:

    نکته: یکی از گزینه‌هایی که از قلم افتاد، p- بود که به همین نام در netstat وجود دارد و نام برنامه و PID مورد نظر را بر می‌گرداند:

    ۲.۱ query گرفتن بر اساس socket:

    با گزینه socket– می‌توان بر مبنای یک نوع socket خاص query گرفت. لیست سوکت‌ها در ذیل آمده‌اند:

    • all

    • inet

    • tcp

    • udp

    • raw

    • unix

    • netlink

    • unix_dgram

    • unix_stream

    • unix_seqpacket

    • packet_raw

    • packet_raw

    نکته: ممکن است بگویید بعضی از گزینه‌های بالا در option ها همانند t- آمده‌اند، اما واقعیت این است که بعضی از آن‌ها یاalias هستند همچون tcp و یا اصلاً وجود ندارد.
    نکته: هرگاه بخواهید برای یکی از سوکت‌های RAW و یا UNIX socket domain فیلتر بگیرید، به هیچ عنوان از گزینه یا گزینه های 4- یا 6- استفاده ننمایید. زیرا آن‌ها معرف inet4 و inet6 می‌باشند و وقتی هر دوگزینه را به ss بدهیم، دیگر فیلتر ما اثری ندارد و از هردوی unix_stream و inet family برایمان لیست می‌کند که این با خواسته ما جور در نمی‌آید.

    ۲. استفاده از فیلتر:

    فیلترها بر دو نوعند:

    • فیلتر بر اساس state

    • فیلتر بر اساس port و address

    ۱.۲ فیلتر بر اساس state :

    می‌توان بر دو اساس فیلتر نمود:

    • state های TCP

    • state های ترکیبی

    state های TCP :

    • established

    • syn-sent

    • syn-recv

    • fin-wait-1

    • fin-wait-2

    • time-wait

    • closed

    • close-wait

    • closing

    • last-ack

    • listening

    state های ترکیبی:

    • all : شامل تمام state های مرتبط می‌شود.

    • state : bucket های time-wait و syn-recv را شامل می‌شود.

    • big : تمام state ها را به جز time-wait و syn-recv شامل می‌شود.

    • connected : شامل تمام state ها به جز closed و listening می‌شود.

    • synchronized : شامل دو state یکی connected و دیگری syn-sent می‌شود.

    نکته: فرمان ss state all مترادف a- می‌باشد.
    نکته: به سادگی می‌توان چند state را کنار هم OR کرد:

    نکته: اگر از query برای inet استفاده می‌کنید 4- یا 6- یک اجبار است.
    زمانی نیاز داریم تا از یک لیست state ،‌یکسری از آن‌ها را حذف نماییم بدین منظور فرمان ss کلمه‌ای را فراهم نموده است تا این کار را انجام دهد. به مثال روبرو توجه کنید:

    در ابتدا با state all هر چه state بود لیست کردیم و از میان آن‌ها ۳ state که با کلمه رزرو شده exclude مشخص کردیم را لیست کردیم و آن‌ها از خروجی حذف می‌شوند. با این کار دیگر نیازی به state های ترکیبی نمی‌باشد. وقتی دو گزینه u- و t- را مشخص کردیم بدین معنا بود که فقط از inet family می‌خواهیم گزارش بگیریم.

    ۲.۲ فیلتر بر اساس port و address :

    فیلترها یکسری rule از نوع boolean هستند که می‌توان آن‌ها را با هم && و || و خود آن را ! کرد.
    سری اول آن‌ها که برای آدرس‌ها بکار می‌رود در ذیل لیست شده‌اند:

    • dst prefix:port

    • src prefix:port

    • src unix:string

    • src link:protocol:ifindex

    • src nl:channel:pid

    به دو مثال زیر دقت نمایید :

    و همچنین:

    به مثال زیر توجه کنید:

    بین سه وجهه AND ایجاد کرده است:

    • inet4

    • state established

    • پورت‌های کوچکتر از ۱۰۲۴

    برای پورت‌ها از دو کلمه زیر استفاده می‌شود:

    • source port : sport

    • destination port : dport

    همچنین عملگر‌های زیر موجودند:

    • eq یا ==

    • > یا lt

    • > یا gt

    • =! یا ne

    • => یا le

    • =< یا ge

    همانطور که دید می‌توان از عملگر‌های شل مانند استفاده نمود.
    یک نکته اساسی در مورد state ها : اصولاً از کلمه exclude زیاد استفاده می‌شود تا کاربر را به آنچه می‌خواهد برساند.

یک دیدگاه در “iproute2 در مقابل net-tools (این قسمت: ss) (قسمت چهارم)”

  1. آفرين، من هميشه netstat نصب ميكردم طبق عادت، ديروز روي يك دستگاه بودم كه نصب نبود و حسشم نبود كه نصب كنم، گفتم همون آپشن هاي netstat رو با ss بزنيم ببينيم چي ميشه، وقتي جواب داد خيلي حال كردم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *