Commande tcpdump

Objectif

Vide le trafic sur un réseau

Syntaxe

tcpdump [ -a ] [ -A ] [ -B taille_tampon ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [ -L ] [ -M secret ] [ -r fichier ]][ -n ] [ -N ] [ -O ] [ -p ][ -q ] [ -Q [ -V ] ] [ -R ] [ -S ] [ -t ] [ -T ][ -u ] [ -U ] [ -v ] [ -x ] [ -X ] [ '-c count ][ -C file_size ] [ -F file ] [ -G rotate_seconds ] [ -i interface ] [ -s snaplen ] [ -w file ][ -E addr ] [ -y datalinktype ][-z command ][-Z user ] [ expression ]

Descriptif

La commande tcpdump imprime les en-têtes des paquets sur une interface réseau qui correspondent à l'expression booléenne. Vous pouvez exécuter la commande avec l'indicateur -w pour enregistrer les données de paquet dans un fichier en vue d'une analyse plus approfondie. Vous pouvez également exécuter la commande avec l'indicateur -r pour lire les données d'un fichier de paquets sauvegardé à la place des paquets d'une interface réseau. Dans tous les cas, seuls les paquets qui correspondent à une expression sont traités par la commande tcpdump .

S'il n'est pas exécuté avec l'indicateur -c , tcpdump continue à capturer des paquets jusqu'à ce qu'il soit interrompu par un signal SIGINT (généralement control-C) ou un signal SIGTERM (généralement la commande kill(1) ). Si tcpdump est exécuté avec l'indicateur -c , il capture les paquets jusqu'à ce qu'il soit interrompu par un signal SIGINT ou SIGTERM ou que le nombre de paquets spécifié ait été traité.

La commande tcpdump renvoie les nombres suivants après avoir capturé tous les paquets:
paquets "reçus par le filtre"
Compte tous les paquets, qu'ils aient ou non été appariés par l'expression de filtre.
paquets "supprimés par le noyau"
Nombre de paquets supprimés en raison d'un manque d'espace dans la mémoire tampon.

Primitives autorisées

hôte dst
True si la zone de destination IPv4/v6 du paquet est hôte, qui peut être une adresse ou un nom.
hôte src
True si la zone source IPv4/v6 du paquet est hôte.
hôte hôte
True si la source ou la destination IPv4/v6 du paquet est l'hôte. Toutes les expressions hôte ci-dessus peuvent être précédées des mots clés ip, arp, rarp ou ip6 comme dans: ip host host, ce qui équivaut à:
ether proto \ip and host host
Si l'hôte est un nom comportant plusieurs adresses IP, une correspondance est vérifiée pour chaque adresse.
éther dst ehost
True si l'adresse de destination Ethernet est ehost. Ehost peut être un nom de /etc/ethers ou un nombre (voir ethers (3N) pour le format numérique).
éther src ehost
True si l'adresse source Ethernet est ehost.
ehost d'hôte Ethernet
True si l'adresse source ou de destination de l'Ethernet est ehost.
hôte passerelle
True si le paquet a utilisé l'hôte comme passerelle. Par exemple, l'adresse source ou de destination Ethernet était l'hôte, mais ni la source IP ni la destination IP n'était l'hôte. L'hôte doit être un nom et doit être trouvé à la fois par les mécanismes de résolution du nom d'hôte vers l'adresse IP de la machine (fichier de nom d'hôte, DNS, NIS, etc.) et par le mécanisme de résolution du nom d'hôte vers l'adresse Ethernet de la machine (/etc/ethers, , etc.). Une expression équivalente est ether host ehost et non host host qui peut être utilisée avec des noms ou des nombres pour host /ehost. Cette syntaxe ne fonctionne pas dans la configuration IPv6-enabled pour le moment.
dst net net
True si l'adresse de destination IPv4/v6 du paquet possède un numéro de réseau.
Réseau net src
True si l'adresse source IPv4/v6 du paquet possède un numéro de réseau.
net net
True si l'adresse source ou de destination IPv4/v6 du paquet possède un numéro de réseau.
masque de réseau net
True si l'adresse IP correspond au réseau avec le masque de réseau spécifique. Il peut être qualifié avec src ou dst. Cette syntaxe n'est pas valide pour le réseau IPv6 .
net net/len
True si l'adresse IPv4/v6 correspond à un réseau avec une longueur de masque de réseau en bits. Peut être qualifié avec src ou dst.
port dst
True si le paquet est ip/tcp, ip/udp, ip6/tcp orip6/udp et a une valeur de port de destination. Le port peut être un nombre ou un nom utilisé dans /etc/services (voir tcp (4P) et udp (4P)). Si un nom est utilisé, le numéro de port et le protocole sont vérifiés. Si un nombre ou un nom ambigu est utilisé, seul le numéro de port est vérifié (par exemple, le port dst 513 imprime à la fois le trafic tcp / login et le trafic udp / qui, et le domaine de port imprime à la fois le trafic tcp / domain et le trafic udp / domain).
port du port src
True si le paquet a une valeur de port source de port.
port de port
True si le port source ou de destination du paquet est le port. Toutes les expressions de port ci-dessus peuvent être précédées des mots clés tcp ou udp, comme dans: tcp src port qui correspond uniquement aux paquets tcp dont le port source est le port.
moins de longueur
True si la longueur du paquet est inférieure ou égale à la longueur. Cette valeur est équivalente à len < = length.
longueur supérieure
True si la longueur du paquet est supérieure ou égale à la longueur. Cette valeur est équivalente à: len > = length.
protocole ip proto
True si le paquet est un paquet IP de type protocole. Le protocole peut être un nombre ou l'un des noms icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp ou tcp. Notez que les identificateurs tcp, udp et icmp sont également des mots clés et doivent être échappés via une barre oblique inversée (\), qui est \\ dans le shell C. Notez que cette primitive ne chasse pas la chaîne d'en-tête de protocole.
Protocole proto ip6
True si le paquet est un paquet IPv6 de type protocole. Notez que cette primitive ne chasse pas la chaîne d'en-tête de protocole.
Protocole protochain ip6
True si le paquet est un paquet IPv6 et qu'il contient un en-tête de protocole avec un protocole de type dans sa chaîne d'en-tête de protocole. Par exemple, ip6 protochain 6 correspond à tout paquet IPv6 avec l'en-tête de protocole TCP dans la chaîne d'en-tête de protocole. Le paquet peut contenir, par exemple, un en-tête d'authentification, un en-tête de routage ou un en-tête d'option tronçon par tronçon, entre l'en-tête IPv6 et l'en-tête TCP. Le code BPF (Berkeley Packet Filter) émis par cette primitive est complexe et ne peut pas être optimisé par le code de l'optimiseur BPF dans tcpdump. Il peut donc être assez lent.
Protocole ip protochain
Equivalent au protocole protochain ip6 . Mais, il est utilisé pour Ipv4.
diffusion ether
True si le paquet est un paquet de diffusion Ethernet. Le mot clé ether est facultatif.
Diffusion IP
True si le paquet est un paquet de diffusion IPv4 . Il vérifie les conventions de diffusion all-zeroes et all-one et recherche le masque de sous-réseau sur l'interface sur laquelle la capture est effectuée.

Si le masque de sous-réseau de l'interface sur laquelle la capture est effectuée n'est pas disponible, par exemple parce que l'interface sur laquelle la capture est effectuée ne comporte pas de masque de réseau, cette vérification ne fonctionne pas correctement.

multidiffusion ether
True si le paquet est un paquet multidiffusion Ethernet. Le mot clé ether est facultatif. Il s'agit d'une abréviation pour ether[0] & 1 != 0.
Multidiffusion IP
True si le paquet est un paquet de multidiffusion IP.
Multidiffusion ip6
True si le paquet est un paquet de multidiffusion IPv6 .
protocole ether proto
True si le paquet est de type éther protocol.Protocol peut être un nombre ou l'un des noms ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx ou netbeui. Notez que ces identificateurs sont également des mots clés et doivent être échappés via une barre oblique inversée (\).
[ Dans le cas de FDDI (par exemple, ` fddi protocol arp'), Token Ring (par exemple, ` tr protocol arp') et IEEE 802.11 Wireless LANS (par exemple, ` wlan protocol arp'), pour la plupart de ces protocoles, l'identification de protocole provient de l'en-tête 802.2 Logical Link Control (LLC), qui est généralement superposé à l'en-tête FDDI, Token Ring ou 802.11 . Lors du filtrage de la plupart des identificateurs de protocole sur FDDI, Token Ring ou 802.11, tcpdump vérifie uniquement la zone d'ID de protocole d'un en-tête LLC au format SNAP avec un UnitIdentifier (OUI) organisationnel de 0x000000, pour Ethernet encapsulé ; il ne vérifie pas si le paquet est au format SNAP avec un OUI de 0x000000. Les exceptions sont les suivantes:
iso
tcpdump vérifie les zones DSAP (Destination Service Access Point) et SSAP (Source Service Access Point) de l'en-tête LLC.
stp et netbeui
tcpdump vérifie le DSAP de l'en-tête LLC.
Atalk
tcpdump recherche un paquet au format SNAP avec un OUI de 0x080007 et le type AppleTalk .
Dans le cas d'Ethernet, tcpdump vérifie la zone de type Ethernet pour la plupart de ces protocoles. Les exceptions sont les suivantes:
iso, sap et netbeui
tcpdump recherche un cadre 802.3 , puis vérifie l'en-tête LLC comme pour FDDI, Token Ring et 802.11.
Atalk
tcpdump recherche à la fois le type AppleTalk dans une trame Ethernet et un paquet au format SNAP comme pour FDDI, Token Ring et 802.11.
aarp
tcpdump recherche le type ARP AppleTalk dans une trame Ethernet ou dans une trame SNAP 802.2 avec un OUI de 0x000000;
IPX
tcpdump recherche le type IPX dans un cadre Ethernet, le type IPX DSAP dans l'en-tête LLC, l'encapsulation 802.3-with-no-LLC-header d'IPX et le type IPX dans un cadre SNAP.
Hôte src decnet
True si l'adresse source DECNET est un hôte, qui peut être une adresse au format 10.123, ou un nom d'hôte DECNET. [ La prise en charge du nom d'hôte DECNET est disponible uniquement sur les systèmes Ultrix configurés pour exécuter DECNET. ]
Hôte dst decnet
True si l'adresse de destination DECNET est l'hôte.
hôte decnet
True si l'adresse source ou de destination de DECNET est l'hôte.
Interface ifname
True si le paquet a été consigné comme provenant de l'interface spécifiée.
sur l'interface
Synonyme du modificateur ifname.
Nbre rnr
Vrai si le paquet a été enregistré comme correspondant au numéro de règle PF spécifié (ne s'applique qu'aux paquets enregistrés par pf(4) OpenBSD's ).
Num rulenum
Synonomique avec le modificateur rnr.
code raison
True si le paquet a été consigné avec le code raison PF spécifié. Les codes connus sont : match, bad-offset, fragment, short, normalize, et memory (s'applique uniquement aux paquets enregistrés par 'pf(4) OpenBSD's ).
action action
True si PF a pris l'action spécifiée lors de la consignation du paquet. Les actions connues sont : pass et block (s'applique uniquement aux paquets enregistrés par le 'pf(4) OpenBSD's )
netbeui
ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx.

Abréviations pour:

ether proto p
p est l'un des protocoles ci-dessus.

lat, moprc, mopdl

Abréviations pour:
ether proto p
p est l'un des protocoles ci-dessus. Notez que tcpdump ne sait pas actuellement comment analyser ces protocoles.
vlan [id_vlan]
True si le paquet est un paquet VLAN IEEE 802.1Q . Si vlan_id est spécifié, seuls les paquets ayant le vlan_id spécifié sont définis sur true. Notez que le premier mot clé vlan rencontré dans l'expression modifie les décalages de décodage pour le reste de l'expression en supposant que le paquet est un paquet VLAN.
tcp, udp, icmp
Abréviations pour:
ip proto p or ip6 proto p
p est l'un des protocoles ci-dessus.
Protocole iso proto
True si le paquet est un paquet OSI de type protocole. Le protocole peut être un nombre ou l'un des noms clnp, esis ou isis.
clnp, esis, isis
Abréviations pour:
  • iso proto p
p est l'un des protocoles ci-dessus.
l1 l2, iih, lsp, snp, csnp, psnp
Abréviations des types d'unité PDU IS-IS.
vpi n
True si le paquet est un paquet ATM, pour SunATM sous Solaris, avec un identificateur de chemin virtuel n.
vci n
True si le paquet est un paquet ATM, pour SunATM sous Solaris, avec un identificateur de canal virtuel n.
meuble de caisse
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et s'il s'agit d'un paquet ATM LANE. Notez que le premier mot clé de voie rencontré dans l'expression modifie les tests effectués dans le reste de l'expression en supposant que le paquet est soit un paquet Ethernet émulé LANE, soit un paquet de contrôle LE LANE. Si lane n'est pas spécifié, les tests sont effectués sous l'hypothèse que le paquet est un paquet encapsulé LLC.
Llc
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et s'il s'agit d'un paquet LLC encapsulé.
oamf4s
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et s'il s'agit d'une cellule de flux OAM F4 de segment (VPI=0 & VCI=3).
oamf4e
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et s'il s'agit d'une cellule de flux OAM de bout en bout F4 (VPI=0 & VCI=4).
oamf4
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et s'il s'agit d'un segment ou d'une cellule de flux OAM de bout en bout F4 (VPI=0 & (VCI=3 | VCI=4).
oam
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et s'il s'agit d'un segment ou d'une cellule de flux OAM de bout en bout F4 (VPI=0 & (VCI=3 | VCI=4).
métac
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et qu'il est sur un circuit de notification meta (VPI=0 & VCI=1).
ccc
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et qu'il est sur un circuit de signalisation de diffusion (VPI=0 & VCI=2).
Sc
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et qu'il est sur un circuit de signalisation (VPI=0 & VCI=5).
ilmique
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et est sur un circuit ILMI (VPI=0 & VCI=16).
msgconnexion
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et qu'il se trouve sur un circuit de signalisation et qu'il s'agit d'un message de configuration Q.2931 , de procédure d'appel, de connexion, de connexion, d'accusé de réception, de libération ou de libération terminé.
métaconnexion
True si le paquet est un paquet ATM, pour SunATM sous Solaris, et qu'il se trouve sur un circuit de notification meta et qu'il s'agit d'un message Q.2931 de configuration, d'appel, de connexion, de libération ou de libération terminée.
expr relop expr
True si la relation est valide, où relop est l'un des suivants: >, <, > =, < =, =, ! = et expr est une expression arithmétique composée de constantes entières (exprimées dans la syntaxe C standard), les opérateurs binaires normaux [ +,-, *, /, &, | ], un opérateur de longueur et des accesseurs de données de paquets spéciaux. Pour accéder aux données du paquet, utilisez la syntaxe suivante:
proto [ expr : size ]
Proto est l'un des éléments ether, fddi, tr, wlan, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp ou ip6, et indique la couche de protocole pour l'opération d'index. (ether, fddi, wlan, tr, ppp, slip et link font tous référence à la couche de liaison.) Notez que les types de protocole tcp, udp et autres types de protocole de couche supérieure ne s'appliquent qu'à IPv4et non à IPv6 (ce qui sera corrigé ultérieurement). Le décalage d'octet, par rapport à la couche protocole indiquée, est donné par expr. La taille est facultative et indique le nombre d'octets dans la zone d'intérêt ; elle peut être un, deux ou quatre, et la valeur par défaut est un. L'opérateur de longueur, indiqué par le mot clé len, indique la longueur du paquet.

Par exemple, ether[0] & 1 != 0 intercepte tout le trafic de multidiffusion. L'expression ip[0] & 0xf !=5 intercepte tous les paquets IP avec des options. L'expression ip[6:2] & 0x1fff = 0 intercepte uniquement les datagrammes non fragmentés et le fragment zéro des datagrammes fragmentés. Cette vérification est appliquée implicitement aux opérations d'index tcp et udp. Par exemple, tcp [ 0 ] signifie toujours le premier octet de l'en-tête TCP, et jamais le premier octet d'un fragment intermédiaire.

Certains décalages et valeurs de champ peuvent être exprimés sous forme de noms plutôt que sous forme de valeurs numériques. Les décalages de zone d'en-tête de protocole suivants sont disponibles: icmptype (zone de type ICMP), icmpcode (zone de code ICMP) et tcpflags (zone d'indicateurs TCP).

Les valeurs de zone de type ICMP suivantes sont disponibles: icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, icmp-echo, icmp-routeradvert, icmp-routersolliciter, icmp-timxceed, icmp-paramprob, icmp-tstamp, icmp-tstampreply, icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.

Les valeurs de zone d'indicateurs TCP suivantes sont disponibles: tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg.

Combinaison de primitives

Groupe de primitives et d'opérateurs entre parenthèses (les parenthèses sont spéciales à l'interpréteur de commandes et doivent être échappées).
          Negation (`!' or `not').

          Concatenation (`&&' or `and').

          Alternation (`||' or `or').
La négation a la priorité la plus élevée. L'alternance et la concaténation ont la même priorité et sont associées de gauche à droite. Notez que les explicits et les jetons, et non la juxtaposition, sont désormais requis pour la concaténation.

Si un identificateur est indiqué sans mot clé, le mot clé le plus récent est utilisé. Par exemple, not host vs and ace est abrégé pour not host vs and host ace qui ne doit pas être confondu avec not ( host vs or ace )

Les arguments d'expression peuvent être transmis à tcpdump en tant qu'argument unique ou en tant qu'arguments multiples, selon ce qui est le plus pratique. En règle générale, si l'expression contient des métacaractères Shell, il est plus facile de la transmettre sous la forme d'un seul argument entre guillemets. Plusieurs arguments sont concaténés avec des espaces avant d'être analysés.

Indicateurs

Article Descriptif
-a Tentatives de conversion d'adresses réseau et de diffusion en noms.
-A Imprime chaque paquet (sans son en-tête de niveau de liaison) en ASCII. Pratique pour capturer des pages Web.
-B taille_tampon Indique la taille de la mémoire tampon en kilooctets. Les valeurs plus petites sont acceptées. Si la taille de la mémoire tampon est inférieure à la valeur minimale définie par le filtre BPF, la taille réelle de la mémoire tampon est ignorée et la valeur définie par le filtre BPF (Berkeley Packet Filter) est utilisée. Si l'option -B n'est pas spécifiée, la taille de la mémoire tampon est par défaut de 32 768.
-c Nombre Quitte après avoir reçu Nombre de paquets.
-C taille_fichier Avant d'écrire un paquet brut dans un fichier de sauvegarde, vérifiez si le fichier est actuellement supérieur à taille_fichier et, si tel est le cas, fermez le fichier de sauvegarde en cours et ouvrez un nouveau fichier. Les fichiers de sauvegarde après le premier fichier de sauvegarde portent le nom spécifié avec l'indicateur -w , suivi d'un nombre, en commençant à 2 et en continuant vers le haut. Les unités de file_size sont des millions d'octets (1 000 000 octets, pas 1 048 576 octets).
-d Vide le code de correspondance de paquet compilé dans la sortie standard, puis s'arrête.
-d Imprime la liste des interfaces réseau disponibles sur le système et sur lesquelles tcpdump peut capturer des paquets. Pour chaque interface de réseau, un numéro et un nom d'interface (éventuellement suivis d'une description textuelle de l'interface) sont imprimés. Le nom ou le numéro de l'interface peut être fourni à l'indicateur -i pour spécifier une interface sur laquelle effectuer la capture.
-jj Vide le code de correspondance de paquets en tant que fragment de programme C.
-ddd Vide le code de correspondance de paquets sous forme de nombres décimaux (précédé d'un nombre).
-e Imprime l'en-tête de niveau lien sur chaque ligne de vidage.
- E addr Utilisez spi@ipaddr algo:secret pour déchiffrer les paquets IPsec ESP qui sont adressés à addr et qui contiennent la valeur d'index de paramètre de sécurité spi. Cette combinaison peut être répétée avec une séparation par virgules ou par retours à la ligne.
Remarque: la définition du secret pour les paquets ESP IPv4 est désormais prise en charge.

Les algorithmes peuvent être des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbcou aucun. La valeur par défaut est des-cbc. La possibilité de déchiffrer les paquets n'est présente que si libcrypto est installé et se trouve dans LIBPATH.

secret est le texte ASCII de la clé secrète ESP. Si elle est précédée de 0x, une valeur hexadécimale est lue.

L'option suppose RFC2406 ESP, et non RFC1827 ESP. L'option est utilisée uniquement à des fins de débogage et l'utilisation de cette option avec une clé secrète réelle est déconseillée. En présentant la clé secrète IPsec sur la ligne de commande, vous la rendez visible par les autres utilisateurs, via ps (1) et d'autres occasions.

Outre la syntaxe ci-dessus, la commande tcpdump peut utiliser le nom du fichier de syntaxe pour lire le fichier spécifié. Le fichier est ouvert lors de la réception du premier paquet ESP, de sorte que tous les droits spéciaux que tcpdump a pu avoir été accordés auraient déjà dû être supprimés.

-f Imprime les adresses IPv4 étrangères numériquement plutôt que symboliquement.

Le test des adresses IPv4 externes est effectué à l'aide de l'adresse IPv4 et du masque de réseau de l'interface sur laquelle la capture est effectuée. Cette option ne fonctionne pas correctement si cette adresse ou ce masque de réseau n'est pas disponible.

-F fichier Utilisez file comme entrée pour l'expression de filtre. Une expression supplémentaire indiquée sur la ligne de commande est ignorée.
-G secondes de rotation Fait pivoter le fichier de vidage spécifié avec l'option -w toutes les rotate_seconds secondes. S'ils sont utilisés conjointement avec l'option -C , les noms de fichier prennent la forme file < nombre>, si la valeur spécifiée dans la variable taille est atteinte en premier. Sinon, la commande tcpdump fait pivoter le fichier lorsque la valeur spécifiée dans la variable rotate_seconds est écoulée.
-i interface Ecoute sur l' interface. S'il n'est pas spécifié, tcpdump recherche dans la liste des interfaces du système le numéro le plus bas, configuré pour l' interface (à l'exclusion du bouclage). Les liens sont rompus en choisissant la correspondance la plus ancienne.

Un numéro d' interface imprimé par l'indicateur -D peut être utilisé comme argument interface .

-K Ignore la vérification du total de contrôle TCP sur les interfaces qui effectuent le calcul du total de contrôle TCP dans le matériel. Si cet indicateur n'est pas utilisé, tous les totaux de contrôle TCP sortants sont marqués comme étant incorrects.
-l Rend la ligne stdout mise en mémoire tampon. Utile si vous souhaitez voir les données lors de leur capture. Par exemple :
tcpdump -l | tee dat
  or  
tcpdump -l   >   dat & tail -f dat
-l Répertorie les types de liaison de données connus pour l'interface et les exits.
-m module Charge les définitions de module SMI MIB à partir du fichier module . Cette option peut être utilisée plusieurs fois pour charger plusieurs modules MIB dans tcpdump.
-M Utilise le secret en tant que secret partagé pour valider les historiques trouvés dans les segments TCP à l'aide de l'option TCP-MD5 (Request for Comment (RFC) 2385).
-n Bloque la conversion des adresses hôte et des numéros de port en noms.
-n Omet la qualification du nom de domaine d'impression des noms d'hôte. Par exemple, tcpdump imprime nic au lieu de nic.ddn.mil.
-O Empêche tcpdump d'exécuter l'optimiseur de code de correspondance de paquets. Cela n'est utile que si vous suspectez un bogue dans l'optimiseur.
-P Arrête de mettre l'interface en mode espion. Notez que l'interface peut être en mode espion pour une autre raison ; par conséquent, -p ne peut pas être utilisé comme abréviation pour ether host {local-hw-addr} ou ether broadcast.
-q Sortie rapide. Imprime moins d'informations de protocole de sorte que les lignes de sortie soient plus courtes.
-q Active le traçage système filtré pour les paquets enregistrés. Vous devez exécuter le démon AIX trace pour enregistrer les événements système sélectionnés qui sont liés au sous-système de communication réseau.
-r fichier Lire les paquets du fichier (qui a été créé avec l'option -w ). L'entrée standard est utilisée si file est "-".
-r Suppose que les paquets ESP/AH sont basés sur une ancienne spécification.

(RFC1825 à RFC1829). S'il est spécifié, tcpdump n'imprime pas la zone de prévention de réexécution. Etant donné qu'il n'existe pas de zone de version de protocole dans la spécification ESP/AH, tcpdump ne peut pas déduire la version du protocole ESP/AH.

-S Imprime les numéros de séquence TCP absolus plutôt que relatifs.
-s mnaplen Snarf snaplen octets de données de chaque paquet au lieu de la valeur par défaut de 68. 68 octets sont appropriés pour IP, ICMP, TCP et UDP, mais peuvent tronquer les informations de protocole à partir du serveur de noms et des paquets NFS (voir ci-dessous). Les paquets tronqués en raison d'une image instantanée limitée sont indiqués dans la sortie avec [ |proto], où proto est le nom du niveau de protocole auquel la troncature a eu lieu. Notez que la prise d'images instantanées de plus grande taille augmente le temps nécessaire au traitement des paquets et réduit efficacement le volume de la mise en mémoire tampon des paquets. Cela peut entraîner la perte de paquets. Vous devez limiter snaplen au plus petit nombre qui capture les informations de protocole qui vous intéressent. Si vous définissez snaplen sur 0, la longueur requise est utilisée pour intercepter des paquets entiers.
-T Force l'interprétation du type spécifié des paquets sélectionnés par expression . Les types actuellement connus sont cnfp (protocole Cisco NetFlow ), rpc (Remote Procedure Call), rtp (protocole Real-Time Applications), rtcp (protocole Real-Time Applications Control), snmp (Simple Network Management Protocol), tftp (Trivial File Transfer Protocol), vat (Visual Audio Tool) et wb (Distributed White Board).
-t Omet l'impression d'un horodatage sur chaque ligne de vidage.
-tt Imprime un horodatage non formaté sur chaque ligne de vidage.
-ttt Imprime un delta (en microsecondes) entre la ligne en cours et la ligne précédente sur chaque ligne de vidage.
-tttt Imprime un horodatage au format par défaut, suivi de la date sur chaque ligne de vidage.
-ttttt Imprime un delta (en microsecondes) entre la ligne en cours et la première ligne sur chaque ligne de vidage.
-u Imprime les descripteurs NFS non décodés.
-u Sauvegardez la sortie via l'option -w , par exemple, "packet-buffered". Au fur et à mesure que chaque paquet est sauvegardé, il est écrit dans le fichier de sortie, au lieu d'être écrit uniquement lorsque la mémoire tampon de sortie se remplit.
-v Indique une sortie un peu plus prolixe. Par exemple, la durée de vie, l'identification, la longueur totale et les options d'un paquet IP sont imprimées. Active également des vérifications supplémentaires de l'intégrité des paquets, telles que la vérification de la somme de contrôle de l'en-tête IP et ICMP.
-vv Sortie encore plus prolixe que -v. Par exemple, des zones supplémentaires sont imprimées à partir de NFS et les paquets de réponse sont entièrement décodés.
-vvv Sortie encore plus prolixe que -vv. Par exemple, telnet SB ... Les options SE sont imprimées en intégralité. Avec -X , les options Telnet sont également imprimées au format hexadécimal.
-v Définit l'indicateur de débogage de socket (option de socket SO_DEBUG ) et le niveau de trace sur les sockets. Cet indicateur doit être utilisé avec l'indicateur -Q .
-w fichier Ecrit les paquets bruts dans le fichier au lieu de les analyser et de les imprimer. Ils peuvent être imprimés ultérieurement avec l'indicateur -r . La sortie standard est utilisée si Fichier est "-".
-X Imprime chaque paquet (sans son en-tête de niveau de liaison) au format hexadécimal. Le plus petit des octets de paquet ou de serpent est imprimé. Notez qu'il s'agit de l'intégralité du paquet de couche de liaison, de sorte que pour les couches de liaison qui se connectant (par exemple Ethernet), les octets de remplissage sont également imprimés lorsque le paquet de couche supérieure est plus court que le remplissage requis.
-xx Imprime chaque paquet, y compris son en-tête de niveau de liaison, au format hexadécimal.
-X Imprime chaque paquet (sans son en-tête de niveau de liaison) en hexadécimal et en ASCII. C'est très pratique pour analyser de nouveaux protocoles.
-y type_liaison de données Définit le type de liaison de données à utiliser lors de la capture de paquets vers datalinktype.
-z commande Lorsqu'elle est utilisée avec l'option -C ou -G , la commande tcpdump exécute la commande spécifiée sur le fichier de sauvegarde. Par exemple, la spécification de -z gzip ou -z bzip2 comprime chaque fichier de sauvegarde à l'aide de la commande gzip ou bzip2 .
Remarque: La commande tcpdump exécute la commande -z en parallèle à la capture en utilisant la priorité la plus basse de sorte que cela ne perturbe pas le processus de capture.
-Z utilisateur Exécute la commande tcpdump avec les privilèges système de l'utilisateur spécifié.

Paramètres

expressions
Sélectionne les paquets qui doivent être vidés. Si une expression est fournie, seuls les paquets pour lesquels les expressions sont true sont vidés ; sinon, tous les paquets sur le réseau sont vidés.
L'expression est constituée d'une ou de plusieurs primitives. Les primitives sont généralement constituées d'un ID (nom ou numéro) précédé d'un ou de plusieurs qualificatifs. Il existe trois types de qualificateur:
  • Les qualificateurs type indiquent à quel type de primitive le nom d'ID ou le numéro fait référence. Les types possibles sont host, net et port. Par exemple, ` host foo', ` net 128.3', ` port 20'. S'il n'existe pas de qualificateur de type, l'hôte est pris en compte.
  • Les qualificateurs dir spécifient une direction de transfert particulière vers et / ou depuis l'ID. Les directions possibles sont src, dst, src ou dst et src et dst. S'il n'y a pas de qualificateur de répertoire, src ou dst est pris par défaut. Pour certaines couches de liens, telles que SLIP et pour d'autres types de périphérique, les qualificateurs entrant et sortant peuvent être utilisés pour spécifier la direction souhaitée.
  • Les qualificateurs proto limitent la correspondance à un protocole particulier. Les protos possibles sont fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp et udp. S'il n'y a pas de qualificateur proto, tous les protocoles compatibles avec le type sont pris en compte.

fddi est un alias pour ether. L'analyseur le traite comme signifiant "le niveau de liaison de données utilisé sur l'interface réseau spécifiée". Les en-têtes FDDI contiennent des adresses de source et de destination de type Ethernet, et contiennent souvent des types de paquets de type Ethernet, de sorte que vous pouvez filtrer ces zones FDDI comme avec les zones Ethernet analogues. Les en-têtes FDDI contiennent également d'autres zones, mais elles ne peuvent pas être nommées dans une expression de filtre.

Comme fddi, tr et wlan sont des alias pour ether. Les instructions du paragraphe précédent concernant les en-têtes FDDI s'appliquent également aux en-têtes de réseau local sans fil en anneau à jeton et 802.11 . Pour les en-têtes 802.11 , l'adresse de destination est la zone DA et l'adresse source est la zone SA ; les zones BSSID, RA et TA ne sont pas testées.

En plus de ce qui précède, il existe des mots clés ` primitifs'spéciaux qui ne suivent pas le modèle: gateway, broadcast, less, plus grand et expressions arithmétiques. Tous ces éléments sont décrits ci-après.

Des expressions de filtre plus complexes sont générées à l'aide des mots and, oret not pour combiner des primitives.

Variables d'environnement

La variable d'environnement LIBPATH doit être définie ou la bibliothèque libcrypto doit se trouver dans /usr/lib pour que l'indicateur -E fonctionne. Par exemple :
ksh$ LIBPATH=/opt/freeware/lib tcpdump -E"algo:secret"

Statut de sortie

Article Descriptif
0 Succès
différent de zéro Erreur

Security

La lecture de paquets à partir d'une interface réseau nécessite un accès en lecture à /dev/bpf*, qui est généralement root uniquement. La lecture de paquets à partir d'un fichier ne nécessite pas de privilèges spéciaux, à l'exception des droits de lecture de fichier.

Attention aux utilisateurs du contrôle d'accès à base de rôles: Cette commande peut effectuer des opérations privilégiées. Seuls les utilisateurs privilégiés peuvent exécuter des opérations privilégiées. Pour plus d'informations sur les autorisations et les privilèges, voir Base de données des commandes privilégiées dans Sécurité. Pour obtenir la liste des privilèges et des autorisations associés à cette commande, voir la commande 'lssecattr ou la sous-commande 'getcmdattr

Exemples

  1. Pour imprimer tous les paquets arrivant ou partant du coucher du soleil, entrez:
    tcpdump host sundown
  2. Pour imprimer le trafic entre hélios et chaud ou ace, entrez:
    tcpdump host helios and \( hot or ace \)
  3. Pour imprimer tous les paquets IP entre ace et n'importe quel hôte sauf helios, entrez:
    tcpdump ip host ace and not helios
  4. Pour imprimer tout le trafic entre les hôtes locaux et les hôtes à Berkeley, entrez:
    tcpdump net ucb-ether
  5. Pour imprimer tout le trafic ftp via le snup de la passerelle Internet, entrez:
    tcpdump 'gateway snup and (port ftp or ftp-data)'
    Remarque: L'expression est placée entre guillemets pour éviter que le shell interprète mal les parenthèses.
  6. Pour imprimer le trafic provenant ou destiné à des hôtes locaux (si vous faites la passerelle vers un autre réseau, cela ne devrait jamais arriver sur votre réseau local), entrez:
    tcpdump ip and not net localnet
  7. Pour imprimer les paquets de début et de fin (les paquets SYN et FIN) de chaque conversation TCP impliquant un hôte non local, entrez:
    tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and d dst net localnet'
  8. Pour imprimer les paquets IP de plus de 576 octets envoyés via le snup de passerelle, entrez:
    tcpdump 'gateway snup and ip[2:2] > 576'
  9. Pour imprimer les paquets de diffusion IP ou de multidiffusion qui n'ont pas été envoyés via la diffusion Ethernet ou la multidiffusion, entrez:
    tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
  10. Pour imprimer tous les paquets ICMP qui ne sont pas des demandes / réponses d'écho (par exemple, pas des paquets ping), entrez:
    tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-e choreply'

Erreur standard

Toutes les erreurs et tous les avertissements sont envoyés à stderr.

Restrictions

Une trace de paquet qui traverse un changement d'heure d'été donne des horodatages décalés (le changement d'heure est ignoré).

Les expressions de filtrage sur les zones autres que celles des en-têtes Token Ring gèrent les paquets Token Ring routés à la source de manière incorrecte.

Les expressions de filtrage sur les zones autres que celles des en-têtes 802.11 traitent les paquets de données 802.11 avec les deux ensembles de données To DS et From DS définis de manière incorrecte.

ip6 proto doit poursuivre la chaîne d'en-tête, mais ce n'est pas le cas pour le moment. ip6 protochain est fourni pour ce comportement.

L'expression arithmétique sur les en-têtes de couche de transport, comme tcp [ 0 ], ne fonctionne pas sur les paquets IPv6 . Il examine uniquement les paquets IPv4 .

Le traçage des paquets ne fonctionne pas dans l'environnement WPAR car le pilote BPF sous-jacent n'est pas compatible avec WPAR .

Fichiers

Article Descriptif
/usr/sbin/tcpdump Emplacement de la commande tcpdump .
/usr/lib/libpcap.a  
/dev/bpf*  
/opt/freeware/lib/libcrypto.a(libcrypto.so) Facultatif