Monitora il numero di byte trasferiti da / verso l'indirizzo IP sulla porta


19

Qualcuno può consigliare uno strumento da riga di comando di Linux per monitorare il numero di byte trasferiti tra il server locale e un indirizzo IP / porta specificati.

Il comando tcpdump equivalente sarebbe:

tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com

che produce:

46 packets captured
131 packets received by filter
0 packets dropped by kernel

Vorrei qualcosa di simile che produca:

54 bytes out, 176 bytes in

Mi piacerebbe che funzionasse su RHEL ed fosse gratuito / open-source. Sarebbe bello se esistesse uno strumento esistente che mi mancava anche!

Risposte:


14

È possibile utilizzare iptables. Se non lo stai già utilizzando, puoi utilizzare una configurazione Accept aperta, ma avere una regola in atto per eseguire il conteggio.

Ad esempio, su RHEL il tuo /etc/sysconfig/iptablesfile potrebbe assomigliare a:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -j INPUT
-A INPUT -s 10.10.1.1 -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -d 10.10.1.1 -p tcp -m tcp --dport 80 -j ACCEPT

Dove 10.10.1.1:80 è l'host: porta alla quale si desidera contare il traffico (non è possibile utilizzare un nome host). È quindi possibile controllare il traffico conteggiato con il comando iptables -nvxLcome root.

Esempio di output:

Chain INPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       10.10.1.1            0.0.0.0/0              tcp spt:80


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
       0          0 INPUT      all  --  *      *       0.0.0.0/0            0.0.0.0/0       

Chain OUTPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.10.1.1              tcp dpt:80

7
È anche completamente legale avere una regola senza un obiettivo, solo a scopo di conteggio, ad esempio iptables -A INPUT -d 1.2.3.4 -p tcp --dport 3456. Non farà nulla al traffico, poiché non esiste alcun argomento "-j", ma ogni pacchetto corrispondente aumenterà i conteggi.
MadHatter supporta Monica il

9

Stavo per suggerire WireShark (per le sue molte funzioni di " conversazione "), ma non è uno strumento da riga di comando. Tuttavia, potresti provare tshark , che è uno strumento di analisi della riga di comando che viene chiuso a WireShark. L'output dovrebbe avere (in qualche modo) quello che stai cercando (esempio di seguito):

tshark -R "ip.addr == 10.2.3.67" -z conv,ip -p -f "tcp port 22"

Risultato:

                                     |       <-      | |       ->      | |     Total     |
                                     | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
10.2.3.23           <-> 10.2.3.67        42     15341      35      4890      77     20231

7

C'è anche uno strumento chiamato 'iftop' che mostra l'utilizzo della larghezza di banda su un'interfaccia da parte dell'host. Penso che iftop possa fare quello che hai descritto, ma normalmente la sua interfaccia è qualcosa come "top".

Quindi, per il tuo esempio, penso che puoi semplicemente creare un file di configurazione per fornire il tuo codice-filtro.

Quindi ecco il mio codice-filtro nel mio file di configurazione.

$ cat /tmp/conf
filter-code: port http and host google.com

Quindi, ho eseguito quanto segue per vedere il traffico di rete.

$ sudo iftop -c /tmp/conf

Non sono sicuro che questa sia l'opzione migliore, ma sicuramente un modo per ottenere ciò di cui hai bisogno. HTH.


3
Puoi anche specificare il filtro dalla riga di comando senza usare un file di configurazione:iftop -f 'port 80 and host google.com'
gioele,

Op come il totale dei byte trasferiti, non la larghezza di banda. Può iftopdimostrarlo?
Arainone,

3

Puoi anche provare "iptraf" è leggero e semplice. Può filtrare per porta e offre informazioni di alto livello, nessun dato di payload, ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.