Monitore em tempo real a utilização da sua rede por conexão com o iftop

Se você possui um firewall/webproxy Linux fazendo NAT na rede local da sua empresa, condomínio ou residência e, é o administrador do dito cujo, já deve ter sentido a necessidade de verificar em real time como está o consumo da sua banda de conexão à internet, qual usuário/equipamento está trafegando mais dados na sua rede interna ou qual protocolo é o vilão que está consumindo boa parte da sua largura de banda de conexão à internet, correto?

Provavelmente você também já “googleou” bastante em busca de uma aplicação free-software ou ao menos gratuita que realizasse este tipo de monitoramento, de implementação simplificada e que lhe desse relatórios resumidos. Muito possivelmente já deve ter instalado o velho e bom MRTG e percebido que ele não lhe dá respostas diretas às suas necessidades, quem sabe, até mesmo, implementou o Bandwidthd na esperança de disponibilizar uma interface mais amigável para este tipo de monitoramento, mas se decepcionou um pouco em função da coerência dos dados apresentados e do desenvolvimento descontinuado da ferramenta – estou certo?

Bem, se minhas previsões acima estiverem corretas (na sua maioria pelo menos), não se preocupe, nada de “cortar os pulsos com a faca da cozinha”. :). Assim como temos o pacote/comando iotop que mostra a utilização de interrupção de input/output, bem como, o próprio top que nos permite interagir com os processos gerados no sistema operacional, nós também podemos contar com o iftop – que mostra o uso da rede por conexão em real-time (bem ao estilo top de ser). 😉

Para instalar o pacote na sua distribuição Linux você pode seguir os caminhos normais para pacotes pré-compilados (a maioria das distros possuem o iftop na sua árvore de programas) ou, na pior das hipóteses, compilar o programa a partir do seu código-fonte através da velha e boa trinca: configure, make e make install. Se esta última for a sua opção, lembre-se que as bibliotecas libpcap e libcurses são pré-requisitos.

Se você utiliza uma distribuição baseada no Debian (ele próprio, claro), basta instalar:

# apt-get install iftop

Uma vez com a ferramenta instalada, e logado como root, sem nenhuma configuração específica em arquivos textos ou qualquer outra ação, você pode executá-la com uma invocação simples:

# iftop

Isso lhe dará um panorama geral de todas as conexões ativas, de todas as interfaces de rede que estejam trafegando dados e todos os protocolos utilizados neste exato momento. Além dos dados quantitativos o programa gera gráficos em barra e os atualiza automaticamente a cada 10 segundos ou por um período que você pode determinar. Note que as conexões são mostradas em ambos os sentidos (cliente x servidor) o que lhe permite analisar o tráfego de forma independente. Por se tratar de um programa totalmente texto, sua utilização em servidores remotos, principalmente através de conexões ssh, é muito confortável (em função da sua leveza).

Você pode utilizar o programa com diversos filtros, tanto com o intuito de restringir a exibição dos dados (apenas de uma interface de rede, por exemplo), quanto no sentido de buscar strings, ips ou protocolos específicos. O comando abaixo, por exemplo, faz com que o iftop exiba apenas conexões (em todas as interfaces de rede) que utilizem protocolo icmp:

# iftop -f icmp

Você também pode querer restringir o monitoramento a uma de suas redes, como no exemplo abaixo:

# iftop -F 192.168.1.0/24

Se preferir, pode limitar o monitoramento por interface de rede do seu firewall/router Linux:

# iftop -i eth1

Além das opções ilustradas acima, é possível solicitar a exibição dos dados em bytes, limitar a escala de visualização dos gráficos gerados pela ferramenta, mostrar as portas utilizadas pelos hosts durante as conexões ou basear sua execução por intermédio de um arquivo alternativo. A lista completa das possibilidades pode ser obtida através do comando:

# iftop –help

Há também várias formas de se visualizar os dados e gráficos, uma vez que o iftop já esteja em execução. Para saber mais, basta teclar um “?” e uma tela de ajuda será exibida com todas as possibilidades.