رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش عملی استفاده از 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 است. برای بررسی نسخه واقعی:

2 خط
which nc
ls -l $(which nc)
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ncat

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

  • رمزنگاری SSL

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

  • Broker Connection

مثال:

ncat --ssl -l 4444
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

اسکن پورت با Netcat

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

اگر پورتی باز نبود، ممکن است لازم باشد قوانین فایروال iptables را نیز بررسی کنید.

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

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

برای برقراری اتصال امن‌تر بین سرورها می‌توانید از SSH Port Forwarding نیز استفاده کنید.

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
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

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

5 خط
# 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 امن نیست، اما برای تست، عیب‌یابی و یادگیری شبکه، هنوز هم یکی از بهترین انتخاب‌هاست.

برای برقراری ارتباط امن و رمزنگاری‌شده با سرورها، مطالعه آموزش اتصال به سرور ریموت با SSH نیز توصیه می‌شود.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS