tcpdump یک ابزار شبکه است که برای ضبط ترافیک ورودی و خروجی استفاده می شود. در اینجا همه چیزهایی است که باید در مورد استفاده از tcpdump در لینوکس بدانید.
لینوکس مجهز به مجموعه ای از ابزارهای شبکه برای انتخاب است. tcpdump یکی از ابزارهای شبکه قدرتمندی است که می تواند ترافیک شبکه را در صورت نیاز به عیب یابی خطاهای شبکه در لینوکس ضبط و تجزیه و تحلیل کند.
بیایید با دستور tcpdump عمل کنیم و نحوه استفاده از آن برای گرفتن ترافیک شبکه را بررسی کنیم.
نصب tcpdump در لینوکس
tcpdump معمولاً با تمام توزیعهای اصلی لینوکس و جایگزینهای مبتنی بر امنیت از پیش نصب شده است. بنابراین باید بتوانید بلافاصله با تایپ کردن tcpdump با پیشوند sudo از آن استفاده کنید.
در صورتی که نمی توانید دستور tcpdump را اجرا کنید و در خطای “tcpdump: فرمان یافت نشد” گیر کرده اید، بیایید نحوه نصب tcpdump را در دستگاه لینوکس خود بیاموزیم.
برای نصب tcpdump، ترمینال را روشن کنید و دستور مربوط به توزیع لینوکس که در حال حاضر استفاده می کنید را اجرا کنید:
در مشتقات Debian/Ubuntu اجرا کنید:
sudo apt-get install tcpdump
در سیستم های مبتنی بر Arch، اجرا کنید:
sudo pacman -S tcpdump
برای نصب ابزار tcpdump روی Fedora، CentOS و RHEL، دستور زیر را صادر کنید:
sudo dnf install tcpdump
توجه داشته باشید که اگر از شما خواسته شد libcap را نصب کنید، Yes یا Y را تایپ کنید زیرا یک وابستگی اصلی است، بدون آن tcpdump از راهاندازی خودداری میکند. این باید ابزار tcpdump را نصب کند و خطای “command not found” را حل کند.
اکنون که tcpdump روی سیستم شما نصب شده است، بیایید گزینه ها و عملکردهای مختلفی را که ارائه می دهد بررسی کنیم.
ضبط ترافیک شبکه با tcpdump
tcpdump پرچم های زیادی را برای تغییر اجرای خود ارائه می دهد، اما می توان آن را به عنوان یک دستور مستقل نیز اجرا کرد. با این حال، اجرای tcpdump بدون هیچ گونه پرچم یا آرگومان، پتانسیل کامل آن را نادیده می گیرد. همیشه بهتر است از چند پرچم برای تغییر دادن اجرا و خروجی در صورت لزوم استفاده کنید.
برای نظارت بر انتقال شبکه با tcpdump، این دستور را تایپ کنید:
sudo tcpdump
اکنون tcpdump شروع به گرفتن خودکار بسته های شبکه می کند تا زمانی که سیگنال وقفه با Ctrl + Z ارسال شود تا فرآیند به صورت دستی شکسته شود. برای محدود کردن تعداد کل بستههای ضبطشده، از پرچم -c استفاده کنید و محدودیت مورد نظر بستهها را در کنار آن تایپ کنید:
sudo tcpdump -c 5
اگر در حال حاضر نمی توانید خروجی را درک کنید، ابتدا باید با فرمت خروجی tcpdump آشنا شوید.
رابط های شبکه موجود را با tcpdump بررسی کنید
به طور پیش فرض، tcpdump ترافیک را از هر یک از رابط های شبکه موجود می گیرد. اگر چندین رابط شبکه فعال دارید، ممکن است بخواهید رابط شبکه ای را تعریف کنید که tcpdump باید بسته ها را از آن ضبط کند. برای شروع tcpdump در یک رابط خاص، ابتدا باید با نام رابط آشنا شوید.
در اینجا نحوه فهرست کردن تمام رابط های شبکه موجود با tcpdump آورده شده است:
sudo tcpdump -D
یا می توانید پرچم –list-interfaces را به دستور اضافه کنید:
sudo tcpdump --list-interfaces
خروجی بازگردانده شده حاوی لیستی از تمام رابط های شبکه فعال است که tcpdump می تواند به آنها گوش دهد. برای پیکربندی tcpdump برای ضبط انتقال از یک رابط شبکه خاص، این دستور را تایپ کنید:
sudo tcpdump -i interface_id
یا می توانید پرچم –interface را به دستور اضافه کنید:
sudo tcpdump --interface interface_id
اکنون که چند بسته را ضبط کردهایم، بیایید آنها را از نزدیک مطالعه کنیم و یاد بگیریم که چگونه میتوانید خروجی را تغییر دهید تا خواناتر باشد.
کاوش فیلترهای tcpdump
tcpdump قادر است حجم عظیمی از ترافیک را در یک اجرا ثبت کند. چنین بار اطلاعاتی می تواند هنگام بررسی یا عیب یابی مسائل مربوط به یک میزبان یا پروتکل شبکه خاص، شما را از مسیر خارج کند.
اینجا جایی است که فیلترهای tcpdump وارد عمل می شوند. میتوانید دستور tcpdump را با پرچمهای خاصی اضافه کنید تا ترافیک شبکه را فیلتر کرده و بستههای خاصی را ضبط کنید. سپس میتوانید آن بستهها را ذخیره کرده و بعداً آنها را تجزیه و تحلیل کنید تا به ریشه مشکلات مربوط به شبکه برسید. بیایید نحوه استفاده از فیلترها در tcpdump را بیاموزیم.
فیلتر بسته ها بر اساس پروتکل شبکه در حال استفاده
برای فیلتر کردن بستههایی که از طریق یک پروتکل خاص منتقل میشوند، نام پروتکل را با دستور tcpdump تایپ کنید و فقط بستههایی را که از طریق پروتکل شبکه تعریفشده سفر میکنند، ضبط میکند.
به عنوان مثال، برای گرفتن بسته های مبتنی بر ICMP، به سادگی می توانید icmp را در انتهای دستور tcpdump متصل کنید. اگر بخواهید فقط بسته های UDP یا TCP را ضبط کنید، این روند یکسان است.
sudo tcpdump -c 5 icmp
این دستور تنها در صورتی خروجی را برمی گرداند که تبادل داده از طریق پروتکل ICMP وجود داشته باشد.
فیلتر بسته ها بر اساس میزبان
می توانید tcpdump را برای گرفتن بسته های مربوط به یک هاست با پارامتر میزبان پیکربندی کنید. این به ویژه زمانی مفید است که تمام سیستم های شبکه شما به جز یک مورد کار می کنند. این فیلتر به شما امکان می دهد تحقیقات هدفمند را انجام دهید و گردش کار عیب یابی کلی را سرعت می بخشد زیرا اطلاعات غیر ضروری شما را پرت نمی کند.
برای گرفتن بسته های مربوط به یک میزبان خاص، آدرس شبکه میزبان را با پارامتر میزبان تعریف کنید:
sudo tcpdump -c 5 host 192.168.2.1
مشابه فیلتر پروتکل شبکه، این دستور تنها در صورتی خروجی را برمی گرداند که هر گونه انتقال در حال انجام مربوط به میزبان تعریف شده باشد.
فیلتر بسته ها بر اساس پورت فعال
tcpdump مجهز به پارامتری است که به شما امکان می دهد ترافیک شبکه را فیلتر کنید و فقط بسته هایی را که به یا از یک پورت خاص منتقل می شوند را ضبط کنید.
برای گرفتن بسته هایی که از یک پورت خاص می آیند، پرچم پورت را به دستور tcpdump اضافه کنید و شماره پورت را در کنار آن تعریف کنید. به عنوان مثال، برای گرفتن هرگونه ترافیک HTTP ورودی یا خروجی، پورت 80 را تعریف کنید:
sudo tcpdump -c 5 port 80
tcpdump در درگاه 80 گوش می دهد و منتظر انتقال HTTP است. هنگامی که بسته های HTTP را در شبکه شناسایی کرد، آنها را ضبط می کند.
برای مرتب سازی پیشرفته، فیلترها را با هم ترکیب کنید
بخشهای قبلی در مورد اینکه چگونه میتوانید ترافیک را بر اساس پورت، پروتکل یا میزبان فیلتر کنید، بحث شد، اما اگر بخواهید ترافیک یک پورت یک میزبان خاص را با استفاده از یک پروتکل شبکه خاص ضبط کنید، چه؟ خوب، شما خوش شانس هستید زیرا این امکان وجود دارد و به توانایی استفاده از عملگرهای منطقی با دستور tcpdump نسبت داده می شود.
برای گرفتن بسته ها از یک میزبان جداگانه با استفاده از پورت 443، از این دستور استفاده کنید:
sudo tcpdump -c 5 host 192.168.2.1 and port 443
محتویات بسته های ضبط شده را بررسی کنید
به طور پیش فرض، tcpdump سرصفحه های یک بسته را در خروجی نمایش می دهد. در حالی که در بیشتر موارد بیش از اندازه کافی است، گاهی اوقات ممکن است بخواهید یا نیاز داشته باشید که به داده های گرفته شده عمیق تر نگاه کنید. شما می توانید پارامترهای خاصی را با دستور tcpdump برای بازرسی محتوای بسته ضبط شده ارسال کنید.
در اینجا نحوه مشاهده محتوای بسته ها آمده است:
sudo tcpdump -c 5 -x
این دستور نسخه هگزا محتوای یک بسته ضبط شده را برمی گرداند. اگر می خواهید فرم ASCII داده ها را مشاهده کنید، می توانید پارامتر -A را با:
sudo tcpdump -A
خروجی tcpdump را در یک فایل ذخیره کنید
تقریباً مانند هر ابزار خط فرمان لینوکس دیگر، میتوانید خروجی تولید شده توسط tcpdump را در فایلی ذخیره کنید تا بعداً به آن ارجاع داده شود.
این را می توان با افزودن پرچم -w به دستور انجام داد. پس از اجرا، tcpdump داده های گرفته شده را در یک فایل pcap. ذخیره می کند که می تواند بعداً با tcpdump یا سایر ابزارهای نظارت بر شبکه مانند Wireshark تجزیه و تحلیل شود.
این دستور را تایپ کنید تا خروجی دستور tcpdump خود را در یک فایل ذخیره کنید:
sudo tcpdump -w capture.pcap
برای خواندن یک فایل pcap، می توانید از tcpdump با پارامتر -r استفاده کنید:
sudo tcpdump -r capture.pcap
بهترین ابزارهای شبکه برای لینوکس
لینوکس با انبوهی از ابزارهای شبکه عرضه میشود که میتواند هر مشکل شبکه را تا زمانی که در بخش نرمافزاری باشد حل کند. دانستن نحوه استفاده از چند مورد از بهترین ابزارهای شبکه در لینوکس قطعا مفید خواهد بود، خواه شما یک سیستم مدیریت شبکه برای زندگی باشید یا فقط یک کاربر روزمره لینوکس.
از آنجایی که فهرست واقعی دستورات شبکه موجود ممکن است بیش از حد قابل درک باشد، در اینجا لیستی از مهمترین ابزارهای شبکه لینوکس که باید بدانید آورده شده است.