як зробити tcpdump для відображення ip та номера порту, але не імені хоста та протоколу


42

Я використовую tcpdump для деяких тестів, я хочу побачити IP та номер порту, але вихід tcpdump виглядає як

IP pl1snu.koren.kr.http > kitch.pl.sophia.inria.fr.dnp: Flags [P.], seq 54:72, ack 1, win 5792, length 18

він показує лише ім'я хоста та протокол для http, легко дізнатися, що це 80, але для dnp я повинен шукати

так чи можливо, як зробити tcpdump для відображення ip та номера порту, але не імені хоста та протоколу, якщо так, то як? Спасибі

Відповіді:


44

Додайте -nдо tcpdumpкомандного рядка.

З мандатів tcpdump :

-n Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.

Слід також зазначити, що на Fedora (та, можливо, інші похідні: RHEL, CentOS тощо) вони закріпили оригінальну версію tcpdump, щоб включити окремий варіант -nnдля видалення номерів портів. З сторінки керівництва :

-n     Don't convert host addresses to names.   This  can  be  used  to
              avoid DNS lookups.

-nn    Don't convert protocol and port numbers etc. to names either.

Номер порту все ще перетворюється на назву протоколу за допомогою-n
misteryes

"номер порту все ще перетворюється на ім'я протоколу за допомогою -n" Не з, наприклад, tcpdump 4.1.1, який постачається з OS X Mountain Lion, або з tcpdump, побудованим у верхній частині магістралі tcpdump.org Git. На скільки разів ТСРйітр ви бачите -n НЕ пригнічує перетворення номерів портів в імена протоколів?

5

Я використовую -nnпараметр.

-nn: Не вирішуйте імена хостів чи імена портів.

Виконайте це як:

tcpdump -nn 

2

-nпрацює лише для імен хостів, але не працює для номерів портів. -nnробить фокус для обох. Це запущена версія tcpdump 4.5.1 на Fedora 20 gnu / linux. Відповідь від @ATMc є єдиною правильною. Я, на жаль, не можу ні підтримати його, ні написати коментар під ним через низьку карму.


1

Я думаю, що найкращий підхід:

sudo tcpdump -ni any

Крок до тестування:

  1. Відкрийте консоль і введіть:

    sudo nc -l -p 6666
    
  2. Відкрийте іншу консоль і введіть:

    sudo tcpdump -ni any
    

    Якщо вихід занадто багатослівний, ви можете відфільтрувати його ( | grep -v "patter1n|pattern2")

  3. Відкрийте третю консоль і введіть:

    telnet localhost 6666
    

Очікуваний вихід:

10:37:13.770997 IP 127.0.0.1.56920 > 127.0.0.1.443: Flags [S], seq 2822288041, win 43690, options [mss 65495,sackOK,TS val 1028779 ecr 0,nop,wscale 7], length 0

Якщо ви користуєтеся, sudo tcpdump -i anyви побачите щось подібне:

10:38:22.106022 IP localhost.56924 > localhost.https: Flags [S], seq 3147104744, win 43690, options [mss 65495,sackOK,TS val 1045863 ecr 0,nop,wscale 7], length 0

1
Це те саме, що й інша відповідь - -i anyце не потрібно, якщо ви хочете придушити перетворення адреси / порту на ім’я, це лише те, -nщо має значення.

-2
tcpdump -i eth0 -p -nn | grep "IP" | awk '{print$3 ,$4 ,$5}' | sed 's/://'

1
я не розумію
Pierre.Vriens

1
Хоча в запитанні йдеться про "відображення ip та номер порту, але не ім'я хоста та протокол", я сумніваюся, що це означає "відобразити ip та номер порту, але не будь-яку іншу інформацію". (Я можу помилитися, але, здається, ніхто інший не трактував це питання так, як ви це зробили.) Тож ваша відповідь, схоже, зводиться до двох частин: (1) використання  -nnдля відображення служб, таких як "http" і "dnp" як порт число замість імені (яке було представлено у трьох попередніх відповідях) та (2) використовувати  awkдля викидання даних про вміст пакету (що, мабуть, не бажано).
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.