tcpdump
peut le faire, et est disponible à peu près partout :
tcpdump -n -i enp0s25 icmp
videra tous les paquets ICMP entrants et sortants sur enp0s25
.
Pour voir uniquement les demandes d'écho ICMP :
tcpdump -n -i enp0s25 "icmp[0] == 8"
(-n
évite les recherches DNS, qui peuvent retarder le signalement des paquets et introduire leur propre trafic indésirable.)
Cela vous permet de savoir s'il reçoit les paquets de l'autre machine (à partir de laquelle vous voudriez par exemple ping
il), donc le problème est avec le chemin de retour, ou s'ils n'arrivent pas directement.
Outre la suggestion de @Stephen Kitt, vous pouvez exécuter tcpdump
pour filtrer un paquet dans une seule direction :
# see if the icmp request exits the interface
tcpdump -nQ out 'icmp'
tshark
est un autre outil utile que vous pouvez utiliser et il ne vous oblige pas à exécuter en tant que root :
tshark -nf "icmp && (icmp[icmptype] == icmp-echo)"
à part la capture de paquets, vous pouvez analyser la sortie de
netstat -s
qui imprime une statistique pour chaque socket réseau, un exemple serait le suivant :
netstat -s | grep -Eo "^[[:space:]]+[[:digit:]]+ ICMP messages sent$"; 1>/dev/null ping -c1 -w1 host; !-1
28 ICMP messages sent
30 ICMP messages sent