IFPR-Labtelecom: CMS (Conexões de rede)

Quantos dispositivos se conectam na rede IFPR_ALUNOS diariamente?

O Labtelecom disponibiliza um conjuntos de redes sem fio abertas (projeto Rede IFPR Alunos) no último andar do IFPR - Curitiba para atender os laboratório de informática, telecom e jogos. Nessa seção é desenvolvido um método de aquisição para responder justamente a pergunta acima.

Inicialmente, o Labtelecom utiliza um Switch Multilayer da Cisco (modelo 3560) para fazer o roteamento das redes internas. Além disso, um servidor de rede principal rodando GNU/Linux Debian permite o monitoramento em nuvem de diversos dispositivos do laboratório, mais informações no projeto CMS - Nuvem. Utilizando essa combinação o Switch Multilayer realiza a distribuição dos endereços IPs da rede e o Servidor Linux realiza a captura e realiza o processamento das informações gerando no final de cada o gráfico apresentado abaixo com a quantidade de dispositivos conectados em cada rede.

O Switch Multilayer também fornece um servidor DHCP para essa rede, com o comando sh ip dhcp binding é possível obter o relatório de uso do servidor DHCP, conforme apresentado abaixo.

Bindings from all pools not associated with VRF: IP address Client-ID/ Lease expiration Type Hardware address/ User name 192.168.7.1 01d0.0401.5083.8b Mar 01 1993 09:01 PM Remembered 192.168.7.2 fc45.96db.1234 Sep 10 2019 03:14 PM Automatic 192.168.238.6 0110.f1f2.1234.c8 Sep 10 2019 03:24 PM Automatic 192.168.238.7 0168.c44d.1234.8a Sep 10 2019 03:19 PM Automatic 192.168.238.9 0148.2ca0.1234.e7 Sep 10 2019 03:01 PM Automatic 192.168.238.10 01bc.4cc4.1234.d2 Sep 10 2019 03:32 PM Automatic 192.168.238.11 0104.d4c4.1234.ed Sep 10 2019 03:39 PM Automatic 192.168.238.12 01f0.d7aa.1234.b4 Sep 10 2019 03:39 PM Automatic 192.168.238.13 0158.d9c3.1234.5c Sep 10 2019 02:25 PM Automatic 192.168.238.14 01d4.63c6.1234.aa Sep 10 2019 03:36 PM Automatic 192.168.238.15 44d3.ad8e.1234 Sep 10 2019 03:00 PM Automatic 192.168.238.16 019c.f48e.1234.27 Sep 10 2019 02:28 PM Automatic 192.168.238.17 01bc.98df.1234.b3 Sep 10 2019 03:21 PM Automatic 192.168.238.18 0170.fd46.1234.b2 Sep 10 2019 02:28 PM Automatic 192.168.238.19 0188.365f.1234.d0 Sep 10 2019 03:22 PM Automatic 192.168.238.21 0170.fd46.1234.02 Sep 10 2019 03:15 PM Automatic 192.168.238.22 0158.d9c3.1234.b2 Sep 10 2019 02:44 PM Automatic 192.168.238.23 0170.3a51.1234.28 Sep 10 2019 02:42 PM Automatic 192.168.238.24 01a8.16d0.1234.85 Sep 10 2019 03:17 PM Automatic 192.168.238.25 0190.735a.1234.88 Sep 10 2019 02:43 PM Automatic

Para capturar os dados pelo servidor local é utilizado o comando sshpass, com o comando grep filtramos o resultado para selecionar apenas os IPs começando com 192.168.23 da tabela acima, o resultado é salvado no arquivo Network_acc1.txt.

(sshpass -p "SENHA" ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 gustavo@192.168.1.252 sh ip dhcp binding)| grep 192.168.23 > Network_acc1.txt;

Na sequência o comando wc -l Network_acc1.txt retorna a quantidade de linhas do arquivo. O comando awk salva a quantidade de clientes conectados na rede.

ACC=$(wc -l Network_acc1.txt | awk '{print $1} ');

O resultado final é salvo no arquivo Network_clients.txt junto com a data da medição conforme comando abaixo.

echo $(date +%Y)/$(date +%m)/$(date +%d) $ACC >> Network_clients.txt;

Para plotar no gráfico são selecionados os último 15 dias conforme o comando tail logo abaixo:

tail -n 15 Network_clients.txt; > Network_buffer.txt;

Com o comando clear ip dhcp binding '*' é limpada a lista de IPs distribuídas pelo switch multilayer, esse comando é enviado pelo servidor conforme abaixo:

sshpass -p "SENHA" ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 gustavo@192.168.1.252 clear ip dhcp binding '*';

Finalmente, com o comando gnuplot é gerado o gráfico Network_clients.png.

gnuplot -e "set notitle; set xlabel 'Tempo - Mês/Dia' offset 0,0; set ylabel 'Quantidade de usuários conectados'; set key outside top center horizontal; set terminal png size 750,440; set xdata time; set timefmt '%Y/%m/%d'; set format x '%m/%d'; set style data boxes; set style fill solid 0.1; set yrange [0:400]; set linetype 1 lw 2 lc rgb 'blue'; set timestamp; set grid; set terminal png size 750,440; plot 'Network_buffer.txt' using 1:2 title'Rede IFPR-ALUNOS', 'Network_buffer.txt' using 1:2:2 notitle with labels center offset 0,0.5 ; " > Network_clients.png;

Essa mesma técnica foi replicada para os demais pontos de acesso mudando apenas o endereço de rede.

Script versão antiga: O Switch Multilayer também fornece um servidor DHCP para essa rede, com o comando sh ip dhcp server statistics é possível obter o relatório de uso do servidor DHCP, conforme apresentado abaixo.

Memory usage 79569

Address pools 2

Database agents 0

Automatic bindings 263

Manual bindings 0

Expired bindings 1813

Malformed messages 24

Secure arp entries 0

Renew messages 278

Message Received

BOOTREQUEST 0

DHCPDISCOVER 504367

DHCPREQUEST 36353

DHCPDECLINE 0

DHCPRELEASE 7

DHCPINFORM 1976

Message Sent

BOOTREPLY 0

DHCPOFFER 22944

DHCPACK 32922

DHCPNAK 365

Nesse caso o parâmetro Automatic Bindings fornece a quantidade de clientes que receberam IP. Lembrando que existem duas redes (Address pools) que funcionam nesse servidor. Entretanto, a primeira rede utiliza reserva de endereços MAC que não modificam o parâmetro Automatic Bindings.

Para capturar essa resposta pelo servidor principal é utilizado o comando sshpass, armazendo o resultado na váriavel ACC, conforme descrito abaixo.

ACC=$(sshpass -p "SENHA" ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 gustavo@192.168.1.252 sh ip dhcp server statistics | grep Automatic);

Com o comando grep Automatic filtramos a resposta de todo o relatório, resultando em:

Automatic bindings 263

Na sequência é registrada a data da medição no arquivo Network_acc.txt, conforme apresentado abaixo.

echo $(date +%Y)/$(date +%m)/$(date +%d) $ACC > Network_acc.txt;

Com o comando sed o texto Automatic bindings é substituído por espaços em branco e o resultado final é anexado no arquivo Network_clients.txt.

sed -e 's/Automatic bindings//g' Network_acc.txt >> Network_clients.txt;

Na sequência é preciso limpar o relatório do servidor do switch multilayer o comando clear ip dhcp binding * para executar automaticamente pelo servidor de rede foi utilizado novamente o comando sshpass.

shpass -p "SENHA" ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 gustavo@192.168.1.252 clear ip dhcp binding '*';

Lembrando que esse comando é executado diariamente no final do dia.