Linux vem equipado com uma infinidade de utilitários de rede para escolher. O tcpdump é uma ferramenta de rede poderosa que pode capturar e analisar o tráfego de rede caso você precise solucionar erros de rede no Linux.

Vamos praticar o comando tcpdump e explorar como usá-lo para capturar o tráfego de rede.

Instalando o tcpdump no Linux

tcpdump geralmente vem pré-instalado com todas as principais distribuições Linux e alternativas baseadas em segurança. Então você deve ser capaz de usá-lo imediatamente digitando tcpdump com um sudo prefixo.

Caso você não consiga executar o comando tcpdump e esteja preso no "tcpdump: comando não encontrado", vamos aprender como instalar o tcpdump em sua máquina Linux.

Para instalar o tcpdump, abra o terminal e execute o comando correspondente à distribuição Linux que você está usando atualmente:

Em derivados Debian/Ubuntu, execute:

sudo apt-pegue instale o tcpdump

Sobre Sistemas baseados em arco, corre:

sudo pacman -S tcpdump

Para instalar o utilitário tcpdump no Fedora, CentOS e RHEL, emita o seguinte comando:

sudo dnf instalar tcpdump

Observe que se você for solicitado a instalar libcap, digitar Sim ou S pois é uma dependência central, sem a qual o tcpdump se recusará a iniciar. Isso deve instalar o utilitário tcpdump e resolver o erro "comando não encontrado".

Agora que o tcpdump foi instalado em seu sistema, vamos explorar as diferentes opções e funcionalidades que ele oferece.

Capturando o tráfego de rede com tcpdump

O tcpdump oferece muitos sinalizadores para modificar sua execução, mas também pode ser executado como um comando autônomo. No entanto, executar o tcpdump sem sinalizadores ou argumentos seria negligenciar todo o seu potencial. É sempre melhor usar alguns sinalizadores para ajustar a execução e a saída conforme necessário.

Digite este comando para monitorar as transmissões de rede com tcpdump:

sudo tcpdump

Agora o tcpdump começará a capturar automaticamente os pacotes de rede até um sinal de interrupção é enviado com Ctrl+Z para interromper o processo manualmente. Para limitar o número total de pacotes capturados, use o -c flag e digite o limite desejado de pacotes ao lado dele:

sudo tcpdump -c 5

Se você não consegue entender a saída agora, você precisa familiarize-se com o formato de saída tcpdump primeiro.

Verifique as interfaces de rede disponíveis com o tcpdump

Por padrão, o tcpdump captura o tráfego de qualquer uma das interfaces de rede disponíveis. Se você tiver várias interfaces de rede ativas em uso, talvez queira definir a interface de rede da qual o tcpdump deve capturar os pacotes. Para iniciar o tcpdump em uma interface específica, primeiro você terá que aprender sobre o nome da interface.

Veja como listar todas as interfaces de rede disponíveis com o tcpdump:

sudo tcpdump -D

Ou você pode adicionar o --list-interfaces sinalizar para o comando:

sudo tcpdump --Lista-interfaces

A saída retornada contém uma lista de todas as interfaces de rede ativas que o tcpdump pode escutar. Para configurar o tcpdump para capturar transmissões de uma interface de rede específica, digite este comando:

sudo tcpdump -i interface_id

Ou você pode adicionar o --interface sinalizar para o comando:

sudo tcpdump --interfaceinterface_id

Agora que capturamos alguns pacotes, vamos estudá-los de perto e aprender como você pode ajustar a saída para ser mais legível.

Explorando filtros tcpdump

O tcpdump é capaz de capturar uma enorme quantidade de tráfego em uma única execução. Essa sobrecarga de informações pode desorientá-lo ao investigar ou solucionar problemas com um host ou protocolo de rede específico.

É aqui que os filtros tcpdump entram em ação. Você pode anexar o comando tcpdump com certos sinalizadores para filtrar o tráfego de rede e capturar pacotes específicos. Você pode armazenar esses pacotes e posteriormente analisá-los para chegar à raiz de qualquer problema relacionado à rede. Vamos aprender como usar filtros no tcpdump.

Filtrar pacotes com base no protocolo de rede em uso

Para filtrar os pacotes transmitidos através de um protocolo específico, digite o nome do protocolo com o comando tcpdump, e ele capturará apenas os pacotes que trafegam pelo protocolo de rede definido.

Por exemplo, para capturar pacotes baseados em ICMP, basta anexar ICMP no final do comando tcpdump. O processo é o mesmo se você deseja capturar apenas pacotes UDP ou TCP.

sudo tcpdump -c 5 icmp

Este comando só retornará a saída se houver uma troca de dados através do protocolo ICMP.

Filtrar pacotes com base no host

Você pode configurar o tcpdump para capturar pacotes relacionados a um único host com o hospedeiro parâmetro. Isso é especialmente útil quando todos os sistemas de sua rede estão funcionando, exceto um. Esse filtro permite realizar investigações direcionadas e acelera o fluxo de trabalho geral de solução de problemas, pois você não se distrai com dados desnecessários.

Para capturar pacotes relacionados a um host específico, defina o endereço de rede do host com o hospedeiro parâmetro:

sudotcpdump-c 5 hospedeiro 192.168.2.1

Semelhante ao filtro de protocolo de rede, este comando só retornará a saída se alguma transmissão em andamento estiver relacionada ao host definido.

Filtrar pacotes com base na porta ativa

O tcpdump está equipado com um parâmetro que permite filtrar o tráfego de rede e capturar apenas os pacotes que são transmitidos de ou para uma porta específica.

Para capturar pacotes vindos de uma porta específica, anexe o porta sinalizador para o comando tcpdump e defina o número da porta próximo a ele. Por exemplo, para capturar qualquer tráfego HTTP de entrada ou saída, defina a porta 80:

sudo tcpdump -c 5 porta 80

O tcpdump escutará na porta 80, esperando por transmissões HTTP. Uma vez que detecta pacotes HTTP na rede, ele irá capturá-los.

Combine filtros para classificação avançada

As seções anteriores discutiram como você pode filtrar o tráfego com base na porta, protocolo ou host, mas e se você queria capturar o tráfego de uma única porta de um host específico usando uma rede específica protocolo? Bem, você está com sorte porque isso é possível, atribuindo a capacidade de usar operadores lógicos com o comando tcpdump.

Para capturar pacotes de um host individual usando a porta 443, use este comando:

sudotcpdump-c 5 hospedeiro 192.168.2.1eporta 443

Inspecione o conteúdo dos pacotes capturados

Por padrão, o tcpdump exibe os cabeçalhos de um pacote na saída. Embora seja mais do que suficiente na maioria dos casos, às vezes você pode querer ou precisar examinar mais profundamente os dados capturados. Você pode passar certos parâmetros com o comando tcpdump para inspecionar o conteúdo do pacote capturado.

Veja como visualizar o conteúdo dos pacotes:

sudo tcpdump -c 5 -x

Este comando retorna a versão hexadecimal do conteúdo em um pacote capturado. Se você deseja visualizar o formulário ASCII dos dados, você pode passar o -UMA parâmetro com:

sudo tcpdump -A

Salvar a saída do tcpdump em um arquivo

Como quase qualquer outra ferramenta de linha de comando do Linux, você pode armazenar a saída produzida pelo tcpdump em um arquivo para ser referenciado posteriormente.

Isso pode ser feito adicionando o -W sinalizador para o comando. Após a execução, o tcpdump armazenará os dados capturados em um .pcap arquivo que pode ser analisado posteriormente com tcpdump ou outras ferramentas de monitoramento de rede como o Wireshark.

Digite este comando para armazenar a saída do seu comando tcpdump em um arquivo:

sudotcpdump-Wcapturar.pcap

Para ler um .pcap arquivo, você pode usar tcpdump com o -r parâmetro:

sudotcpdump-rcapturar.pcap

O Linux vem com uma infinidade de ferramentas de rede que podem resolver todos os problemas de rede, desde que esteja no lado do software. Saber como usar algumas das melhores ferramentas de rede no Linux certamente será útil, seja você um administrador de sistemas gerenciando redes para viver ou apenas um usuário diário do Linux.

Como a lista real de comandos de rede disponíveis pode ser demais para entender, aqui está uma lista de algumas das ferramentas de rede Linux mais importantes que você deve conhecer.