مقدمه
لینوکس بهصورت پیشفرض مجموعهای گسترده از ابزارهای خط فرمان قدرتمند را در اختیار کاربران قرار میدهد. یکی از کاربردیترین این ابزارها 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 به میزبان مقصد برقرار میکند:
این دستور مشابه telnet عمل میکند، با این تفاوت که اتصال کاملاً رمزنگارینشده است.
برای ارسال بسته UDP از گزینه -u استفاده میشود:
برای اسکن یک بازه از پورتها:
در بسیاری از سیستمها، دستور nc در واقع یک لینک به یکی از نسخههای Netcat است و رفتار آن ممکن است متفاوت باشد.
تفاوت nc ، ncat و netcat-openbsd چیست؟
netcat-openbsd
نسخه پیشفرض در توزیعهای مبتنی بر Debian مانند Ubuntu است و امکانات زیر را دارد:
-
تعیین Timeout با
-w -
اسکن بدون ارسال داده با
-z -
غیرفعالسازی DNS با
-n -
پشتیبانی از UDP و IPv6
نصب:
nc
یک دستور مستقل نیست، بلکه لینک یا Alias به یکی از نسخههای Netcat است. برای بررسی نسخه واقعی:
ncat
نسخه بازنویسیشده توسط پروژه Nmap که در CentOS و RHEL استفاده میشود و امکاناتی مثل:
-
رمزنگاری SSL
-
پشتیبانی از Proxy
-
Broker Connection
مثال:
اسکن پورت با Netcat
برای اسکن پورتها از گزینه -z استفاده میشود:
اگر IP را میدانید، برای سرعت بیشتر از -n استفاده کنید:
فیلتر خروجی پورتهای باز:
برقراری ارتباط دوطرفه با Netcat
روی سیستم اول (سرور):
روی سیستم دوم (کلاینت):
پس از اتصال، هر متنی که تایپ شود در هر دو سمت نمایش داده میشود. برای خروج:
استفاده از Netcat برای دیباگ Real-Time
مشاهده Banner سرویسها
مثلاً برای SMTP:
خروجی:
تست دستی HTTP
این روش برای بررسی هدرها، وضعیت HTTP و رفتار Reverse Proxy بسیار مفید است.
ارسال فایل با Netcat
دریافتکننده:
فرستنده:
انتقال کل دایرکتوری:
راهاندازی وبسرور بسیار ساده با Netcat
اجرای یکبار:
اجرای دائمی:
⚠️ فقط برای تست. نه امنیت دارد، نه مناسب استفاده واقعی است.
تفسیر خروجیهای خاموش (بهخصوص در UDP)
-
در TCP سکوت معمولاً یعنی اتصال برقرار شده ولی سرویس منتظر ورودی است.
-
در UDP سکوت کاملاً طبیعی است و هیچ تضمینی برای دریافت پاسخ وجود ندارد.
راهکارها:
-
استفاده از
-v -
بررسی ترافیک با tcpdump یا Wireshark
-
استفاده از ابزارهای تخصصیتر مثل dig یا iperf
مقایسه Netcat با Telnet و Socat
| ویژگی | Telnet | Netcat |
|---|---|---|
| TCP | دارد | دارد |
| UDP | ندارد | دارد |
| اسکریپتپذیری | محدود | بالا |
| وضعیت | منسوخ | فعال |
socat امکانات حرفهایتری مثل SSL، ارتباط Full-Duplex و اتصال Streamهای مختلف دارد اما یادگیری آن سختتر است.
جمعبندی
Netcat یکی از ابزارهای کلاسیک اما همچنان ضروری دنیای لینوکس و شبکه است. این ابزار به شما اجازه میدهد ارتباطات سطح پایین شبکه را بهصورت شفاف، سریع و قابل اسکریپت مدیریت کنید.
در این راهنمای جامع از دیدگاه، با کاربردهای عملی Netcat از اسکن پورت گرفته تا انتقال فایل، دیباگ سرویسها، راهاندازی سرور ساده و مقایسه با ابزارهای دیگر آشنا شدیم.
اگرچه Netcat برای محیطهای Production امن نیست، اما برای تست، عیبیابی و یادگیری شبکه، هنوز هم یکی از بهترین انتخابهاست.

