Estatísticas de tráfego por porta de rede

15

Eu tenho duas máquinas com dois aplicativos que se comunicam em poucas portas de rede (TCP e UDP). Quero contar o tráfego que eles enviam e recebem. Eu preciso não apenas da contagem geral, mas também de estatísticas por máquina, por porta, por dia. Eu tentei o darkstat , mas ele não fornece estatísticas por dia, mas apenas contadores gerais.

Existe outra maneira de contar esse tráfego (posso colocar algum proxy ou gateway entre essas duas máquinas).

pbm
fonte

Respostas:

16

O iptables pode fornecer estatísticas sobre quantas regras foram acionadas, para que você possa adicionar regras de LOG nas portas de interesse (digamos, porta 20 e porta 80):

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

e depois

iptables -n -L -v

fornecerá o número de pacotes e bytes enviados por essas portas. Claro que você terá que analisar da saída as portas que lhe interessam.

Se você precisar de valores exatos, adicione -x:

iptables -n -L -v -x
mzet
fonte
4
Não há necessidade de colocar LOGregras (que inundarão seus arquivos de log), apenas conte o número de vezes que uma regra é acionada.
Gilles 'SO- stop be evil'
4
De fato. Uma regra não precisa ter uma ação. Uma lição útil a aprender: as regras sem -Jsão boas para contabilidade.
Alexios #
2

Você pode adicionar regras de contabilidade à sua configuração do iptables. Isso deve ocorrer antes de você aceitar o tráfego ESTABELECIDO e RELACIONADO, ou você perderá a contagem do tráfego que passa. Para contar o tráfego da web, tente uma regra como:

iptables -A INPUT -p tcp --dport 80 

Se você tiver várias delas, poderá criar uma cadeia contábil para poder relatar e zerar contadores de forma isolada de outras cadeias.

O firewall Shorewall permite adicionar facilmente regras de contabilidade ao seu conjunto de regras.

BillThor
fonte
1

Não se esqueça de incluir estatísticas de tráfego de saída.

# 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
Busindre
fonte
0

Utilize o tcpdump,

tcpdump -i qualquer -nnn

as saídas do comando acima incluiriam o carimbo de data / hora, os endereços src / dest ip, a porta e o tamanho do pacote. Com essas informações, você pode atingir seu objetivo facilmente com um script bem escrito.

Derui Si
fonte
0

Não está claro se você precisa de uso por IP de destino, mas o vnstat é uma ferramenta útil para registrar o uso do tráfego por interface. Instale-o e execute vnstat -u -i eth0para cada interface que você deseja monitorar. Para então obter o uso por dia, use vnstat -i eth0 -d.

mgorven
fonte
1
Eu não acho que usando vnstatposso obter estatísticas por porta ... Ou estou errado?
Pbm
1
@ pbm Ah, você quer dizer porta TCP / UDP. Não, o vnstat não fará isso.
mgorven