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

همچنین نگاه کنید به: راهنمایی برای راه اندازی اتصال به اینترنت در اوبونتو ، دبیان ، سرور اوبونتو

نصب و راه اندازی

اکثر توسعه دهندگان سیستم عامل های مبتنی بر لینوکس شامل ابزار tcpdump در لیست از پیش نصب شده هستند، اما اگر به دلایلی در توزیع تو نیست، همیشه می توانید آن را از طریق ترمینال دانلود و نصب کنید. اگر سیستم عامل شما مبتنی بر دبیان است و این اوبونتو، لینوکس مینت، لینوکس کالی و مانند آن است، شما باید این دستور را اجرا کنید:

sudo apt install tcpdump

هنگام نصب باید رمز عبور را وارد کنید. لطفا توجه داشته باشید که هنگام تایپ کردن آن نمایش داده نمی شود، همچنین برای تایید نصب، باید نماد "D" را وارد کنید و Enter را فشار دهید.

اگر شما Red Hat، Fedora یا CentOS دارید، دستور نصب مانند این خواهد بود:

sudo yam install tcpdump

پس از نصب نرم افزار، شما می توانید بلافاصله از آن استفاده کنید. این و خیلی بیشتر بعدا در متن بحث خواهند شد.

همچنین ببینید: راهنمای نصب PHP برای سرور اوبونتو

نحو

مانند هر فرمان دیگر، tcpdump دارای نحو خاص خود است. دانستن او، شما می توانید تمام پارامترهای لازم را که هنگام اجرای فرمان مورد توجه قرار می گیرند تنظیم کنید. نحو به شرح زیر است:

tcpdump опции -i интерфейс фильтры

هنگام استفاده از دستور، باید رابط را برای پیگیری مشخص کنید. فیلترها و گزینه ها متغیرهای اجباری نیستند، اما برای تنظیمات انعطاف پذیر تر اجازه می دهند.

گزینه ها

اگرچه لازم نیست که گزینه را مشخص کنید، هنوز لازم است که لیستهای موجود را فهرست کنید. جدول کامل لیست کامل خود را نشان نمی دهد، بلکه تنها محبوب ترین آنها است، اما برای اکثر وظایف آنها بیش از اندازه کافی است.

گزینه تعریف
-A به شما اجازه می دهد بسته بندی را در فرمت ASCII مرتب کنید
-l یک ویژگی اسکرول اضافه می کند
-i پس از وارد شدن باید مشخص کنید رابط شبکه ای که نظارت خواهد شد. برای شروع ردیابی تمام رابطها، پس از انتخاب کلمه "هر" را وارد کنید.
-c پس از بررسی تعداد مشخص شده بسته، روند ردیابی را تکمیل می کند.
-w یک فایل متنی را با یک گزارش معتبر ایجاد می کند.
سطح اتصال داده اینترنت را نشان می دهد
-L تنها پروتکل هایی را که توسط رابط شبکه مشخص شده پشتیبانی می کنند را نمایش می دهد.
-C در هنگام نوشتن یک بسته، یک فایل دیگر ایجاد می کند اگر اندازه آن بزرگتر از مشخص شده باشد.
-r فایل را برای خواندن که با گزینه -w ایجاد شده باز می کند.
فرمت TimeStamp برای ضبط بسته ها استفاده می شود.
جی به شما امکان می دهد تمامی فرمت های موجود TimeStamp را مشاهده کنید
-G مورد استفاده برای ایجاد یک فایل با سیاهههای مربوط این گزینه همچنین نیاز به مقدار موقت دارد، پس از آن یک ورود جدید ایجاد خواهد شد
-v، -vv، -vvv بسته به تعداد کاراکترهای موجود در گزینه، خروجی فرمان دقیق تر خواهد شد (افزایش به طور مستقیم با تعداد کاراکترها متناسب است)
-f خروجی نام دامنه آدرس IP را نشان می دهد
-F به شما امکان می دهد اطلاعاتی را که از رابط شبکه نیست، بخوانید، اما از فایل مشخص شده
-D همه ی رابط های شبکه ای را که می توان استفاده کرد نشان می دهد.
-n نمایش نام دامنه را غیرفعال می کند
-Z کاربر را تعیین می کند که در آن حساب همه فایل ها ایجاد می شوند.
-K امتحان کردن تجزیه و تحلیل چکشی
-q تظاهرات اطلاعات مختصر
-H اجازه می دهد تا هدر 802.11s را شناسایی کند
من هنگام ضبط بسته ها در حالت مانیتور مورد استفاده قرار می گیرد.

پس از بررسی گزینه ها، در زیر ما به طور مستقیم به برنامه های خود را تبدیل. در ضمن، فیلترها در نظر گرفته خواهند شد.

فیلترها

همانطور که در ابتدای مقاله ذکر شد، می توانید فیلترها را به نحو tcpdump اضافه کنید. در حال حاضر محبوب ترین آنها در نظر گرفته خواهد شد:

فیلتر کردن تعریف
میزبان نام میزبان را مشخص می کند.
خالص زیر شبکه و شبکه را مشخص می کند
آی پی آدرس پروتکل را مشخص می کند
src بسته هایی را که از آدرس مشخص شده ارسال می کنند نمایش می دهد
دقت بسته هایی را که توسط آدرس مشخص شده دریافت می کنند نمایش می دهد.
arp، udp، tcp فیلتر کردن یکی از پروتکل ها
بندر نمایش اطلاعات مرتبط با یک پورت خاص
و، یا استفاده می شود برای ترکیب چندین فیلتر در یک فرمان.
کمتر، بیشتر بسته های خروجی کوچکتر یا بزرگتر از اندازه مشخص شده

تمام فیلترهای بالا را می توان با یکدیگر ترکیب کرد، بنابراین در صدور فرمان شما تنها اطلاعاتی را که می خواهید مشاهده کنید مشاهده خواهید کرد. برای درک دقیقتر استفاده از فیلترهای فوق، ارزش نمونه دادن است.

همچنین ببینید: دستورات اغلب مورد استفاده در ترمینال لینوکس

نمونه هایی از استفاده

گزینه های نحو اغلب استفاده شده از tcpdump اکنون لیست می شوند. غیر ممکن است همه آنها را فهرست کنید، زیرا تغییرات آنها ممکن است بی نهایت باشد.

مشاهده لیست رابط کاربری

توصیه می شود که هر کاربر ابتدا لیستی از تمام رابط های شبکه خود را که می تواند ردیابی شود، بررسی می کند. از جدول بالا می دانیم که برای انجام این کار از گزینه -D استفاده کنید، بنابراین در ترمینال، دستور زیر را اجرا کنید:

sudo tcpdump -D

مثال:

اجرای دستور tcpdump با گزینه d در لینوکس

همانطور که می بینید، هشت رابط در این مثال وجود دارد که می تواند با استفاده از دستور tcpdump مشاهده شود. مقاله نمونه هایی را با ppp0 ارائه می دهد، شما می توانید از هر نوع دیگری استفاده کنید.

گرفتن ترافیک عادی

اگر شما نیاز به پیگیری یک رابط شبکه واحد دارید، می توانید این کار را با گزینه -i انجام دهید . فراموش نکنید که پس از ورود به نام رابط، وارد شوید. در اینجا یک مثال از اجرای یک فرمان است:

sudo tcpdump -i ppp0

لطفا توجه داشته باشید: شما باید قبل از خود تیم وارد "sudo" شوید، زیرا این نیاز به کاربر فوق العاده است.

مثال:

مثال نمایش ترافیک رابط شبکه با استفاده از دستور tcpdump بدون استفاده از گزینه ها و فیلتر ها

توجه: پس از فشار دادن Enter در "ترمینال"، بسته های متوقف شده به طور مداوم نمایش داده می شود. برای متوقف کردن جریان خود، باید کلید ترکیبی Ctrl + C را فشار دهید.

اگر فرمان را بدون گزینه های اضافی و فیلتر اجرا کنید، فرمت زیر را برای نمایش بسته های ردیابی خواهید دید:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594

جایی که رنگ برجسته شده است:

  • آبی - زمان دریافت بسته؛
  • نارنجی - نسخه پروتکل؛
  • سبز - آدرس فرستنده؛
  • بنفش - آدرس گیرنده؛
  • خاکستری - اطلاعات اضافی در مورد TCP؛
  • قرمز - اندازه بسته (نمایش داده شده در بایت).

این نحو توانایی نمایش در پنجره "Terminal" بدون استفاده از گزینه های اضافی است.

ضبط ترافیک با گزینه -v

همانطور که از جدول شناخته شده، گزینه -v به شما اجازه می دهد میزان اطلاعات را افزایش دهید. بگذارید نمونه ای را در نظر بگیریم همان رابط را بررسی کنید:

sudo tcpdump -v -i ppp0

مثال:

یک مثال از نمایش ترافیک رابط شبکه با استفاده از دستور tcpdump با استفاده از گزینه -v در لینوکس

در اینجا می توانید ببینید که خط زیر در خروجی نمایش داده می شود:

IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52

جایی که رنگ برجسته شده است:

  • نارنجی - نسخه پروتکل؛
  • آبی - طول عمر پروتکل؛
  • سبز - طول هدر فیلد؛
  • بنفش - نسخه بسته tcp؛
  • قرمز اندازه بسته است.

همچنین در نحو فرمان میتوانید گزینه -vv یا -vvv را بنویسید که مقدار اطلاعات نمایش داده شده روی صفحه را افزایش می دهد.

گزینه -w و -r

جدول گزینه ذکر شده امکان ذخیره تمام داده های خروجی را به یک فایل جداگانه به طوری که آنها را می توان بعدا مشاهده کرد. گزینه -w مسئول این است. استفاده از آن بسیار ساده است، فقط آن را در فرمان وارد کنید و سپس نام فایل آینده را با فرمت ".pcap" وارد کنید . تمام مثالها را در نظر بگیرید:

sudo tcpdump -i ppp0 -w file.pcap

مثال:

مثال از گزینه -w در دستور tcpdump لینوکس

لطفا توجه داشته باشید: هنگام نوشتن سیاهههای مربوط به یک فایل، روی صفحه نمایش «ترمینال» هیچ متن نمایش داده نمی شود.

وقتی میخواهید خروجی ضبط شده را مشاهده کنید، باید از گزینه -r با نام پرونده قبلا ضبط شده استفاده کنید. این بدون گزینه ها و فیلترهای دیگر اعمال می شود:

sudo tcpdump -r file.pcap

مثال:

یک مثال از مشاهده فایل فرمان tcpdump قبلی با گزینه w

هر دوی این گزینه ها در مواردی که شما نیاز دارید حجم زیادی از متن را برای تجزیه و تحلیل بعدی ذخیره کنید کامل است.

فیلتر کردن IP

از جدول فیلتر، ما می دانیم که dst به شما اجازه می دهد تا تنها بسته هایی را که توسط آدرس مشخص شده در دستور نحوی دریافت شده اند، نمایش دهید. بنابراین، بسته های دریافت شده توسط رایانه شما بسیار مناسب است. برای انجام این کار، تیم فقط باید آدرس IP خود را مشخص کند:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

مثال:

مثال استفاده از فیلتر dst و ip در دستور tcpdump لینوکس

همانطور که می بینید، علاوه بر DST ، ما یک فیلتر IP در فرمان نیز ثبت کردیم. به عبارت دیگر، ما به کامپیوتر گفتیم که هنگام انتخاب بسته ها، او به آدرس IP خود توجه کرد و نه به پارامترهای دیگر.

با IP، شما می توانید بسته ها را فیلتر کنید و ارسال کنید. در مثال ما مجددا IP خود را ارائه می دهیم. به این معنی است که ما در حال حاضر پیگیری می کنیم که کدام بسته ها از رایانه ما به آدرس های دیگر ارسال می شوند. برای انجام این کار، دستور زیر را اجرا کنید:

sudo tcpdump -i ppp0 ip src 10.0.6.67

مثال:

یک مثال از استفاده از فیلتر src و ip در دستور tcpdump لینوکس

همانطور که می بینید، در نحو فرمان، ما فیلتر dst را به src تغییر دادیم، به این ترتیب دستگاه را برای جستجوی فرستنده توسط IP تغییر دادیم.

فیلتر کردن HOST

با تقسیم IP با دستور، می توانیم یک فیلتر میزبان را برای فیلتر کردن بسته ها با میزبان مورد علاقه مشخص کنیم. به عبارت دیگر، در نحو، به جای آدرس آی پی فرستنده / گیرنده، شما باید میزبان خود را مشخص کنید. این به نظر می رسد:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

مثال:

یک مثال از استفاده از فیلتر dst و میزبان در دستور tcpdump دستور لینوکس

در تصویر شما می توانید ببینید که در "ترمینال" تنها آن دسته از بسته های ارسال شده از IP ما را به میزبان google.com نمایش می دهد. همانطور که می بینید، به جای میزبان گوگل، می توانید هر نوع دیگری را وارد کنید.

همانطور که با فیلتر کردن IP، در نحو DST ، شما می توانید آن را با src جایگزین کنید تا بسته هایی که به کامپیوتر شما ارسال می شوند را مشاهده کنید:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

توجه: فیلتر میزبان باید بعد از dst یا src باشد، در غیر این صورت دستور خطایی ایجاد می کند. در مورد فیلتر کردن IP، برعکس، dst و src در مقابل فیلتر ip قرار دارند.

فیلتر و و یا

اگر شما نیاز به استفاده از چند فیلتر در یک بار در یک فرمان دارید، باید از فیلتر استفاده کنید و یا (بسته به مورد). مشخص کردن فیلترها در نحو و جداسازی آنها با این اپراتورها، شما آنها را "به عنوان" کار می کنید. به عنوان مثال، به نظر می رسد این است:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

مثال:

مثال استفاده از و یا و یا فیلتر در دستور tcpdump لینوکس

نحو دستورالعمل نشان می دهد که ما می خواهیم "ترمینال" تمام بسته هایی را که به آدرس 95.47.144.254 ارسال شده اند و بسته های دریافت شده توسط همان آدرس نمایش داده شوند، نمایش دهند. شما همچنین می توانید تعدادی متغیر را در این عبارت تغییر دهید. برای مثال، به جای IP، HOST را مشخص کنید یا آدرسهای خود را مستقیما جایگزین کنید.

پورت فیلتر و بندر

فیلتر پورت عالی است، زمانی که شما نیاز دارید اطلاعات مربوط به بسته ها را با یک پورت خاص دریافت کنید. بنابراین، اگر فقط نیاز به دیدن پاسخ ها یا نمایش داده ها DNS دارید، باید پورت 53 را مشخص کنید:

sudo tcpdump -vv -i ppp0 port 53

مثال:

یک مثال از استفاده از فیلتر پورت در دستور tcpdump لینوکس

اگر میخواهید بستههای HTTP را مشاهده کنید، باید پورت 80 را وارد کنید:

sudo tcpdump -vv -i ppp0 port 80

مثال:

مثال استفاده از فیلتر پورت در دستور tcpdump لینوکس

در میان چیزهای دیگر، ممکن است بلافاصله ردیابی دامنه های پورت. برای انجام این کار، از فیلتر portrange استفاده کنید:

sudo tcpdump portrange 50-80

یک مثال از استفاده از فیلتر portrange در دستور syntax tcpdump دستور لینوکس

همانطور که می بینید، در رابطه با فیلتر portrange ، لازم نیست که گزینه های اضافی را مشخص کنید. محدوده را فقط تنظیم کنید

فیلتر پروتکل

شما همچنین می توانید تنها ترافیک مربوط به هر پروتکل را نمایش دهید. برای انجام این کار از نام پروتکل به عنوان یک فیلتر استفاده کنید. بیایید به مثال udp نگاه کنیم :

sudo tcpdump -vvv -i ppp0 udp

مثال:

مثال فیلتر دستور tcpdump توسط پروتکل لینوکس

همانطور که در تصویر دیده می شود، پس از اجرای فرمان در ترمینال ، تنها بسته هایی با پروتکل udp نمایش داده می شوند. بر این اساس، میتوانید بر روی دیگران فیلتر کنید، به عنوان مثال arp :

sudo tcpdump -vvv -i ppp0 arp

یا TCP :

sudo tcpdump -vvv -i ppp0 tcp

خالص فیلتر کردن

اپراتور خالص به فیلتر کردن بسته ها بر اساس تعیین شبکه خود کمک می کند. این همان آسان برای استفاده به عنوان دیگران است - شما نیاز به مشخص کردن ویژگی خالص در نحو، و سپس وارد آدرس شبکه کنید. در اینجا یک مثال از این فرمان است:

sudo tcpdump -i ppp0 net 192.168.1.1

مثال:

مثال فیلتر tcpdump توسط نماد شبکه لینوکس

فیلتر بر اساس اندازه بسته

ما دو فیلتر جالب دیگر را در نظر نگرفتیم: کمتر و بیشتر . از جدول با فیلترها، ما می دانیم که آنها برای ارسال بسته های داده بزرگ ( کمتر ) یا کوچکتر ( بزرگتر ) از اندازه مشخص شده پس از وارد کردن ویژگی استفاده می شود.

فرض کنید ما فقط می خواهیم بسته هایی را که بیش از 50 بیت نیستند نظارت کنیم، سپس دستور زیر به صورت زیر است:

sudo tcpdump -i ppp0 less 50

مثال:

فیلتر کردن بسته توسط فیلتر اندازه آنها کمتر در فرمان tcpdump لینوکس

حالا بگذارید در بسته های Terminal که بیش از 50 بیت هستند نمایش داده شود:

sudo tcpdump -i ppp0 greater 50

مثال:

فیلترینگ بسته توسط فیلتر اندازه آنها بزرگتر از دستور tcpdump لینوکس است

همانطور که می بینید، آنها به طور یکسان اعمال می شوند، تنها تفاوت در نام فیلتر است.

نتیجه گیری

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