O Futuro é a Liberdade

Discussões sobre Software Livre e Sociedade

Tutorial – Rede: Como diagnosticar problemas de conexão

Posted by Paulo em 23/12/2009

Introdução.

Uma fonte de grandes frustrações com o Linux é a configuração da rede. Apesar do sistema ser todo automatizado e falhar apenas em casos especiais, bem especiais mesmo, ainda assim é possível que você se enquadre em um deles, e aí começam seus problemas, já que, em geral esses problemas são fáceis de resolver, mas requerem um pouco mais de experiência com o sistema. Isso não quer dizer que você não consiga fazer e, uma prova disso é que, se no Windows você consegue abrir uma janela do DOS e digitar “ipconfig“, você também conseguirá resolver o problema no Linux.

Como se trata aqui de “casos especiais”, vou abrir uma exceção e incluir alguns comandos via terminal. Isso vai servir para que você, além de diagnosticar e resolver os problemas, também comece a ter alguma intimidade com ele na hora da necessidade. Vamos lá:

Você pode abrir uma janela do terminal clicando no menu Aplicações –> Acessórios –> Terminal como mostrado abaixo:

Clique para aumentar a imagem

Aparecerá a seguinte janela:

Vamos explicar algumas coisas a respeito dessa janela, pois é necessário que você entenda a ferramenta que utilizará para resolver seus problemas de rede, apesar dela não ter nada a ver com o problema em si, mas com a busca da solução. A barra de título mostra o texto “pslima@cic01112: ~” onde, “pslima” é o login do usuário, “cic01112” é o nome do computador no qual estou trabalhando e “~” indica que estou no diretório de arquivos do usuário pslima. Na área de trabalho do terminal, temos ainda uma informação adicional: o caracter “$“, chamado de prompt do usuário. Todos os arquivos do usuário pslima estarão armazenados nesse diretório (que é a abreviação do diretório “/home/pslima/“), ou em pastas abaixo desse diretório. Aqui você tem uma visão em modo texto do que, em modo gráfico, seria obtido clicando no menu Locais –> Pasta Pessoal. A partir desse prompt é possível digitar comandos específicos para o sistema.

O nosso foco aqui é o diagnóstico de problemas de rede, mas o procedimento acima será utilizado toda vez que for necessário utilizar o terminal para executar alguma operação que seria mais complicada em modo gráfico, ou que simplesmente não pode ser feita em modo gráfico. Além disso, não vamos nos referir à solução dos problemas, já que cada uma delas pode ter soluções muito diferentes. O objetivo aqui é determinar onde está o problema.

Verificando se a placa foi detectada pelo sistema.

Esse procedimento é feito com os comandos “lsusb” para dispositivos plugados nas interfaces USB, como modems 3G e dispositivos usb-wireless, e “lspci” para dispositivos “onboard“, ou conectados aos slots PCI do seu computador. O exemplo abaixo mostra o comando o resultado do comando “lspci“:

Você poderá dizer “Minha nossa! O que é isso”? Mas não se assuste. Cada linha da resposta do comando indica a presença de um dispositivo PCI no computador. O que nos interessa é apenas o que diz respeito à placa de rede, ou “Ethernet Controller”, no nosso caso. No exemplo acima, as duas últimas linhas da resposta do comando. Caso não haja nenhuma referência a “Ethernet Controler” (para placas de rede cabeada), “Wireless” ou “Wifi” para dispositivos para redes sem fio, “3G” ou “HSDPA” ou “USB Modem”, significa que seu hardware não foi detectado. Isso pode ter várias causas, mas as duas principais são: mal contato ou defeito.

Verificando se os drivers foram carregados.

Feita essa verificação, se tudo estiver ok, passamos à ver se os driver do dispositivo de rede estão carregados. Aqui abro parênteses: cada placa de rede, dispositivo wireless ou modem 3G tem um driver diferente. Cabe a você descobrir qual o driver correto para o seu dispositivo nos fórums, listas de discução e tutoriais disponíveis pela internet. De posse dessa informação, utilizaremos o comando lsusb para ver se o driver foi corretamente carregado. De um modo geral, a carga desses drivers é automática. Apenas em casos muito especiais é necessário fazer isso manualmente. Para saber se o módulo do driver foi carregado, utilizaremos o comando “lsmod“. No nosso exemplo, a placa de rede é a Realtek RTL8111/8168B PCI. O módulo do driver correspondente, segundo minhas pesquisas na internet (e porque é o que está funcionando) é o r8169. A lista de módulos de drivers disponíveis está no diretório /lib/modules/<versão do kernel>/kernel/drivers/ (nas pastas inferiores dele). A pasta só pode ser modificada pelo root, portanto, você pode olhar à vontade (pode usar o navegador de arquivos do modo gráfico para isso), mas não mexa! 🙂

No nosso exemplo, a resposta do comando “lsmod” foi enorme, mas vamos filtrá-la para exibir apenas o que interessa com o comando “lsmod | grep r8169” (por isso é importante saber o nome do módulo correto):

Se o comando não retornar nada, ou no comando “lsmod” não tiver nada referente ao driver que você descobriu como sendo o correto para o seu dispositivo, significa que ele não foi carregado e você terá de fazê-lo manualmente. Como já disse, cada caso é um caso e você deverá procurar na internet como proceder no seu caso.

Dica: no caso dos modems 3G USB, os módulos que devem ser carregados, em geral são: “usbserial” e “usbmodeswitch”.

Verificando se as configurações estão corretas.

Passado mais esse teste, vamos ver se a interface de rede está corretamente configurada. Aqui mais parênteses: Existem comandos específicos para placas de rede cabeada, wireless e modems USB que podem ajudar a refinar a procura e a encontrar o problema. No nosso exemplo, estamos focando numa placa de rede cabeada, mas você pode procurar por outros comandos para, por exemplo, dispositivos wireless. Digite no terminal “man iwconfig” para ver informações sobre os comandos relacionados aos dispositivos wireless.

De maneira geral, verificamos se a rede está funcionando com o comando “sudo ifconfig”:

O comando “ifconfig” exige que você o execute como superusuário, por isso colocamos o comando “sudo” antes dele. O sudo pedirá a sua senha de susuário para ser executado e, caso nada aconteça, significa que seu usuário não tem direitos administrativos e você não conseguirá resolver nenhum problema que exija a intervenção do superusuário, como problemas de rede.

No exemplo acima, verificamos que a interface correspondente à placa de rede cabeada (eth0) está funcionando e está conectada à rede. Vamos esmiuçar essas informações:

eth0      Link encap:Ethernet  Endereço de HW 00:1f:d0:f2:9c:d5
inet end.: 172.16.30.214  Bcast:172.16.30.255  Masc:255.255.255.0
endereço inet6: fe80::21f:d0ff:fef2:9cd5/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
RX packets:74328 errors:0 dropped:2524626355 overruns:0 frame:0
TX packets:52035 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:68714315 (65.5 MiB)  TX bytes:8431540 (8.0 MiB)
IRQ:220 Endereço de E/S:0x4000

A primeira linha indica que a “eth0” é uma interface ethernet cujo endereço de hardware (o MAC Address) é 00:1F:d0:F2:9C:D5.

A segunda linha informa que o link da rede está “up” e que a placa recebeu um endereço IP (versão 4) do servidor DHCP da rede local (ou, também pode significar que o endereço foi definido como fixo). A linha também informa o endereço da rede (broadcast) e a máscara de rede utilizada (que determina quantos computadores poderão utilizar essa rede).

A terceira linha informa o mesmo que a anterior, porém, no formato IP (versão 6).

A quinta linha não está no escopo do nosso tutorial.

As sexta, sétima e oitava linhas nos informam a respeito do tráfego nessa interface. Observem que há muitos pacotes que saíram (TX) e muitos que entraram (RX) por essa interface. Isso é um indicativo de que a rede está funcionando em ambos os sentidos. Qualquer um desses valores zerados ou próximos de zero no RX, bem como muitos pacotes com erro (errors: ) ou “dropados” (dropped: ), também no RX, podem indicar problemas com a cabeação. O valor de “colisões”, indica que o tráfego no equipamento de rede onde seu computador está fisicamente conectado (o switch, o hub, o roteador, etc.) está alto, ou seja, há muitas máquinas acessando ao mesmo tempo e muitos pacotes são descartados porque o equipamento de rede não dá conta do volume. Isso é típico quando nada mais explica a lentidão da rede: um download gigantesco, uma máquina infectada por vírus enviando spam, um colega que enviou aquelas fotos do churrasco de fim de ano, por email, para todos os funcionários da empresa, etc.

A última linha indica o endereço de hardware utilizado pela placa de rede e sua interrupção de hardware. Isso é útil na hora de identificar conflitos de hardware em computadores mais antigos.

A segunda interface, a “lo“, também é fundamental para o funcionamento da rede. É a interface de “loopback“, que tratará pacotes enviados pela máquina para ela mesma (como uma aplicação que utiliza a rede para enviar informações para a mesma máquina). Um exemplo típico de uma aplicação dessa é um servidor de web. Vários programas se utilizam de um servidor web local para funcionar via navegador, por exemplo, o Webmin, que administra as configuração da máquina, quando instalado.

As outras duas interfacxes dizem respeito a máquinas virtuais do computador do exemplo e que estão fora do escopo desse tutorial.

Caso a interface correspondente ao seu dispositivo, “eth” para interfaces ethernet (cabeadas), “wlan“, “wifi“, “ath” para interfaces wireless ou “ppp” para modems não apareçam, você deverá verificar as configurações gerais da sua rede. Isso pode ser feito manualmente através do arquivo “/etc/network/interfaces“, ou através dos configuradores gráficos de rede, como o network-manager. Abaixo, um exemplo do arquivo interfaces com a interface “lo” e a interface “eth0” configurada para receber seu endereço IP de um servidor DHCP:

Os modems podem ser configurados através do utilitário de configuração pppconfig, ou também, pelo network-manager. Lembrando que o pppconfig deve estar instalado (procure no gerenciador de pacotes Synaptic se ele está instalado), e deve ser executado como superusuário (comando sudo pppconfig). Veja abaixo a tela pricipal desse utilitário:

O network-manager pode ser acessado através do menu Sistema –> Administração –> Rede, como mostrado abaixo:

O programa tem o aspecto abaixo. Versões mais novas podem ser ligeiramente diferentes na disposição dos elementos.

Conclusões.

Antes de tentarmos solucionar um problema, devemos descobrir as suas causas. O diagnóstico das causas nos permite ir direto ao ponto, ter argumentos e informações para pesquisar e, principalmente, para perguntar nos fórums e listas de discussão. Aprendemos neste tutorial, como dividir o problema da conexão de rede em partes, e a investigar cada uma dessas partes, de forma a identificar onde exatamente está a origem do problema. De posse dessa informação, a pesquisa pela solução será muito mais rápida e eficaz, e a frustração dissipada.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

 
%d blogueiros gostam disto: