رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش عملی استفاده از Netcat برای ایجاد و تست ارتباطات TCP و UDP

آموزش عملی استفاده از Netcat برای ایجاد و تست ارتباطات TCP و UDP

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

مقدمه

لینوکس به‌صورت پیش‌فرض مجموعه‌ای گسترده از ابزارهای خط فرمان قدرتمند را در اختیار کاربران قرار می‌دهد. یکی از کاربردی‌ترین این ابزارها Netcat است؛ یک ابزار شبکه‌ای سبک اما بسیار انعطاف‌پذیر که امکان برقراری ارتباط مستقیم با سیستم‌های دیگر از طریق پروتکل‌های TCP و UDP را فراهم می‌کند.

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

در طول این آموزش، با موارد زیر آشنا خواهید شد:

  • ارسال و دریافت داده با Netcat

  • اسکن پورت‌ها و بررسی وضعیت سرویس‌ها

  • راه‌اندازی ارتباط کلاینت–سرور ساده

  • تفاوت نسخه‌های مختلف Netcat (nc، ncat، netcat-openbsd)

  • دیباگ سرویس‌ها به‌صورت Real-Time

  • تفسیر خروجی‌های خاموش به‌خصوص در UDP

  • مقایسه Netcat با ابزارهایی مثل telnet و socat


نکات کلیدی (Key Takeaways)

  • Netcat یک ابزار همه‌کاره برای ایجاد ارتباط TCP و UDP است و در تست، دیباگ و انتقال داده کاربرد زیادی دارد.

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

  • Netcat می‌تواند هم به‌عنوان کلاینت و هم به‌عنوان سرور عمل کند.

  • نسخه‌های مختلف Netcat رفتار متفاوتی دارند و شناخت نسخه مورد استفاده بسیار مهم است.

  • برای UDP معمولاً بازخوردی دریافت نمی‌شود و باید از ابزارهای مکمل مانند tcpdump استفاده کرد.

  • Netcat همیشه بهترین انتخاب نیست؛ ابزارهایی مثل socat امکانات پیشرفته‌تری ارائه می‌دهند.


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

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

 
netcat [options] host port

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

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

 
netcat -u host port

برای اسکن یک بازه از پورت‌ها:

 
netcat host startport-endport

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


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

netcat-openbsd

نسخه پیش‌فرض در توزیع‌های مبتنی بر Debian مانند Ubuntu است و امکانات زیر را دارد:

  • تعیین Timeout با -w

  • اسکن بدون ارسال داده با -z

  • غیرفعال‌سازی DNS با -n

  • پشتیبانی از UDP و IPv6

نصب:

 
sudo apt install netcat-openbsd

nc

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

 
which nc ls -l $(which nc)

ncat

نسخه بازنویسی‌شده توسط پروژه Nmap که در CentOS و RHEL استفاده می‌شود و امکاناتی مثل:

  • رمزنگاری SSL

  • پشتیبانی از Proxy

  • Broker Connection

مثال:

 
ncat --ssl -l 4444

اسکن پورت با Netcat

برای اسکن پورت‌ها از گزینه -z استفاده می‌شود:

 
netcat -z -v domain.com 1-1000

اگر IP را می‌دانید، برای سرعت بیشتر از -n استفاده کنید:

 
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

روی سیستم اول (سرور):

 
netcat -l 4444

روی سیستم دوم (کلاینت):

 
netcat domain.com 4444

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

 
CTRL + D

استفاده از Netcat برای دیباگ Real-Time

مشاهده Banner سرویس‌ها

مثلاً برای SMTP:

 
nc mail.example.com 25

خروجی:

 
220 mail.example.com ESMTP Postfix

تست دستی HTTP

 
printf "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

این روش برای بررسی هدرها، وضعیت HTTP و رفتار Reverse Proxy بسیار مفید است.


ارسال فایل با Netcat

دریافت‌کننده:

 
nc -l 4444 > received_file

فرستنده:

 
nc domain.com 4444 < original_file

انتقال کل دایرکتوری:

 
# Receiver nc -l 4444 | tar xzvf - # Sender 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

⚠️ فقط برای تست. نه امنیت دارد، نه مناسب استفاده واقعی است.


تفسیر خروجی‌های خاموش (به‌خصوص در UDP)

  • در TCP سکوت معمولاً یعنی اتصال برقرار شده ولی سرویس منتظر ورودی است.

  • در UDP سکوت کاملاً طبیعی است و هیچ تضمینی برای دریافت پاسخ وجود ندارد.

راهکارها:

  • استفاده از -v

  • بررسی ترافیک با tcpdump یا Wireshark

  • استفاده از ابزارهای تخصصی‌تر مثل dig یا iperf


مقایسه Netcat با Telnet و Socat

ویژگیTelnetNetcat
TCPدارددارد
UDPندارددارد
اسکریپت‌پذیریمحدودبالا
وضعیتمنسوخفعال

socat امکانات حرفه‌ای‌تری مثل SSL، ارتباط Full-Duplex و اتصال Streamهای مختلف دارد اما یادگیری آن سخت‌تر است.


جمع‌بندی

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

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