Aula #41 - Solução de problemas no Linux nível básico



Mesmo os sistemas Linux melhor administrados irão desenvolver problemas, realizar o troubleshooting pode determinar se os problemas tem origem no software ou hardware, bem como se são locais no sistema, ou se tem origem na rede local ou Internet. 
Troubleshooting requer julgamento correto e experiência, e mesmo que tenha um toque de arte, seguir bons procedimentos metódicos pode realmente ajudar a isolar as fontes de problemas de uma forma fácil de reproduzir.




Existem três níveis de troubleshooting (solução de problemas):

    Iniciante:  Pode ser ensinado muito rapidamente.
    Experiente:  Vem com alguns anos de prática.
    Mágico:  Alguns acreditam que é uma questão de ter nascido com o dom, o que é absurdo; todas as habilidades necessárias podem ser aprendidas. O ideal é que toda organização tenha ao menos uma pessoa neste nível de especialização.




Solução de problemas (ou troubleshooting) envolve tomar uma série de medidas, que precisam ser repetidas de forma estruturada até que a solução seja encontrada. A receita básica pode ser:

  •     Caracterizar o problema.
  •     Reproduzir o problema.
  •     Sempre tentar as coisas fáceis primeiro.
  •     Eliminar as causas possíveis, mas apenas uma de cada vez.
  •     Mude apenas uma coisa de cada vez; Se a alteração não resolver o problema, desfaça a alteração.
  •     Verifique os logs do sistema (/var/log/messages, /var/log/secure, etc.) para obter mais informações. 



Às vezes, a filosofia e metodologia dominantes requerem seguir um procedimento muito bem estabelecido; palpites baseadas na intuição são desencorajados. A motivação para a utilização de um procedimento com uma lista de verificação uniforme é evitar a dependência de um mago, e garantir que todos os administradores de sistema possam resolver os problemas, desde que eles usem os procedimentos existentes. Caso contrário, se o mago deixar a empresa, não haverá ninguém qualificado o suficiente para resolver problemas difíceis.

Se, por outro lado, você optar por seguir sua intuição e confiar nos seus palpites, você deve se certificar de que é possível obter dados suficientes de forma rápida. Essa avaliação de eficiência vai te ajudar a decidir se quer ou não continuar no caminho intuitivo, já que você tem uma ideia concreta sobre a produtividade dessa abordagem.

As vezes ignorar a intuição pode fazer a solução de problemas demorar mais tempo, o histórico (ou log) de soluções de problemas anteriores é a ferramenta recomendada para avaliar se a abordagem intuitiva tem sido uma boa forma de resolver os problemas. Em outras palavras, intuição útil não é mágica, é experiência em um ambiente estruturado. 



Conectividade


Os seguintes itens devem ser verificados quando há problemas com a rede:



    Configuração IP:
    Use a ferramenta ifconfig ou ip para ver se a interface está ativa, e em caso afirmativo, se ela está configurada.
     
    Driver de rede:
    Se a interface não pode ativada, talvez o driver correto não tenha sido carregado. Verifique com o lsmod se o driver de rede está carregado como um módulo do kernel, ou verifique os arquivos virtuais nas pastas /proc e /sys, em arquivos como /proc/interrupts ou /sys/class/net.
     
    Conectividade:
    Use o ping para ver se a rede está visível, se o tempo de resposta está normal, e se há perda de pacotes. Já o traceroute pode seguir os pacotes através da rede, enquanto o mtr pode fazer isso de uma forma contínua, repetindo os testes a cada poucos segundos. Estes utilitários podem dizer se o problema é local ou na Internet.
     
    Gateway padrão e configuração de rotas:
    Execute route -n para ver se a tabela de roteamento faz sentido.
     
    Resolução de nomes:
    Use o dig ou host em um nome de domínio para ver se a infra-estrutura DNS está funcionando corretamente. 



Os problemas de rede podem ser causados por software ou hardware, e resolver pode ser algo simples como carregar o driver de dispositivo, ou conectar o cabo de rede. Se a rede está funcionando, mas o desempenho é terrível, a tarefa se torna análise e ajuste de desempenho, e não solução de problemas. Os problemas podem ser externos ao servidor, e até externos a sua rede local, ou podem exigir o ajuste de parâmetros no servidor como tamanhos de buffer etc.





Integridade de arquivos


Há várias maneiras de verificar a integridade de arquivos de configuração e de arquivos binários. Sistemas de pacotes oferecem métodos para verificar integridade e detectar alterações, como discutimos anteriormente. Para sistemas baseados em RPM:

$ rpm -V um_pacote

verifica um único pacote, enquanto

$ rpm -Va

verifica todos os pacotes instalados no sistema.

Em sistemas baseados em Debian pode-se fazer a verificação de integridade com:

$ debsums opções um_pacote

que irá verificar os arquivos nesse pacote comparando com o hash md5 informado pelo pacote. No entanto, nem todos os pacotes contém os hash md5 para os arquivos. Pode-se também usar -V ou opções --verify em versões recentes do dpkg. 

O aide faz detecção de intrusão e é uma outra maneira de verificar se há alterações nos arquivos:

$ sudo aide --check

irá executar uma varredura em seus arquivos e compará-los com a última verificação. Para que este comando seja útil você terá que manter o banco de dados aide atualizado e seguro.



Inicialização



Se o sistema não iniciar corretamente ou totalmente, estar familiarizado com o que acontece em cada etapa é importante para identificar fontes de problemas. Supondo que você passe da BIOS, você pode chegar a um desses estados infelizes:



    Sem a tela do bootloader:
    Verifique se há erros de configuração do GRUB, ou se o setor de inicialização foi corrompido. Você pode ter que reinstalar o bootloader.
     
    Kernel não carrega:
    Se você for recebido com um kernel panic durante o processo de boot, o mais provável é que ele está sendo causado por configuração incorreta ou corrompida, ou por causa de parâmetros incorretos especificado na linha de comando do kernel. Se o kernel já iniciou com sucesso no passado, ou o próprio kernel foi corrompido, ou a configuração do GRUB foi alterada de forma improdutiva. Dependendo da causa do problema você pode reinstalar o kernel, ou entrar no menu do GRUB durante o no boot e tentar usar o mínimo de parâmetros na linha de comando. Ou ainda você pode tentar iniciar uma imagem de recuperação, que vamos apresentar em breve.
     
    O kernel inicia, mas não consegue montar o sistema de arquivos root:
    As principais causas são
    1. Erros no arquivo de configuração do GRUB.
    2. Erros no /etc/fstab.
    3. Não há suporte para o tipo de sistema de arquivos usado por uma partição importante ou pela imagem de inicialização initramfs.
     
    Falhas com o processo init
    Há muitas coisas que podem dar errado depois que o init é executado. Olhe atentamente para as mensagens que são exibidas antes do erro. Se o seu sistema já funcionou com um kernel diferente, isso pode ser uma grande pista. Procure por sistemas de arquivos corrompidos, erros em scripts de inicialização etc. Tente iniciar em um runlevel mais baixo, tal como 3 (sem gráficos) ou 1 (modo monousuário). 




Montagem de disco



Se durante o processo de boot, um ou mais sistemas de arquivos não puderem ser montados, o fsck pode ser usado para tentar reparar. No entanto, antes de fazer isso deve-se verificar que /etc/fstab não foi configurado incorretamente ou está corrompido. Lembre-se que você pode ter problemas com sistemas de arquivos não reconhecidos pelo kernel que está sendo executado no momento. 

Se o sistema de arquivos raiz foi montado você pode examinar o fstab, mas o / pode ter sido montado como somente leitura, de modo que para editar o arquivo e corrigi-lo você pode fazer:

$ sudo mount -o remount,rw /

para remontá-lo com permissão de escrita.

Se /etc/fstab parece estar correto, você pode acionar o fsck. Em primeiro lugar você deve tentar:

$ sudo mount -a

para tentar montar todos os sistemas de arquivos. Se isso não funcionar completamente, você pode tentar montar manualmente os sistemas de arquivos com problemas. Você deve primeiro executar fsck para apenas examinar; depois você pode executá-lo novamente para tentar corrigir os erros encontrados. 




Discos de boot para recovery 


Vamos descrever discos de resgate e recuperação (rescue e recovery) e outras mídias posteriormente; aqui vamos apenas discutir solução de problemas (troubleshooting). Estas mídias contêm ferramentas valiosas para avaliar (e corrigir) sistemas danificados.

O nome exato irá variar entre distribuições Linux, mas quando você iniciar a partir de um live CD/DVD ou pendrive USB você deve ser capaz de selecionar uma opção com um nome semelhante a Rescue Installed System (que significa recuperar o sistema instalado) .

A imagem de resgate geralmente contém um conjunto limitado, mas poderoso de ferramentas para corrigir problemas:

    Ferramentas de manutenção de disco  
    Utilitários de rede
    Utilitários Diversos
    Arquivos de log.


Discos de resgate contêm muitos programas úteis, incluindo:

    Ferramentas de disco para criar partições, controlar dispositivos RAID, gerenciar volumes lógicos (LVM), e para criar sistemas de arquivos:
    fdisk, mdadm, pvcreate, vgcreate, lvcreate, mkfs, e muitos outros.
    Ferramentas de rede para determinar problemas e verificar conectividade:
    ifconfig, route, traceroute, mtr, host, ftp, scp, ssh.
    Vários outros comandos também estão disponíveis, como:
    bash, chroot, ps, kill, vi, dd, tar, cpio, gzip, rpm, mkdir, ls, cp, mv, e rm são uma pequena parte da lista.



A imagem de resgate pode fazer uma série de perguntas durante a inicialização. Uma delas é se deve ou não montar os sistemas de arquivos encontrados, se isso for possível. 

Caso seja possível, elas serão montadas em um diretório, geralmente na pasta /mnt/sysimage. Você pode ir para este diretório para ver seus arquivos ou você pode mudar para o seu ambiente com o comando:

$ sudo chroot /mnt/sysimage .

Você pode instalar pacotes dentro do chroot. Você também pode instalar pacotes de fora do chroot. Por exemplo, em um sistema baseado em rpm, basta usar a a opção --root para especificar a localização do diretório raiz do ambiente que está sendo recuperado:

$ sudo rpm -ivh --force --root=/mnt/sysimage /tmp/vsftpd-2*.rpm .

Este comando instala o pacote vsftpd no sistema sendo recuperado.

Para iniciar o ambiente de resgate pela rede, uma das perguntas pode ser sobre montar o /mnt/source. 




Algumas distros Live que possuem recursos para recovery e rescue de sistema:

  • Kali Linux
  • Clonezilla 
  • BackBox
  • Parted Magic
  • GParted Live
  • SystemRescueCD








Mais vistos no mês:

SSD no linux

Teste de Performance de Rede com Iperf

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

DHCP - Guia Completo

OPNsense - Firewall Open Source

As melhores distribuições Linux para 2017

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

Modelo Firewall Completo em Iptables para pequena rede/office