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).

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

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.


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

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.