tcpdump захоплює пакети тільки тоді, коли вказано інтерфейс


2

Я спробував 3 різні способи захоплення потоку пакетів, що надходять до мого сервера. Дві з них працюють, а треті не. Я намагаюся визначити, чому його пропускає третій підхід:

tcpdump -i eth1 udp port 5052
tcpdump -i eth1 -p udp port 5052
tcpdump -i any udp port 5052
tcpdump udp port 5052 #Does not work

Моя теорія полягала в тому, що будь-який підхід виявився невдалим, тому що захоплення не було нерозбірливим, і воно має бути де-небудь скинуте iptables. Однак, навіть коли я роблю перше захоплення нерозбірливим (явно встановлюючи -p), він захоплює пакети. Що ще може відрізнятися між ними?

ОНОВЛЕННЯ: Я зрозумів, що не роблю саме те, що думав. Є фактично 4 варіації, і той, який не вдається тільки тоді, коли я не вказую інтерфейс. Що буде між різними -i прапор і -i any?


1
З прапором без -i, tcpdump буде використовувати першу мережу - це може бути не те, що ви хочете (eth0 у вашому випадку)
Eugen Rieck

Ах, так, це дійсно пояснює проблему.
Pace

Відповіді:


0

Коли ви починаєте tcpdump, він повідомляє, який інтерфейс він слухає:

# tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

Сторінка керівництва дуже чітко про це:

-i Слухайте на інтерфейсі. Якщо не вказано, tcpdump виконує пошук у списку інтерфейсу системи для інтерфейсу з найнижчим номером, налаштованим (за винятком зворотного зв'язку). Розв'язки розриваються, вибираючи найбільш ранній матч.

Це означає, що поки у вас є налаштований eth0 інтерфейс, eth1 ніколи не буде вибрано як інтерфейс захоплення за умовчанням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.