Como capturar o consumo de rede para uma série de IP's + linux +?

0

Estou procurando um método para capturar o consumo de rede (não a largura de banda) diariamente para um intervalo de IPs. Vamos dizer {192.168.122.0/25}.

Quero calcular por dia a quantidade de tráfego / dados consumidos por esses intervalos de IPs. Isso é apenas para nosso propósito de validação, saber quanto KB / MB / GB / s de dados consumidos por cada IP em base diária.

Meu ambiente é RHEL / Centos 7,

Você poderia sugerir alguma ferramenta com opção para realizar essa operação? Se eu encontrar uma maneira de rastrear o uso / consumo, vou automatizar o processo diariamente.

Estou procurando CLI em vez de ferramentas gráficas. Além disso, eu tentei com iptraf, nmap, iftop, mas não consigo encontrar uma opção para levar o consumo de rede em toda a gama de IP's.

    
por user183980 19.09.2018 / 14:29

2 respostas

1

Uma ferramenta que pode atender às suas necessidades é tshark :

$ tshark -q -i eth0 -a duration:86400 -z conv,ip net 192.168.122.0/25

Com:

  • -q : não exibe a contagem contínua de pacotes capturados
  • -i eth0 : captura o tráfego na interface eth0 (como alternativa, você também pode usar -i any para capturar tráfego em todas as interfaces)
  • -a duration:86400 : captura de tráfego por um dia
  • -z conv,ip : obtenha estatísticas de IP
  • net 192.168.122.0/25 : filtro de captura

Exemplo de saída:

$ tshark -q -i any -a duration:10 -z conv,ip net 192.168.134.0/24
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |

151.101.122.217      <-> 192.168.134.142          571     43915     591   3186555    1162   3230470     0,994980222         6,3748
192.168.134.142      <-> 192.168.136.27             5      1347       6       788      11      2135     5,714866377         0,0350
192.168.134.96       <-> 192.168.134.255            0         0      10      1060      10      1060     0,000000000         9,1583
151.101.129.69       <-> 192.168.134.142            5       608       5       632      10      1240     6,193916779         0,1324

A partir daí, dependendo da sua necessidade, você pode usar outras ferramentas cli para analisar os bytes de saída e de soma (por exemplo, awk )

    
por 19.09.2018 / 15:20
0

Assim, você deseja que o tráfego de rede uso de largura de banda , mas um resumo diário.

Você deu um intervalo de IP privado, então eu suponho que você os deseja pelo endereço IP da sua própria máquina, não pelo endereço IP dos hosts da Internet aos quais eles se conectam.

Existem duas formas de princípio:

1) Monitore o tráfego em cada máquina. O kernel mantém os contadores de pacotes para cada interface de rede em /proc , para que você possa ler esses contadores e calcular o tráfego médio / total.

2) Monitore o tráfego em um roteador central. Para classificá-los por IP local, você precisa de mais do que o tráfego total, portanto, é necessário inspecionar os pacotes. Muitas ferramentas de monitoramento de tráfego funcionam usando o modo promíscuo em uma interface de rede; isso pode causar carga de CPU assistível. Outra opção é escrever regras personalizadas de iptable para contar o uso.

Há uma tonelada de diferentes ferramentas disponíveis, veja por exemplo aqui ou aqui para alguns (e google para mais, as recomendações de software estão fora do escopo deste stackexchange).

Se você escolher a alternativa 1, um protocolo popular para reunir informações de todos os hosts monitorados em um local central é SNMP , então inclua isso nas suas pesquisas no google.

    
por 20.09.2018 / 08:15