netstat per semplicità
Utilizzando netstat
e grepping sul PID o sul nome del processo:
# netstat -np --inet | grep "thunderbird"
tcp 0 0 192.168.134.142:45348 192.168.138.30:143 ESTABLISHED 16875/thunderbird
tcp 0 0 192.168.134.142:58470 192.168.138.30:443 ESTABLISHED 16875/thunderbird
E potresti usare watch
per gli aggiornamenti dinamici:
watch 'netstat -np --inet | grep "thunderbird"'
Con:
-n
:Mostra indirizzi numerici invece di cercare di determinare nomi simbolici di host, porte o utenti-p
:Mostra il PID e il nome del programma a cui appartiene ciascun socket.--inet
:mostra solo socket di protocollo raw, udp e tcp.
strace per verbosità
Hai detto di aver provato il strace
tool, ma hai provato l'opzione trace=network
?Nota che l'output può essere abbastanza prolisso, quindi potresti aver bisogno di un po' di grepping. Potresti iniziare con il grep su "sin_addr".
strace -f -e trace=network <your command> 2>&1 | grep sin_addr
Oppure, per un processo già in esecuzione, usa il PID:
strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr
sysdig
ti consente di monitorare tutta l'attività del kernel o di diversi comandi in esecuzione nel tuo sistema in un colpo solo, inclusa e non limitata all'attività di rete.
Poiché l'output può essere grande, devi creare filtri, la pagina predefinita per i filtri più basilari è abbastanza comprensibile.
Ha anche il vantaggio di non essere usato come wrapper dell'applicazione come in strace
e può essere molto potente.
Da Sysdig Esempi
Rete
Scopri i principali processi in termini di utilizzo della larghezza di banda della rete
sysdig -c topprocs_net
Mostra i dati di rete scambiati con l'host192.168.0.1
Come binario:
sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
Come ASCII:
sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1
Guarda le principali porte del server locale:
In termini di connessioni stabilite:
sysdig -c fdcount_by fd.sport "evt.type=accept"
In termini di byte totali:
sysdig -c fdbytes_by fd.sport
Visualizza i principali IP client
In termini di connessioni stabilite
sysdig -c fdcount_by fd.cip "evt.type=accept"
In termini di byte totali
sysdig -c fdbytes_by fd.cip
Elenca tutte le connessioni in entrata che non sono servite da apache.
sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
Creerei un nuovo spazio dei nomi di rete, lo collegherei alla rete reale e quindi monitorerei il bridge con tcpdump
.