فرمان netstat در لینوکس یک ابزار CLI برای آمار شبکه است. این فرمان نمایی از فعالیت شبکه در اختیار قرار می‌دهد و برایمان مشخص می‌کند که کدام پورت‌ها باز و یا در حال ارتباط هستند. netstat در واقع، یکی از ابزارهای اساسی برای کشف مشکلات شبکه محسوب می‌شود.

در این آموزش قرار است که ۲۸ فرمان مختلف netstat را برای نمایش آمار داده‌های اینترنت و پورت‌ها در لینوکس بررسی کنیم.

پیش‌نیازها

  • دسترسی به ترمینال
  • نصب بسته نرم‌افزاری net-tools

نکته: فرمان netstat با اینکه هنوز هم به صورت گسترده مورد استفاده قرار می‌گیرد، ولی به عنوان یک ابزار « تاریخ مصرف گذشته» درنظر گرفته می‌شود. ابزار جایگزین، فرمان ss است که سریع‌تر و ساده‌تر عمل می‌کند.

نحوه استفاده از فرمان netstat در لینوکس

فرم اولیه کاربرد فرمان netstat بدون هر گونه پارامتر و گزینه خاص


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

خروجی ترمینال فرمان netstat -a

خروجی ترمینال فرمان netstat -a

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

لیست تمام پورت‌های TCP


netstat -at

خروجی ترمینال فرمان netstat -at

خروجی ترمینال فرمان netstat -at

لیست تمام پورت‌های UDP

با کمک فرمان زیر از تمام پورت‌های UDP لیست تهیه کنید.


netstat -au

خروجی ترمینال فرمان netstat -au

خروجی ترمینال فرمان netstat -au

تهیه لیست فقط از پورت‌هایی که در حال دریافت داده هستند

برای برگشت یک لیست از پورت‌هایی از تمام پروتکل‌ها که در حال دریافت داده هستند، از فرمان زیر استفاده کنید.


netstat -l

خروجی ترمینال فرمان netstat -l

خروجی ترمینال فرمان netstat -l

لیست کل پورت‌های در حال دریافت TCP


netstat -lt

تهیه لیست از پورت های در حال دریافت UDP

با اجرای فرمان زیر می‌توانید تنها پورت‌های در حال دریافت UDP را مشاهده کنید.


netstat -lu

خروجی ترمینال فرمان netstat -lu

خروجی ترمینال فرمان netstat -lu

لیست پورت‌های در حال دریافت UNIX

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


netstat -lx

خروجی ترمینال فرمان netstat -lx

خروجی ترمینال فرمان netstat -lx

نکته: به عنوان یک راه جایگزین، می‌توانید از nmap برای بررسی پورت‌های باز استفاده کنید.

نمایش آمار بر اساس پروتکل‌ها

نمایش آمار برای تمام پورت‌ها، فارغ از پروتکل آنها، با کمک فرمان زیر صورت می‌گیرد.


netstat -s

خروجی ترمینال فرمان netstat -s

خروجی ترمینال فرمان netstat -s

این آمار‌ها را می‌توان بر اساس پروتکل فیلتر کرد.

لیست آمارها تنها برای پورت‌های TCP

برای تهیه لیست آماری فقط برای پورت‌ های TCP داریم:


netstat -st

خروجی ترمینال فرمان netstat -st

خروجی ترمینال فرمان netstat -st

لیست آماری پورت‌های UDP

برای تهی لیست آماری صرفاً از پورت های UDP از فرمان زیر استفاده کنید.


netstat -su

خروجی ترمینال فرمان netstat -su

تهیه لیست تراکنش‌های رابط کاربری شبکه

برای مشاده تراکنش‌های MTU، پاکت‌های داده دریافتی و ارسالی در هسته رابط کاربری داریم:


netstat -i

خروجی ترمینال فرمان netstat -i

خروجی ترمینال فرمان netstat -i

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

با اضافه‌کردن گزینه -e به فرمان netstat -i، جزئیات بیشتری از جدول رابط کاربری هسته را نمایش دهید.


netstat -ie

خروجی ترمینال فرمان netstat -ie

خروجی ترمینال فرمان netstat -ie

نمایش ارتباط‌های پوششی

برای نمایش ارتباط‌های پوششی فرمان زیر را تایپ کنید.


netstat -M

نمایش PID

برای نمایش PID یا نام برنامه مرتبط با یک اتصال خاص می‌توانید از گزینه -p به همراه فرمان netstat در لینوکس استفاده کنید. به عنوان مثال، برای مشاهده ارتباط‌های TCP همراه با PID یا عنوان برنامه داریم:


netstat -tp

خروجی ترمینال فرمان netstat -tp

خروجی ترمینال فرمان netstat -tp

جستجوی برنامه‌های در حال دریافت داده

برای پیدا کردن تمام برنامه‌های در حال دریافت داده داریم:


netstat -lp

خروجی ترمینال فرمان netstat -lp

خروجی ترمینال فرمان netstat -lp

نمایش جدول روتینگ IP هسته

نمایش جدول روتینگ IP هسته با کمک فرمان زیر صورت می‌گیرد:


netstat -r

خروجی ترمینال فرمان netstat -r

خروجی ترمینال فرمان netstat -r

نمایش عضویت گروه IPv4 و IPv6

به منظور نمایش عضویت گروه برای IPv6/IPv4 داریم:


netstat -g

خروجی ترمینال فرمان netstat -g

خروجی ترمینال فرمان netstat -g

چاپ مداوم اطلاعات netstat

با اضافه کردن گزینه -c به فرمان netstat می‌توانید اطلاعات را در هر ثانیه چاپ کنید.


netstat -c

به عنوان مثال، برای چاپ مداوم جدول رابط کاربری هسته، فرمان زیر را اجرا نمایید.


netstat -ic

خروجی ترمینال فرمان netstat -ic

خروجی ترمینال فرمان netstat -ic

پیدا کردن خانواده آدرس‌های تنظیم‌نشده

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


netstat --verbose

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

خروجی ترمینال فرمان netstat --verbose

خروجی ترمینال فرمان 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 -an | grep

خروجی ترمینال فرمان netstat -an | grep

لیست تمام فرمان‌های netstat

در فرمان netstat در لینوکس گزینه‌های زیادی می‌توان استفاده کرد. برای دسترسی به تمام گزینه‌های موجود و توضیحات کوتاه در مورد آنها می‌توانید از فرمان زیر استفاده کنید.


netstat -h

خروجی ترمینال فرمان netstat -h

خروجی ترمینال فرمان netstat -h

جمع‌بندی

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