Statistiche del traffico per porta di rete


15

Ho due macchine con due applicazioni che parlano tra loro su poche porte di rete (TCP e UDP). Voglio contare il traffico che inviano e ricevono. Ho bisogno non solo di un conteggio complessivo ma di statistiche per macchina per porta al giorno. Ho provato darkstat , ma non fornisce statistiche al giorno, ma solo contatori complessivi.

C'è un altro modo in cui posso contare quel traffico (posso mettere un proxy o un gateway tra quelle due macchine).

Risposte:


16

iptables può darti statistiche su quante regole sono state attivate, quindi puoi aggiungere regole LOG sulle porte di interesse (diciamo porta 20 e porta 80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

e poi

iptables -n -L -v

ti darà il numero di pacchetti e byte inviati attraverso queste porte. Ovviamente dovrai analizzare dall'output le porte che ti interessano.

Se hai bisogno di valori esatti, aggiungi un -x:

iptables -n -L -v -x

4
Non è necessario inserire LOGregole (che inonderanno i file di registro), basta contare il numero di volte in cui una regola viene attivata.
Gilles 'SO- smetti di essere malvagio' il

4
Infatti. Una regola non deve avere un'azione. Una lezione utile da imparare: le regole senza -Jsono buone per la contabilità.
Alexios,


2

È possibile aggiungere regole di contabilità alla configurazione di iptables. Questi dovrebbero verificarsi prima di accettare il traffico STABILITO e CORRELATO o di perdere il conteggio del traffico che passa. Per contare il traffico web prova una regola come:

iptables -A INPUT -p tcp --dport 80 

Se ne hai un sacco potresti voler creare una catena contabile in modo da poter segnalare e azzerare i contatori su di essa isolatamente dalle altre catene.

Il firewall di Shorewall consente di aggiungere facilmente regole di contabilità al set di regole.


1

Non dimenticare di includere le statistiche sul traffico in uscita.

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443

0

Utilizza il tcpdump,

tcpdump -i qualsiasi -nnn

gli output del comando precedente includeranno il timestamp, gli indirizzi IP src / dest, la porta e la lunghezza del pacchetto. Con queste informazioni, puoi raggiungere facilmente il tuo obiettivo con una sceneggiatura ben scritta.


0

Non è chiaro se è necessario l'utilizzo per IP di destinazione, ma vnstat è uno strumento utile per registrare l'utilizzo del traffico per interfaccia. Installalo ed eseguilo vnstat -u -i eth0per ogni interfaccia che desideri monitorare. Per ottenere quindi l'utilizzo al giorno utilizzare vnstat -i eth0 -d.


1
Non penso che usando vnstatposso ottenere stat per porta ... O sbaglio?
pbm

1
@pbm Ah, vuoi dire porta TCP / UDP. No, vnstat non lo farà.
mgorven
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.