TCPDump چیست؟ معرفی ابزار تحلیل ترافیک شبکه و دستورات کاربردی آن

TCPDump یکی از ابزارهای شناختهشده برای مشاهده، ضبط و تحلیل بستههای شبکه در سیستمعاملهای مبتنی بر Unix و Linux است. این ابزار از طریق خط فرمان اجرا میشود و میتواند بستههایی را که از یک رابط شبکه عبور میکنند دریافت کرده و اطلاعات مربوط به آنها را نمایش دهد.
مدیران شبکه و سرورها از TCPDump برای بررسی مشکلات ارتباطی، عیبیابی سرویسها، تحلیل درخواستهای شبکه و مشاهده ترافیک ورودی و خروجی استفاده میکنند. یکی از ویژگیهای مهم TCPDump این است که بدون نیاز به محیط گرافیکی میتوان با استفاده از آن ترافیک شبکه را بررسی کرد؛ به همین دلیل روی سرورها و سیستمهایی که معمولا محیط دسکتاپ ندارند، کاربرد زیادی دارد.
TCPDump چیست؟
TCPDump یک Packet Analyzer مبتنی بر خط فرمان است که برای دریافت و نمایش بستههای شبکه از کتابخانهای به نام libpcap استفاده میکند. libpcap امکان دریافت بستههای شبکه را در سیستمعامل فراهم میکند و ابزارهایی مانند TCPDump از آن برای Capture کردن ترافیک استفاده میکنند.
TCPDump میتواند اطلاعات مختلفی از بستههای شبکه را نمایش دهد؛ از جمله آدرس IP مبدا و مقصد، پورتهای ارتباطی، پروتکل مورد استفاده و برخی اطلاعات مربوط به محتوای بسته.
این ابزار بیشتر برای تحلیل ترافیک در سطح شبکه و انتقال استفاده میشود و با استفاده از Filterها میتوان مشخص کرد چه بستههایی دریافت و نمایش داده شوند.
TCPDump چه کاربردی دارد؟
یکی از کاربردهای اصلی TCPDump عیبیابی مشکلات شبکه است. برای مثال، اگر یک سرور نتواند به یک سرویس خاص متصل شود، میتوان با TCPDump بررسی کرد که آیا بستهها از رابط شبکه ارسال میشوند و آیا پاسخی از سمت مقصد دریافت میشود یا خیر.
TCPDump برای بررسی مشکلات DNS، HTTP، HTTPS، SSH، TCP، UDP و ICMP نیز کاربرد دارد. البته اطلاعاتی که از ترافیک رمزنگاریشده مانند HTTPS قابل مشاهده است، به دلیل رمزنگاری محتوا محدودتر خواهد بود.
از TCPDump همچنین میتوان برای ضبط ترافیک و ذخیره آن در فایل استفاده کرد تا تحلیل دقیقتر در زمان دیگری انجام شود.
TCPDump چگونه کار میکند؟
TCPDump بستههای عبوری از رابط شبکه را دریافت میکند و اطلاعات آنها را بر اساس Filter انتخابشده نمایش میدهد. برای مثال، میتوان به TCPDump گفت فقط بستههایی را نمایش دهد که از یک آدرس IP مشخص میآیند یا به یک پورت خاص مربوط هستند.
یک دستور ساده برای مشاهده ترافیک روی یک رابط شبکه به شکل زیر است:
tcpdump -i eth0
در این دستور، گزینه -i رابط شبکه مورد نظر را مشخص میکند و eth0 نام رابط شبکه است.
نام رابط شبکه در سیستمهای مختلف ممکن است متفاوت باشد. برای مشاهده رابطهای موجود میتوان از دستور زیر استفاده کرد:
tcpdump -D
در بسیاری از توزیعهای جدید Linux ممکن است نام رابطهایی مانند ens33، ens160 یا enp0s3 را مشاهده کنید.
چگونه ترافیک یک پورت خاص را مشاهده کنیم؟
یکی از قابلیتهای کاربردی TCPDump امکان فیلتر کردن ترافیک بر اساس شماره پورت است. برای مثال، اگر بخواهیم ترافیک TCP مربوط به پورت 80 را مشاهده کنیم، میتوان از دستور زیر استفاده کرد:
tcpdump -i eth0 port 80
این روش هنگام عیبیابی سرویسهای وب کاربرد دارد و به شما اجازه میدهد فقط بستههای مربوط به پورت مورد نظر را بررسی کنید.
برای مشاهده ترافیک HTTPS نیز میتوان پورت 443 را فیلتر کرد:
tcpdump -i eth0 port 443
البته TCPDump در این حالت بستههای مربوط به ارتباط را نمایش میدهد، اما محتوای رمزنگاریشده HTTPS بهصورت متن قابل خواندن نمایش داده نمیشود.
فیلتر کردن ترافیک بر اساس IP
میتوان TCPDump را طوری تنظیم کرد که فقط ترافیک مربوط به یک IP مشخص را نمایش دهد. برای مثال:
tcpdump -i eth0 host 192.168.1.10
در این حالت بستههایی که مبدا یا مقصد آنها IP مشخصشده باشد نمایش داده میشوند.
اگر فقط ترافیک ورودی از یک IP خاص را بخواهیم، میتوان از src استفاده کرد:
tcpdump -i eth0 src host 192.168.1.10
برای مشاهده ترافیک ارسالشده به یک IP نیز میتوان از dst استفاده کرد:
tcpdump -i eth0 dst host 192.168.1.10
این فیلترها در بررسی ارتباط میان یک سرور و یک مقصد مشخص بسیار کاربردی هستند.
چگونه ترافیک TCP یا UDP را بررسی کنیم؟
TCPDump امکان فیلتر کردن بستهها بر اساس پروتکل را نیز فراهم میکند. برای مشاهده بستههای TCP میتوان از دستور زیر استفاده کرد:
tcpdump -i eth0 tcp
برای UDP نیز دستور زیر قابل استفاده است:
tcpdump -i eth0 udp
این قابلیت به مدیر شبکه اجازه میدهد هنگام بررسی یک مشکل، ترافیک غیرمرتبط را حذف کند و فقط بستههای مربوط به پروتکل مورد نظر را ببیند.
ذخیره ترافیک TCPDump در فایل
در بسیاری از مواقع بهتر است ترافیک شبکه مستقیما در ترمینال نمایش داده نشود و در یک فایل ذخیره شود. TCPDump برای این کار از فرمت PCAP استفاده میکند.
برای ذخیره بستههای دریافتشده در یک فایل میتوان از گزینه -w استفاده کرد:
tcpdump -i eth0 -w capture.pcap
فایل ایجادشده را میتوان بعدا با ابزارهایی مانند Wireshark باز کرد و اطلاعات بستهها را با جزئیات بیشتری بررسی کرد.
برای خواندن یک فایل PCAP ذخیرهشده نیز میتوان از گزینه -r استفاده کرد:
tcpdump -r capture.pcap
این قابلیت برای زمانی که تحلیل شبکه نیاز به زمان بیشتری دارد یا قرار است فایل Capture برای بررسی در اختیار فرد دیگری قرار گیرد، بسیار مفید است.
نمایش اطلاعات بیشتر از بستهها
بهصورت پیشفرض TCPDump اطلاعات خلاصهای از بستهها را نمایش میدهد. با استفاده از گزینههای مختلف میتوان جزئیات بیشتری دریافت کرد.
برای نمایش اطلاعات دقیقتر میتوان از -v، -vv یا -vvv استفاده کرد:
tcpdump -i eth0 -vv
هرچه سطح Verbose بالاتر برود، اطلاعات بیشتری درباره بستهها نمایش داده میشود.
گزینه -n نیز از تبدیل آدرسهای IP به نام میزبان جلوگیری میکند:
tcpdump -i eth0 -n
این گزینه در بسیاری از بررسیها مفید است، زیرا از انجام DNS Lookup برای نمایش نام میزبان جلوگیری میکند و خروجی TCPDump سریعتر و سادهتر قابل بررسی خواهد بود.
TCPDump و Wireshark چه تفاوتی دارند؟
TCPDump و Wireshark هر دو برای Capture و تحلیل ترافیک شبکه استفاده میشوند، اما روش استفاده از آنها متفاوت است.
TCPDump یک ابزار خط فرمان است و برای استفاده روی سرورها، سیستمهای بدون محیط گرافیکی و بررسی سریع ترافیک بسیار مناسب است. خروجی آن نیز معمولا خلاصه و متنی است.
Wireshark محیط گرافیکی دارد و امکانات بسیار گستردهای برای بررسی جزئیات بستهها، پروتکلها و جریانهای شبکه ارائه میدهد. یکی از روشهای رایج این است که Capture با TCPDump انجام شود و فایل PCAP برای تحلیل دقیقتر در Wireshark باز شود.
بنابراین این دو ابزار لزوما رقیب مستقیم یکدیگر نیستند و در بسیاری از سناریوها میتوانند مکمل هم باشند.
آیا TCPDump روی Windows قابل استفاده است؟
TCPDump در اصل بیشتر در محیطهای Unix و Linux استفاده میشود، اما نسخهها و ابزارهای مشابهی برای Windows نیز وجود دارند.
با این حال، اگر هدف مدیریت و عیبیابی سرورهای Linux باشد، TCPDump یکی از ابزارهای رایج خط فرمان است و در بسیاری از توزیعهای Linux میتوان آن را از طریق مدیر بسته نصب کرد.
برای مثال، در سیستمهای مبتنی بر Debian میتوان TCPDump را با استفاده از APT نصب کرد:
sudo apt install tcpdump
پس از نصب، ممکن است برای دریافت بستهها به دسترسیهای مدیریتی نیاز داشته باشید.
نکات مهم هنگام استفاده از TCPDump
Capture کردن ترافیک شبکه میتواند حجم زیادی از داده تولید کند. اگر بدون Filter مناسب TCPDump را برای مدت طولانی اجرا کنید، هم خروجی بسیار زیادی تولید میشود و هم ممکن است فایل Capture فضای قابل توجهی اشغال کند.
بهتر است هنگام عیبیابی، تا حد امکان Filter مناسبی برای IP، پورت یا پروتکل مورد نظر تعیین شود. همچنین اگر ترافیک در فایلی ذخیره میشود، باید فضای دیسک و مدت زمان Capture را در نظر گرفت.
موضوع امنیت و حریم خصوصی نیز اهمیت دارد. فایلهای PCAP ممکن است حاوی اطلاعات حساس مربوط به ارتباطات شبکه باشند؛ بنابراین باید مانند سایر دادههای حساس از آنها محافظت کرد.
آیا TCPDump محتوای بستهها را نشان میدهد؟
TCPDump میتواند بخشهایی از داده موجود در بستهها را در شرایط مناسب نمایش دهد، اما میزان اطلاعات قابل مشاهده به نوع پروتکل و نحوه رمزنگاری ارتباط بستگی دارد.
در ارتباطات رمزنگاریشده مانند HTTPS، محتوای اصلی درخواست و پاسخ بهصورت رمزنگاریشده منتقل میشود و TCPDump بهتنهایی نمیتواند آن را به متن عادی تبدیل کند.
در مقابل، اطلاعاتی مانند آدرسهای IP، پورتها، پروتکل و برخی اطلاعات مربوط به ساختار بستهها معمولا قابل مشاهده هستند. همین اطلاعات نیز برای بسیاری از عملیات عیبیابی شبکه کافی است.
چرا TCPDump برای مدیران سرور مهم است؟
در بسیاری از سرورها محیط گرافیکی وجود ندارد و مدیریت سیستم از طریق SSH و خط فرمان انجام میشود. TCPDump در چنین محیطی امکان مشاهده مستقیم ترافیک شبکه را فراهم میکند.
برای مثال، زمانی که یک سرویس روی سرور در دسترس نیست، میتوان با TCPDump بررسی کرد که آیا درخواستها به سرور میرسند یا خیر. همچنین میتوان بررسی کرد که سرور پاسخ مربوط به درخواست را ارسال میکند یا ارتباط در مرحله خاصی متوقف میشود.
به همین دلیل TCPDump یکی از ابزارهای مفید برای عیبیابی شبکه در Linux و محیطهای سروری است. یادگیری Filterهای آن نیز به مدیر سیستم اجازه میدهد بدون نیاز به ابزارهای گرافیکی، بخش مشخصی از ترافیک را بررسی کند.
سوالات متداول
TCPDump یک ابزار خط فرمان برای Capture و تحلیل بستههای شبکه است که بیشتر در سیستمهای Unix و Linux استفاده میشود.
TCPDump برای مشاهده و ضبط ترافیک شبکه و عیبیابی مشکلات ارتباطی، بررسی پورتها، تحلیل ترافیک TCP و UDP و بررسی ارتباط میان سیستمها کاربرد دارد.
بله. TCPDump یک ابزار متنباز و رایگان است و میتوان آن را در بسیاری از سیستمهای Unix و Linux استفاده کرد.
TCPDump یک ابزار خط فرمان است که برای Capture و بررسی سریع ترافیک مناسب است، در حالی که Wireshark محیط گرافیکی و امکانات گستردهتری برای تحلیل جزئیات بستهها دارد.
PCAP فرمتی برای ذخیره بستههای Captureشده شبکه است. فایلهای PCAP را میتوان بعدا با TCPDump یا ابزارهایی مانند Wireshark بررسی کرد.
بله. TCPDump یکی از ابزارهای رایج برای تحلیل شبکه در Linux است و میتوان آن را از طریق مدیر بسته بسیاری از توزیعهای لینوکس نصب کرد.
TCPDump میتواند بستهها و اطلاعاتی مانند IP، پورت و مشخصات ارتباط HTTPS را مشاهده کند، اما محتوای اصلی ارتباط HTTPS به دلیل رمزنگاری بهصورت متن عادی قابل مشاهده نیست.
بسته به سیستمعامل و تنظیمات دسترسی، Capture کردن بستههای شبکه ممکن است به دسترسیهای مدیریتی نیاز داشته باشد. در Linux معمولا اجرای TCPDump با دسترسی Root یا مجوزهای لازم انجام میشود.





























شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.