فرمان netstat در لینوکس یک ابزار CLI برای آمار شبکه است. این فرمان نمایی از فعالیت شبکه در اختیار قرار میدهد و برایمان مشخص میکند که کدام پورتها باز و یا در حال ارتباط هستند. netstat در واقع، یکی از ابزارهای اساسی برای کشف مشکلات شبکه محسوب میشود.
در این آموزش قرار است که ۲۸ فرمان مختلف netstat را برای نمایش آمار دادههای اینترنت و پورتها در لینوکس بررسی کنیم.
پیشنیازها
- دسترسی به ترمینال
- نصب بسته نرمافزاری net-tools
نکته: فرمان netstat با اینکه هنوز هم به صورت گسترده مورد استفاده قرار میگیرد، ولی به عنوان یک ابزار « تاریخ مصرف گذشته» درنظر گرفته میشود. ابزار جایگزین، فرمان ss است که سریعتر و سادهتر عمل میکند.
نحوه استفاده از فرمان netstat در لینوکس
فرم اولیه کاربرد فرمان netstat بدون هر گونه پارامتر و گزینه خاص
netstat
اولین لیست در لینوکس نمایانگر ارتباطات فعال بر روی کامپیوتر است. جزئیات در ستونهای بعدی بیانگر موارد زیر خواهند بود.
- Proto – پروتکل ارتباطی (TCP یا UDP)
- Recv-Q – صف بایتهای دریافتشده یا در انتظار دریافت
- Send-Q – صف بایتهای ارسالشده یا در انتظار دریافت
- Local address – جزئیات آدرس و پورت ارتباط محلی. وجود علامت ستاره (*) در هاست نشاندهنده این است که سرور در حال دریافت بوده و اینکه پورت هنوز متصل نشده است.
- Foreign address – جزئیات آدرس و پورت ارتباط راه دور (ریموت). وجود علامت ستاره (*) در هاست نشاندهنده این است که پورت هنوز متصل نشده است.
- State – وضعیت سوکت محلی که معمولاً ESTABLISHED، LISTENING، CLOSED و یا سفید (خالی) است.
لیست دوم نمایشی از تمام سوکتهای باز “Unix Domain” با جزئیات زیر است:
- Proto- پروتکل مورد استفاده سوکت (همیشه unix)
- RefCnt – شمارش ارجاع فرآیندهای مرتبط با سوکت
- Flags – معمولاً به صورت ACC و یا خالی
- Type – نوع سوکت
- State – وضعیت سوکت که معمولاً CONNECTED، LISTENING و یا خالی است.
- I-Node – نقطه شاخص یا inode همراه با سوکت
- Path – مسیر سیستم به سوکت
برای کاربردهای پیشرفته میتوانید برخی گزینههای را به فرمان netstat در لینوکس اضافه کنید.
netstat <options>
یا اینکه گزینهها را تک به تک تایپ نمایید.
netstat <option 1> <option 2> <option 3>
گزینههای فرمان netstat امکان فیلترینگ اطلاعت شبکه را برای شما فراهم میآورند.
نکته: اگر سرعت شبکه پایین است، ابتدا سرعت آن را بررسی کنید.
تهیه لیست از تمام پورتها و ارتباط ها
برای لیستکردن تمام پورتها و ارتباطها، فارغ از وضعیت یا پروتکلهای آنها، داریم:
netstat -a
در خروجی لیستی از ارتباطهای صورتگرفته همراه با سرورهایی که در حال دریافت یا باز هستند مشاهده خواهید کرد.
لیست تمام پورتهای TCP
netstat -at
لیست تمام پورتهای UDP
با کمک فرمان زیر از تمام پورتهای UDP لیست تهیه کنید.
netstat -au
تهیه لیست فقط از پورتهایی که در حال دریافت داده هستند
برای برگشت یک لیست از پورتهایی از تمام پروتکلها که در حال دریافت داده هستند، از فرمان زیر استفاده کنید.
netstat -l
لیست کل پورتهای در حال دریافت TCP
netstat -lt
تهیه لیست از پورت های در حال دریافت UDP
با اجرای فرمان زیر میتوانید تنها پورتهای در حال دریافت UDP را مشاهده کنید.
netstat -lu
لیست پورتهای در حال دریافت UNIX
برای تهیه لیست پورتهای در حال دریافت UNIX از فرمان زیر استفاده میکنیم:
netstat -lx
نکته: به عنوان یک راه جایگزین، میتوانید از nmap برای بررسی پورتهای باز استفاده کنید.
نمایش آمار بر اساس پروتکلها
نمایش آمار برای تمام پورتها، فارغ از پروتکل آنها، با کمک فرمان زیر صورت میگیرد.
netstat -s
این آمارها را میتوان بر اساس پروتکل فیلتر کرد.
لیست آمارها تنها برای پورتهای TCP
برای تهیه لیست آماری فقط برای پورت های TCP داریم:
netstat -st
لیست آماری پورتهای UDP
برای تهی لیست آماری صرفاً از پورت های UDP از فرمان زیر استفاده کنید.
netstat -su
تهیه لیست تراکنشهای رابط کاربری شبکه
برای مشاده تراکنشهای MTU، پاکتهای داده دریافتی و ارسالی در هسته رابط کاربری داریم:
netstat -i
نمایش گستردهتر جدول رابط کاربری هسته
با اضافهکردن گزینه -e به فرمان netstat -i، جزئیات بیشتری از جدول رابط کاربری هسته را نمایش دهید.
netstat -ie
نمایش ارتباطهای پوششی
برای نمایش ارتباطهای پوششی فرمان زیر را تایپ کنید.
netstat -M
نمایش PID
برای نمایش PID یا نام برنامه مرتبط با یک اتصال خاص میتوانید از گزینه -p به همراه فرمان netstat در لینوکس استفاده کنید. به عنوان مثال، برای مشاهده ارتباطهای TCP همراه با PID یا عنوان برنامه داریم:
netstat -tp
جستجوی برنامههای در حال دریافت داده
برای پیدا کردن تمام برنامههای در حال دریافت داده داریم:
netstat -lp
نمایش جدول روتینگ IP هسته
نمایش جدول روتینگ IP هسته با کمک فرمان زیر صورت میگیرد:
netstat -r
نمایش عضویت گروه IPv4 و IPv6
به منظور نمایش عضویت گروه برای IPv6/IPv4 داریم:
netstat -g
چاپ مداوم اطلاعات netstat
با اضافه کردن گزینه -c به فرمان netstat میتوانید اطلاعات را در هر ثانیه چاپ کنید.
netstat -c
به عنوان مثال، برای چاپ مداوم جدول رابط کاربری هسته، فرمان زیر را اجرا نمایید.
netstat -ic
پیدا کردن خانواده آدرسهای تنظیمنشده
برای تهیه لیست از آدرسهای بدون پشتیبانی در سیستم داریم:
netstat --verbose
اطلاعاتی که در انتهای خروجی مشاهده میشوند:
نمایش آدرسهای عددی، آدرسهای هاست، اعداد پورت و شناسههای کاربری
آدرسها، اعداد پورت و شناسههای کاربری در حالت پیشفرض، تا حدّ امکان به صورت خوانا و قابلفهم درمیآیند. امّا دانستن اعداد اصلی پورتها برای کارهای مهمم مانند ارجاع پورت SSH اهمیت خواهد داشت.
نمایش آدرسهای عددی
نمایش آدرسهای عددد با فرمان زیر صورت میگیرد:
netstat -n
نمایش آدرسهای هاست عددی
به منظور نمایش صرف آدرسهای هاست به صورت عددی داریم:
netstat --numeric-hosts
نمایش اعداد پورت
برای نمایش پورتها صرفاً به صورت عدد داریم:
netstat --numeric-ports
نمایش شناسههای عددی کاربران
برای نمایش شناسههای کاربری از فرمان زیر استفاده کنید:
netstat --numeric-users
پیدا کردن فرآیندی که از یک پورت خاص استفاده میکند
با استفاده از فرمان grep میتوانید دادههای فرمان netstat را فیلتر کنید. برای جستجو فرآیندی که از یک شماره پورت خاص استفاده میکند، از فرمان زیر کمک بگیرید.
netstat -an | grep ‘:<port number>’
به عنوان مثال:
netstat -an | grep ‘:80’
لیست تمام فرمانهای netstat
در فرمان netstat در لینوکس گزینههای زیادی میتوان استفاده کرد. برای دسترسی به تمام گزینههای موجود و توضیحات کوتاه در مورد آنها میتوانید از فرمان زیر استفاده کنید.
netstat -h
جمعبندی
فرمان netstat در لینوکس یک ابزار اساسی برای مهندسان شبکه، مدیران سیستم و توسعهدهندگان محسوب میشود. عیبیابی شبکه و داشتن تصویری همهجانبه از فعالیتهای شبکه و دسترسی به پورتها تنها بخشی از کاربردهای این ابزار هستند.