tcpdump
può farlo ed è disponibile praticamente ovunque:
tcpdump -n -i enp0s25 icmp
scaricherà tutti i pacchetti ICMP in entrata e in uscita su enp0s25
.
Per vedere solo le richieste echo ICMP:
tcpdump -n -i enp0s25 "icmp[0] == 8"
(-n
evita le ricerche DNS, che possono ritardare la segnalazione dei pacchetti e introdurre traffico indesiderato).
Ciò ti consente di scoprire se sta ricevendo i pacchetti dall'altra macchina (da cui, ad esempio, vorresti ping
it), quindi il problema è con il percorso di ritorno, o se direttamente non arrivano.
A parte il suggerimento di @Stephen Kitt, puoi eseguire tcpdump
per filtrare un pacchetto solo in una direzione:
# see if the icmp request exits the interface
tcpdump -nQ out 'icmp'
tshark
è un altro strumento utile che puoi usare e non richiede di essere eseguito come root:
tshark -nf "icmp && (icmp[icmptype] == icmp-echo)"
aparte packet capture è possibile analizzare l'output di
netstat -s
che stampa una statistica per ogni socket di rete, un esempio potrebbe essere il seguente:
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