comment faire que tcpdump affiche l'adresse IP et le numéro de port mais pas le nom d'hôte ni le protocole

42

J'utilise tcpdump pour certains tests. Je veux voir l'adresse IP et le numéro de port, mais la sortie de tcpdump est comme

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

il ne montre que le nom d’hôte et le protocole pour http, il est facile de savoir qu’il fait 80 mais pour dnp je dois chercher

Il est donc possible de faire en sorte que tcpdump affiche l'adresse IP et le numéro de port, mais pas le nom d'hôte ni le protocole, si oui, comment? Merci

les mystères
la source

Réponses:

44

Ajoutez -nà votre tcpdumpligne de commande.

De la page de manuel tcpdump :

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

Il convient également de noter que sur Fedora (et peut-être d'autres dérivés: RHEL, CentOS, etc.), ils ont corrigé la version d'origine de tcpdump afin d'inclure une option distincte -nnpermettant de supprimer les numéros de port. De la page de manuel :

-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.
lourd
la source
le numéro de port est toujours converti en nom de protocole en utilisant-n
misteryes
"Le numéro de port est toujours converti en nom de protocole à l'aide de -n" Pas avec, par exemple, le tcpdump 4.1.1 fourni avec OS X Mountain Lion ou avec tcpdump construit à partir du haut de la ligne git de tcpdump.org. Sur quelle version de tcpdump voyez-vous ne supprimez pas la conversion des numéros de port en noms de protocole?
5

J'utilise le -nnparamètre.

-nn: Ne résolvez pas les noms d'hôte ou les noms de port.

Exécutez-le comme:

tcpdump -nn 
ATMc
la source
2

-nne fonctionne que pour les noms d’hôtes, mais pas pour les numéros de port. -nnfait le tour pour les deux. Ceci exécute la version 4.5.1 de tcpdump sur Fedora 20 gnu / linux. La réponse négative @ATMc est la seule correcte. Malheureusement, je ne peux ni la revigorer ni écrire un commentaire en dessous à cause du faible karma.

Adam Kurkiewicz
la source
1

Je pense que la meilleure approche est:

sudo tcpdump -ni any

Étapes pour tester:

  1. Ouvrez une console et tapez:

    sudo nc -l -p 6666
    
  2. Ouvrez une autre console et tapez:

    sudo tcpdump -ni any
    

    Si le résultat est trop détaillé, vous pouvez le filtrer ( | grep -v "patter1n|pattern2")

  3. Ouvrez une troisième console et tapez:

    telnet localhost 6666
    

Production attendue:

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

Si vous utilisez, sudo tcpdump -i anyvous verrez quelque chose comme ceci:

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
Javier
la source
1
C’est la même chose que l’autre réponse: ce -i anyn’est pas nécessaire si vous souhaitez supprimer la conversion adresse / port en nom, c’est ce -nqui compte.
-2
tcpdump -i eth0 -p -nn | grep "IP" | awk '{print$3 ,$4 ,$5}' | sed 's/://'
anon
la source
1
Je ne comprends pas
Pierre.Vriens
1
Bien que la question dise «afficher l'adresse IP et le numéro de port, mais pas le nom d'hôte ni le protocole», je doute que cela signifie «afficher l'adresse IP et le numéro de port, mais aucune des autres informations». (Je peux me tromper, mais personne ne semble avoir interprété la question de la façon dont vous l'avez fait.) Votre réponse semble donc se résumer en deux parties: (1) utiliser  -nnpour afficher des services tels que "http" et "dnp" comme un port numéro au lieu d'un nom (qui a été présenté dans trois réponses précédentes), et (2) utilisent  awkpour jeter des données sur le contenu du paquet (ce qui n'est probablement pas souhaité).
Scott