تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

استفاده از Netcat برای برقراری و آزمایش اتصالات TCP و UDP در لینوکس


۱۰ دی ۱۴۰۴

خلاصه کنید:

openaigeminiperplexity

لینوکس مجموعه‌ای بزرگ از ابزارهای قدرتمند خط فرمان را به‌صورت پیش‌فرض در اختیار کاربران قرار می‌دهد که در اغلب توزیع‌ها بدون نیاز به نصب اضافی در دسترس هستند. در میان این ابزارها، Netcat به‌عنوان یک ابزار شبکه‌ای چندمنظوره (Versatile) برتر شناخته خواهد شد. ابزاری که امکان برقراری ارتباط مستقیم با سیستم‌های راه‌دور از طریق پروتکل‌های TCP و UDP را فراهم می‌کند.

مدیران سیستم و توسعه‌دهندگان می‌توانند از Netcat برای طیف وسیعی از سناریوها استفاده کنند، از جمله اسکن پورت‌ها، تست سرویس‌ها، انتقال فایل، عیب‌یابی ارتباطات شبکه و دیباگ پروتکل‌ها.

در این راهنمای جامع از لیارا، نحوه استفاده از Netcat برای برقراری و تست اتصالات TCP و UDP در سناریوهای عملی بررسی خواهیم کرد. همچنین با کاربردهای Netcat در ارسال و دریافت داده، شناسایی پورت‌های باز، رفع مشکلات ارتباطی، راه‌اندازی چت ساده و انتقال موقت فایل آشنا خواهید شد.

سرور مجازی لینوکس با کیفیت بالا و منابع اختصاصی
✅ سرعت بالا ✅ امنیت قوی ✅ منابع اختصاصی
خرید سرور مجازی لینوکس

آنچه در ادامه خواهید خواند:

  • نکات مهم و حائز اهمیت در استفاده از Netcat
  • سینتکس عمومی Netcat
  • تفاوت بین nc، ncat و netcat-openbsd
  • استفاده از Netcat برای اسکن پورت
  • برقراری ارتباط دوطرفه با Netcat
  • استفاده از Netcat در دیباگ بلادرنگ
  • انتقال فایل با Netcat
  • تفسیر عدم خروجی و Timeout (به‌ویژه در UDP)
  • مقایسه Netcat با telnet و socat
  • سوالات متداول
  • جمع بندی

نکات مهم و حائز اهمیت در استفاده از Netcat

  • Netcat یک ابزار شبکه‌ای انعطاف‌پذیر است که امکان برقراری اتصال TCP و UDP را فراهم می‌کند و برای تست، دیباگ و انتقال داده کاربرد دارد.
  • قابلیت‌های پایه Netcat شامل اتصال به پورت‌ها، اسکن بازه‌ای از پورت‌ها و ارسال داده خام است. گزینه‌هایی مانند -u (برای UDP)، -z (اسکن بدون انتقال داده) و -v (حالت verbose) به‌طور گسترده استفاده می‌شوند.
  • Netcat می‌تواند هم در نقش کلاینت و هم سرور عمل کند و ارتباط دوطرفه، انتقال فایل و حتی پیاده‌سازی چت یا وب‌سرور ساده را ممکن سازد.
  • نسخه‌های مختلف Netcat رفتار و قابلیت‌های متفاوتی دارند. شناخت نسخه مورد استفاده برای جلوگیری از نتایج غیرمنتظره ضروری است.
  • Netcat ابزار قدرتمندی برای دیباگ شبکه است و امکان ارسال دستی هدرهای HTTP، مشاهده بنر سرویس‌ها و شبیه‌سازی رفتار کلاینت در پروتکل‌هایی مانند SMTP، DNS و HTTP را فراهم می‌کند.
  • در UDP تایید تحویل داده وجود ندارد؛ بنابراین نبود خروجی لزوماً به‌معنای خطا نیست. ابزارهایی مانند tcpdump برای بررسی ترافیک توصیه می‌شوند.
  • Netcat همیشه بهترین ابزار نیست؛ در برخی سناریوها، ابزارهایی مانند socat یا حتی telnet انتخاب مناسب‌تری هستند.
نکات مهم و حائز اهمیت در استفاده از Netcat

سینتکس عمومی Netcat

به‌صورت پیش‌فرض، Netcat یک اتصال TCP به میزبان مقصد برقرار می‌کند.

netcat [options] host port

این دستور مشابه عملکرد دستور قدیمی telnet در لینوکس است، با این تفاوت که ارتباط کاملاً رمزنگاری‌نشده است.

برای ارسال بسته‌های UDP به‌جای TCP، می‌توان از گزینه -u استفاده کرد:

netcat -u host port

همچنین امکان مشخص‌کردن بازه‌ای از پورت‌ها وجود دارد:

netcat host startport-endport

این حالت معمولا همراه با گزینه‌های اضافی استفاده می‌شود.

در بسیاری از سیستم‌ها، دستور nc یک لینک نمادین به یکی از نسخه‌های Netcat مانند netcat-openbsd یا ncat است؛ بنابراین اگرچه نام‌ها مشابه هستند، رفتار آن‌ها ممکن است متفاوت باشد.

تفاوت بین nc، ncat و netcat-openbsd

نسخه پیش‌فرض Netcat در اغلب توزیع‌های مبتنی بر Debian مانند Ubuntu است. این نسخه فعالانه نگهداری می‌شود و قابلیت‌هایی مانند موارد زیر را دارد:

  • تعیین timeout با -w
  • اسکن بدون ارسال داده با -z
  • غیرفعال‌سازی DNS با -n
  • پشتیبانی از UDP با -u
  • پشتیبانی از IPv6 با -6

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

نصب:

sudo apt install netcat-openbsd

nc

دستور nc خود یک ابزار مستقل نیست، بلکه معمولاً به یکی از نسخه‌های Netcat اشاره می‌کند. برای بررسی نسخه واقعی:

which nc
ls -l $(which nc)

ncat

ابزاری بازنویسی‌شده توسط پروژه Nmap است و در توزیع‌های Red Hat محور (مانند CentOS و RHEL) به‌صورت پیش‌فرض استفاده می‌شود. ویژگی‌های شاخص آن:

  • پشتیبانی از SSL/TLS
  • قابلیت broker
  • پشتیبانی از پراکسی HTTP
  • امکانات پیشرفته برای ورودی و خروجی

مثال:

ncat --ssl -l 4444

برخی گزینه‌ها در ncat ممکن است رفتار متفاوتی داشته باشند یا غیرفعال شده باشند.

تفاوت بین nc، ncat و netcat-openbsd

استفاده از Netcat برای اسکن پورت

Netcat می‌تواند برای اسکن ساده پورت‌ها استفاده شود، هرچند ابزار تخصصی‌تری مانند nmap مناسب‌تر هستند.

netcat -z -v domain.com 1-1000

برای افزایش سرعت اسکن با IP و بدون DNS:

netcat -z -n -v 198.51.100.0 1-1000

فیلتر خروجی:

netcat -z -n -v 198.51.100.0 1-1000 2>&1 | grep succeeded

برقراری ارتباط دوطرفه با Netcat

راه‌اندازی Listener:

netcat -l 4444

اتصال از سمت کلاینت:

netcat domain.com 4444

پس از برقراری اتصال، ارتباط کاملاً دوطرفه خواهد بود.

استفاده از Netcat در دیباگ بلادرنگ

روش‌های زیر را با دقت انجام دهید تا خروجی مورد نظر خود را ببینید.

مشاهده بنر سرویس‌ها

nc mail.example.com 25

ارسال دستی درخواست HTTP

printf "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80
استفاده از Netcat در دیباگ بلادرنگ

انتقال فایل با Netcat

گیرنده:

nc -l 4444 > received_file

فرستنده:

nc domain.com 4444 < original_file

انتقال دایرکتوری با tar

گیرنده:

nc -l 4444 | tar xzvf -

فرستنده:

tar -czf - * | nc domain.com 4444

راه‌اندازی وب‌سرور ساده با Netcat

(echo -e “HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n”; cat index.html) | nc -l 8888

نسخه دائمی:

while true; do printf ‘HTTP/1.1 200 OK\n\n%s’ “$(cat index.html)” | nc -l 8888; done

این روش صرفاً برای تست است و برای محیط واقعی توصیه نمی‌شود.

تفسیر عدم خروجی و Timeout (به‌ویژه در UDP)

  • TCP بدون خروجی معمولاً به‌معنای انتظار سرویس برای ورودی است
  • UDP ذاتاً بدون تأیید تحویل است
  • برای بررسی UDP از ابزارهایی مانند tcpdump استفاده کنید

مقایسه Netcat با telnet و socat

ویژگیTelnetNetcatSocat
TCPدارددارددارد
UDPندارددارددارد
SSLنداردمحدوددارد
انعطاف‌پذیریکممتوسطبسیار بالا

سوالات متداول

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

Netcat چیست و چه کاربردی دارد؟

Netcat یک ابزار خط فرمان شبکه‌ای است که برای برقراری ارتباط مستقیم بین سیستم‌ها از طریق پروتکل‌های TCP و UDP استفاده می‌شود. این ابزار در سناریوهایی مانند تست سرویس‌ها، اسکن پورت، انتقال فایل، دیباگ ارتباطات شبکه و شبیه سازی رفتار کلاینت کاربرد بسیاری را دارد.

تفاوت Netcat با telnet چیست؟

هر دو ابزار برای برقراری اتصال TCP خواهند بود، اما Netcat بسیار منعطف تر است و برای قابلیت‌هایی مانند پشتیابی از UDP، انتقال فایل، اسکن پورت و استفاده در نقش سرور را نیز ارائه می‌دهد. talent بیشتر برای تست ساده سرویس‌ها استفاده می‌شود و امکانات آن محدودتر خواهد بود.

آیا Netcat از پروتکل UDP پشتیبانی می‌کند؟

بله، Netcat از پروتکل UDP پشتیبانی می‌کند و با استفاده از گزینه -u می‌توان بسته‌های UDP ارسال یا دریافت کرد. با این حال، به دلیل ماهیت UDP، عدم دریافت پاسخ لزوماً به‌معنای وجود خطا در ارتباط نیست.

چرا هنگام استفاده از UDP در Netcat خروجی دریافت نمی‌کنم؟

پروتکل UDP فاقد مکانیزم تأیید تحویل داده است. در نتیجه، در بسیاری از موارد هیچ پاسخ یا خروجی‌ای نمایش داده نمی‌شود. برای بررسی صحت ارسال یا دریافت داده‌های UDP، استفاده از ابزارهایی مانند tcpdump یا wireshark توصیه می‌شود.

تفاوت بین nc، ncat و netcat-openbsd چیست؟

  • nc معمولاً یک لینک نمادین است که به یکی از نسخه‌های Netcat اشاره می‌کند.
  • netcat-openbsd نسخه پیش‌فرض در اغلب توزیع‌های مبتنی بر Debian مانند Ubuntu است و پایدارترین پیاده‌سازی Netcat محسوب می‌شود.
  • ncat نسخه توسعه‌یافته توسط پروژه Nmap است که قابلیت‌های پیشرفته‌تری مانند پشتیبانی از SSL/TLS و پراکسی را ارائه می‌دهد.

شناخت نسخه مورد استفاده برای جلوگیری از رفتارهای غیرمنتظره بسیار مهم است.

Netcat برای اسکن پورت‌ها مناسب است؟

Netcat می‌تواند برای اسکن ساده پورت‌ها استفاده شود، اما ابزارهای تخصصی‌تری مانند nmap دقت، سرعت و امکانات بسیار بیشتری در اختیار قرار می‌دهند. Netcat بیشتر برای بررسی سریع یا تست دستی مناسب است.

تفسیر عدم خروجی و Timeout (به‌ویژه در UDP)

جمع‌بندی

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

به اشتراک بگذارید

برچسب‌ها: