دستور netstat در لینوکس: راهنمای کامل برای مدیریت شبکه
دستور netstat
(مخفف network statistics) یک ابزار خط فرمان برای نظارت بر اتصالات شبکه، تشخیص مشکلات و جمعآوری دادههای مهم مربوط به شبکه است. تسلط بر این دستور برای هر کسی که با مدیریت سرور، از جمله سرویسهای محبوبی مانند خرید vps، سر و کار دارد، یک مهارت کلیدی محسوب میشود.
اگرچه توزیعهای مدرن لینوکس به دلیل عملکرد سریعتر و خروجی دقیقتر به سمت ابزار ss
(socket statistics) حرکت کردهاند، دستور netstat
همچنان برای عیبیابی مشکلات شبکه و تحلیلهای امنیتی بسیار مفید و کاربردی است.
در این مقاله، همه چیزهایی را که باید درباره دستور netstat در لینوکس بدانید، از سینتکس و گزینهها گرفته تا مثالهای عملی، پوشش خواهیم داد. پس از مطالعه این راهنما، شما قادر خواهید بود از netstat به طور موثر برای مدیریت فعالیتهای شبکه در سیستم خود استفاده کنید.
سینتکس دستور netstat
ساختار اصلی دستور netstat به شکل زیر است:
netstat [options]
اجرای دستور netstat بدون هیچ گزینهای، لیستی از اتصالات فعال شبکه و سوکتهای باز را نمایش میدهد. خروجی این دستور شامل دو بخش اصلی است: اتصالات اینترنتی فعال و سوکتهای دامنه یونیکس (UNIX domain sockets).
بخش اول خروجی شامل شش ستون اصلی است:
- Proto: پروتکل مورد استفاده (مانند TCP یا UDP) را نمایش میدهد.
- Recv-Q: تعداد بایتهای دریافت شده که در صف انتظار برای پردازش هستند را نشان میدهد.
- Send-Q: تعداد بایتهای موجود در صف ارسال که منتظر انتقال هستند را نشان میدهد.
- Local Address: آدرس IP و شماره پورت سیستم محلی را نمایش میدهد.
- Foreign Address: آدرس IP و شماره پورت سیستم راه دوری که به سیستم شما متصل است را نشان میدهد.
- State: وضعیت اتصال را نشان میدهد، مانند
LISTEN
(در حال شنود)،ESTABLISHED
(برقرار شده) یاTIME_WAIT
.
گزینههای پرکاربرد دستور netstat
مانند بسیاری از دستورات لینوکس، netstat گزینههای مختلفی برای سفارشیسازی خروجی خود ارائه میدهد. در اینجا برخی از متداولترین گزینهها آورده شده است:
-a
: تمام اتصالات فعال، شامل سوکتهای در حال شنود و غیر شنود را نمایش میدهد.-l
: فقط سوکتهایی که در حال شنود (listening) هستند را لیست میکند.-t
: فقط اتصالات TCP را نمایش میدهد.-u
: فقط اتصالات UDP را نمایش میدهد.-n
: آدرسها را به صورت عددی (IP) به جای نام دامنه نمایش میدهد تا سرعت اجرای دستور بیشتر شود.-p
: شناسه فرآیند (PID) و نام برنامهای که با هر اتصال مرتبط است را نمایش میدهد.-r
: جدول مسیریابی سیستم را نشان میدهد.-i
: لیستی از رابطهای شبکه و آمار مربوط به آنها را نمایش میدهد.-s
: آمار دقیق برای پروتکلهای مختلف مانند TCP، UDP و ICMP را نمایش میدهد.
شما میتوانید چندین گزینه را برای فیلتر کردن دقیقتر خروجی ترکیب کنید. برای مثال، برای لیست کردن تمام اتصالات TCP و UDP که در حال شنود هستند به همراه آدرسهای عددی و فرآیندهای مرتبط، از دستور زیر استفاده کنید:
netstat -tunlp
مثالهای کاربردی دستور netstat
در ادامه چند مثال عملی برای استفاده از دستور netstat آورده شده است.
مشاهده تمام اتصالات فعال
دستور netstat -a
تمام اتصالات شبکه فعال، از جمله پورتهای در حال شنود و اتصالات برقرار شده را نشان میدهد. این دستور برای شناسایی فعالیتهای غیرمنتظره و ریسکهای امنیتی مفید است.
netstat -a
بررسی اتصالات TCP
برای مشاهده فقط اتصالات پروتکل کنترل انتقال (TCP)، از گزینههای -a
و -t
با هم استفاده کنید. این کار به شما کمک میکند تا به سرعت مشکلات مربوط به سرویسهای مبتنی بر TCP مانند وبسرورها، SSH و پایگاه داده را شناسایی کنید.
netstat -at
لیست کردن تمام اتصالات UDP
برای نظارت بر اتصالات پروتکل دیتاگرام کاربر (UDP) که اغلب برای DNS و VoIP استفاده میشود، دستور زیر را به کار ببرید:
netstat -au
از آنجایی که UDP یک پروتکل بدون اتصال است، در خروجی این دستور ستون وضعیت (State) مقداری نخواهد داشت.
نمایش آدرسهای عددی
به طور پیشفرض، netstat تلاش میکند تا آدرسهای IP را به نام دامنه تبدیل کند که ممکن است اجرای دستور را کند کند. برای جلوگیری از این کار و نمایش سریع آدرسهای عددی، از گزینه -n
استفاده کنید.
netstat -n
نمایش پورتهای در حال شنود
با اجرای دستور زیر میتوانید بفهمید کدام سرویسها به طور فعال منتظر اتصالات ورودی هستند:
netstat -l
این دستور فقط سوکتهایی را نمایش میدهد که در وضعیت LISTEN
قرار دارند. برای نتایج دقیقتر، میتوانید این گزینه را با -t
(برای TCP) یا -u
(برای UDP) ترکیب کنید:
netstat -lt # نمایش پورتهای TCP در حال شنود
netstat -lu # نمایش پورتهای UDP در حال شنود
تحلیل جداول مسیریابی
دستور netstat -r
نحوه مسیریابی ترافیک شبکه توسط سیستم شما را نشان میدهد. این اطلاعات برای مدیران سرور که به دنبال بهینهسازی مسیرهای شبکه هستند، بسیار مهم است، به خصوص اگر سرور آنها در یک موقعیت جغرافیایی خاص مانند یک vps آلمان قرار داشته باشد و به دنبال کاهش تاخیر شبکه باشند.
netstat -r
شناسایی آمار پروتکلها
با استفاده از گزینه -s
میتوانید آمار دقیقی برای پروتکلهای مختلف شبکه از جمله TCP ،UDP ،ICMP و IP پیدا کنید. این کار برای شناسایی از دست رفتن بستهها، خطاهای انتقال و اتصالات قطع شده بسیار مفید است.
netstat -s
پیدا کردن اتصالات مرتبط با یک برنامه خاص
برای شناسایی اینکه کدام برنامه صاحب یک اتصال شبکه است، از دستور netstat -pt
استفاده کنید. این دستور اتصالات فعال TCP را به همراه شناسه فرآیند (PID) و نام برنامه مرتبط نمایش میدهد و به شما در نظارت بر برنامههای در حال اجرا و شناسایی فعالیتهای مشکوک کمک میکند.
netstat -pt
در خروجی این دستور، ستون «PID/Program name» در سمت راستترین قسمت قابل مشاهده است.
استفاده از netstat با دستورات دیگر
شما میتوانید خروجی netstat را به ابزارهای خط فرمان دیگری مانند grep
، awk
و wc
ارسال کنید تا دادههای شبکه را استخراج کرده و در قالبی خواناتر نمایش دهید.
برای مثال، برای فیلتر کردن اتصالات بر اساس شماره پورت (مثلا پورت 80 برای HTTP):
netstat -an | grep ":80"
برای شمارش تعداد کل اتصالات فعال:
netstat -an | wc -l
فهرست تیترها