Simple LAN Monitor - F.A.Q.

 

F.A.Q.

1. Compilação

1.1. Compilei o applet JAVA com o JDK 1.2 ou superior, e instalei-o. Ao correr, o browser queixa-se que não encontra as classes.

R: O Internet Explorer (versão 4.0 ou superior) só suporta a máquina virtual JVM 1.1. Compilando com versões posteriores do JDK 1.1 da Sun, para um formato binário v1.2 ou superior, causará este tipo de erros*. As versões anteriores só suportam a JVM 1.0, pelo que a nossa applet não correra.

O Netscape Navigator (até a versão 4.xx**) só suporta a JVM 1.0, pelo que a nossa applet não correrá neste browser. A versão 6.0 ou superior é suposta suportar a JVM 1.1.

* Para resolver este problema use o comando "javac -target 1.1 *.java", para forçar o formato binário das classes para a JVM 1.1.
** Nós corremos com sucesso na v4.75, no Red Hat Linux 7.0, mas são precisos mais testes.

1.2. Tentei compilar o código UNIX, mas este queixa-se que lhe faltam bibliotecas.

R: O código do sniffer assenta sobre a biblioteca libpcap. Na instalação de pacotes das distribuições, esta normalmente vem dentro da categoria de bibliotecas de desenvolvimento e necessita de ser instalada. No caso de esta não se encontrar, ou já não possuir os CD's de instalação, o melhor será proceder à sua instalação a partir do código fonte.

1.3. Que usaram para compilar o código?

R: Usamos o compilador gcc em Linux (para o servidor), e para o código JAVA, o Microsoft Visual J++ 6.0 e o Sun JDK 1.3 (em Windows).

1.4. Estive a usar a applet, e reparo que enquanto no IE 5.x ou 6.0, possuo uns botões do lado direito do ecrã, estes não aparecem no IE 4.0.

R: A JVM do IE 4.0 original, possui diversos problemas. Instale a última versão da JVM, ou melhor ainda, faça um upgrade para a versão 5.x ou 6.0.

2. Funcionamento

2.1. A applet não consegue comunicar com o servidor TCP. Que se passa?

R: Devido ao desenho da arquitectura de segurança do JAVA, é necessário o browser realizar o donwload do mesmo servidor em que o servidor sniffer/TCP se encontra.

Para ultrapassar esta limitação, no caso de estar a usar o appletviewer do JDK da Sun, pode adicionar o conteúdo do ficheiro .java.policy, fornecido com a aplicação, ao já existente, ou caso não exista, copiá-lo para a raiz do seu directório pessoal.

Windows NT, 2000 e XP: 'copy .java.policy "%USERPROFILE%"'.

UNIX e Linux: 'cp .java.policy ~/'.

Nota: Isto desliga a segurança do TCP/IP do JAVA para todos os programas JAVA.

2.2. Preciso de históricos de ocupação de rede. Como procedo?

R: Os componentes sniffer em UNIX (Linux), funcionam com compatibilidade MRTG. Neste caso, recomendo esta instância apenas para uso do MRTG. No entanto, não existe nesse segmento de colisão de rede um hub ou switch com capacidade SNMP? Este seria o mais indicado, já que a ocupação de CPU de um servidor à escuta de trafego de rede é directamente proporcional ao trafego presente nessa rede.

Se depois destas indicações, ainda quiser, ou precisar de usar o MRTG, compile o ficheiro mrtg.c e verifique se o ficheiro mtrg.cfg incluído com as fontes deste programa na pasta others.

2.3. Instalei o vosso servidor correctamente, mas (quase) não vejo trafego...

R: Verifique se se encontra ligado a um switch. Se for esse o caso, necessita de configurar uma porta para monitorização, de forma a visualizar o trafego deste segmento. Atenção, que se for este o caso, não se recomenda correr outros serviços no servidor, devido ao impacto negativo que poderá existir com uma rede a 100 Mbps com uma carga elevada.

2.4. Quero ter sempre os daemons de escuta de trafego a correr no meu servidor. Como fazer?

R:

  • Debian:

Copie o ficheiro sniffstart.sh para:

/etc/init.d

No directório /etc/rc2.d e no /etc/rc5.d executa o comando:

#ln -s /etc/init.d/sniffstart.sh S20snifftraf

 

  • RedHat e Mandrake:

Copie o ficheiro sniffstart.sh para:

/etc/rc.d/init.d

No directório /etc/rc.d/rc3.d e em /etc/rc.d/rc5.d executa o comando:

#ln -s /etc/rc.d/init.d/sniffstart.sh S20sniffstart

A partir deste momento, sempre que realizar um reboot à máquina, esta arranca com o servidor.

2.5. Porque fizeram este software? O ipfilter/ipchains/ipfwadm devolve as estatísticas de ocupação de rede. E existe o ntop...

R: As informações devolvidas pelos filtros de firewall, apenas representam o trafego directamente enviado para a máquina, ou broadcasts. Apenas representam o trafego total, quando esta funciona como firewall ou bridge.

2.6. Não existe já software/hardware para este uso?

R: Claro, mas cada qual possui usos diferentes. Nós necessitava-mos de uma ferramenta que fornecesse feedback da ocupação da rede em tempo real. E como:

- O ntop é pesado, e como nem sempre é possível (ou desejável) mostrar todo o output que esta ferramenta gera aos clientes;

- E como o MTRG está pensado para proceder a uma instalação e manter-se sempre em funcionamento; é também algo lento ao obter resultados em tempo real; para mais, está irremediavelmente condicionado a um intervalo de cinco minutos;

- Nem sempre se encontra um network analyzer/tester disponível; e quando se encontra também significa mais "400g" que temos de carregar;

- E por último, temos sempre de andar a carregar um portátil para fazer instalações em clientes...

Nós desenvolvemos este software essencialmente para:

- Ser leve;

- Colocar um portátil num ponto, e visualizar noutro local de rede (i.e. na estação de trabalho pessoal do cliente).

2.7. O vosso software é o que eu preciso para obter estáticas do meu proxy, do trafego do meu servidor ou existe algo mais indicado?

R: Para este efeito, recomendamos a instalação de um servidor SNMP, ou da instalação de estatísticas de proxy. Ocupa bastante menos CPU do servidor e realiza o mesmo efeito.

2.8. Em certas circunstâncias costuma aparecer uma linha com o programa sniffclient e a string <killed> no comando ps. Que significa isto?

R: Isto significa que na terminologia UNIX, se possui um zombie no sistema.

O sniffclient executa uma cópia de si mesmo recebendo um pedido do cliente. Devido à construção do mesmo, é comum ficar um e apenas um zombie enquanto este se encontra a funcionar. Tem a ver com timings do bloqueio da função sockets accept e com a execução da função wait3. Ver tcppserver.c para mais detalhes.

Qualquer zombie desaparecerá aquando de um kill ao processo tcpserver.

A solução é colocar um select no código antes do accept. Pode ser que já tenhamos corrigido isto pela altura que estiverer a ler isto.

2.9. Que são essas regras BPF que vocês mencionam?

R: As regras BPF (Berkeley Packet Filter), foram desenvolvidas para fornecer uma linguagem de alto nível para filtragem de pacotes de trafego. São suportadas pela biblioteca libpcap. Para mais detalhes, consulte:

- man tcpdump;

- http://www.tcpdump.org;

- o livro de Stevens: "Network Programming, Volume 1 Second Edition, Networking APIs: sockets and XTI; ISBN 0-13-490012-X";

- as fontes do libpcap.

3. Evoluções Futuras

3.1. Possuem alguns planos para melhorias?

R: Possuímos planos para um cliente Windows Win32 e X Windows e um servidor para Windows NT, 2000 e XP.

3.2. Tenho de compilar o código. Não o posso instalar directamente?

R: Ainda não tentamos criar packages rpm ou deb. Mas se nos fornecerem as instruções passo a passo... ;->

3.3. A comunicação de dados entre o servidor e a applet, não é insegura?

R: Claro que é. No entanto, a segurança apenas se aplica onde necessário. Na nossa opinião, não se justifica codificar os valores de ocupação das redes.

Consequentemente, não pretendemos modificar este ponto.

3.4. Não posso correr tudo no meu servidor Windows?

R: Neste momento não,  mas temos planeado uma versão da parte servidor para Windows NT, 2000 e XP, num futuro próximo. O Windows 9x e ME não serão suportados devido á falta de estabilidade destes SO's, em especial no suporte de rede.