O arping
comando do Linux é semelhante ping
, mas apenas para redes locais. Sua vantagem é que opera em um nível de rede mais baixo, às vezes obtendo respostas quando ping
não é possível. Veja como usá-lo.
Índice
O protocolo ARP
Um endereço IP é um rótulo numérico para um dispositivo em rede. É usado como endereço para que o tráfego de rede apropriado chegue ao dispositivo correto. Mas a maioria dos dispositivos em redes locais possui endereços IP dinâmicos. Ou seja, o endereço IP deles pode mudar na próxima vez que forem inicializados.
Para poder rotear corretamente o tráfego de rede para o dispositivo apropriado, deve ser empregado um esquema que mapeie endereços IP para endereços de Controle de Acesso à Mídia (MAC) . O endereço MAC é uma identidade única estabelecida no momento da fabricação de um dispositivo. Um endereço IP é um endereço lógico. O endereço MAC é um endereço físico.
O Address Resolution Protocol é o intermediário que mapeia endereços IP para endereços MAC. O dispositivo responsável por empacotar e direcionar pacotes de rede em sua rede – geralmente, o roteador – constrói e mantém uma tabela ARP que vincula endereços IP a endereços MAC.
Se o roteador precisar rotear dados para um dispositivo que não conhece, ele fará uma solicitação ARP para obter o endereço MAC do novo dispositivo.
Quando um novo dispositivo é conectado à sua rede, é atribuído um endereço IP, mas isso não é suficiente para realmente direcionar o tráfego para ele. O roteador precisa obter o endereço MAC que é a peça que falta no quebra-cabeça. Mas como o endereço IP por si só não é informação suficiente para rotear pacotes para o dispositivo, o problema é que ele não pode usar o endereço IP para consultar o hardware para obter o endereço MAC.
O modelo de Interconexão de Sistemas Abertos agrupa as tecnologias que compõem uma rede funcional como uma série de camadas. As camadas superiores não podem operar sem as camadas inferiores. Existem sete camadas no modelo OSI.
- A camada 7 é a camada superior, a camada de aplicação . Ele fornece informações ao usuário do computador e recebe informações dele.
- A camada 6 é a camada de apresentação . Isso garante que os dados estejam no formato ou estado correto à medida que entram e saem do formato de rede. A criptografia e a descriptografia ocorrem nesta camada.
- A camada 5 é a camada de sessão . Uma sessão é uma conexão de rede entre dois ou mais dispositivos. Esta camada envolve-se com questões como o início de uma conexão, aperto de mão, tempos limite e quebra de conexões que não são mais necessárias.
- A camada 4 é a camada de transporte . Esta é a camada que movimenta os dados pela rede de forma coordenada. Esta camada se preocupa com coisas como taxas de transferência e volumes de dados. O Protocolo de Controle de Transmissão – o TCP em TCP/IP – opera nesta camada.
- A camada 3 é a camada de rede . É aqui que ocorre o roteamento e o encaminhamento de pacotes. É a camada em que o protocolo da Internet – o IP no TCP/IP – opera.
- A camada 2 é a camada de enlace de dados . Ele é usado para enviar pacotes entre dispositivos endereçáveis diretamente usando transmissões para cada dispositivo ou unicasts para endereços MAC específicos.
- A camada 1 é a camada física . Trata-se da infraestrutura física, incluindo cabeamento, roteadores e switches de rede. As ondas de rádio usadas no Wi-Fi também se enquadrariam nesta categoria.
Quando o roteador recebe um pacote para um endereço IP que não está em sua tabela, ele envia um pacote de broadcast para toda a rede. Ele efetivamente pergunta “Quem tem este endereço IP?” Esta é uma mensagem de camada dois, portanto não depende de roteamento IP.
O dispositivo com o endereço correspondente responde enviando de volta seu endereço MAC. O endereço IP e o endereço MAC desse dispositivo podem ser adicionados à tabela de mapeamento. O tráfego IP regular agora pode ser roteado para o dispositivo porque a relação entre seu endereço IP e seu endereço MAC foi estabelecida e registrada.
O comando arping
Todo o material inteligente do ARP ocorre automaticamente em segundo plano, construindo e mantendo a tabela ARP. O arping
comando traz algumas das funcionalidades da consulta ARP para a janela do terminal. Ele opera na camada dois do OSI e pode solicitar uma resposta de um dispositivo quando ping
isso não acontece.
No Fedora 36, arping
já estava instalado, mas precisávamos instalá-lo no Manjaro 21 e no Ubuntu 22.04.
No Ubuntu o comando é:
sudo apt instalar arping
No Manjaro você precisa digitar:
sudo pacman -Sy arping
A maneira mais simples de usar arping
é com um endereço IP. Este deve ser o endereço de um dispositivo endereçável diretamente, conectado à rede local. Como arping
opera na camada dois, nenhum roteamento é possível. Você precisará usar sudo
with arping
.
sudo arping 192.168.1.17
Pressione Ctrl+C para parar. As informações retornadas são o endereço MAC do dispositivo que responde, o número de índice da arping
solicitação e o tempo de ida e volta para a arping
conclusão da solicitação.
Compare a saída com a do ping
comando abaixo. O ping
comando retorna mais informações sobre o tempo de ida e volta do pacote de rede. O arping
comando fornece menos estatísticas de tempo, mas inclui o endereço MAC do dispositivo.
ping 192.168.1.17
Você também pode usar o nome da rede do dispositivo com arping
.
sudo arping fedora-36.local
Você pode usar a -c
opção (contagem) para arping
parar após um determinado número de solicitações. Este comando diz arping
para tentar duas vezes e depois parar.
sudo arping -c 2 192.168.1.18
Se você tiver várias interfaces de rede em seu computador, poderá usar a -I
opção (interface) para informar arping
qual interface usar.
Você pode usar o ip link
comando para listar suas interfaces de rede.
ligação IP
Este computador possui três interfaces. A lo
interface virtual é usada como loopback para conexões internas entre softwares no mesmo computador. Não nos serve aqui. Podemos usar a conexão Ethernet enp3s0
ou a interface sem fio wlan0
.
Este comando diz arping
para usar a interface que escolhermos e não para fazer sua própria seleção.
sudo arping -c 2 -I enp3s0 manjaro-21.local
Usando arping em scripts
Ao envolver arping
um loop em um script, podemos fazê-lo funcionar em vários endereços IP. Copie o texto deste script e salve-o em um arquivo chamado “scan-range.sh”.
Você precisará editar o script e substituir todas as ocorrências de 192.168.1 pelo endereço IP da sua rede .
#!/bin/bash
for ((device=$1$2do
arping -c 1 192.168.1.$device | grep -E "1 response|1 packets received" > /dev/null
if [ $? == 0 ]then
echo "192.168.1.$device responded."
else
echo "192.168.1.$device didn't respond."
fi
done
O script aceita dois parâmetros de linha de comando. Eles são usados como o último octeto dos endereços IP do intervalo que você deseja usar arping
. Então, se você passar 20 e 30 para o script, o loop começaria em 192.168.1. 20 e terminaria após usar o endereço IP 192.168.1. 30 .
Os parâmetros são acessados dentro do script como $1
e $2
. for
Eles são usados em um loop estilo C. A cada giro do for
loop, $device
é definido o próximo endereço IP do intervalo.
O script usa o mesmo arping -c
formato que já vimos, mas desta vez estamos solicitando apenas que uma única solicitação ARP seja enviada para cada dispositivo no intervalo.
A saída do arping
comando é canalizadagrep
.
A grep
sintaxe pode ser simplificada em seu script. grep
está procurando uma de duas strings, “1 resposta” ou “1 pacote recebido”. Isso ocorre porque os computadores de teste tinham versões diferentes arping
e usam terminologia diferente. Se grep
encontrar alguma dessas frases, seu valor de saída será zero.
Quando você sabe qual das frases sua versão arping
usa, você pode simplificar a grep
sintaxe removendo a outra frase.
A if
instrução testa $?
— uma variável que contém o código de saída do último processo que terminou — para ver se é zero. Se for, ele usa echo
para imprimir uma mensagem de sucesso na janela do terminal. Se o teste falhar, grep
nenhuma das strings foi encontrada, o que significa que a solicitação ARP falhou.
Torne seu script executável usando o chmod
comando e a +x
opção.
chmod +x intervalo de varredura.sh
Vamos executá-lo e verificar o intervalo de IP de 15 a 20. Alguns desses endereços não possuem dispositivos conectados, portanto deveremos ver algumas falhas. Lembre-se de usar sudo
. Também tentaremos ping
o dispositivo em 192.168.1.15.
sudo ./scan-range.sh 15 20
ping 192.168.1.15
Obtemos uma mistura de sucessos e fracassos, como aconteceria em qualquer rede. Mas observe que embora o dispositivo em 192.168.1.15 responda à solicitação ARP da camada dois, ele não responde à ping
solicitação da camada três.
Se você tivesse feito ping no dispositivo e notado a falha, provavelmente estaria inclinado a verificar se ele estava conectado, on-line e se era possível ping
sair do dispositivo 192.168.1.15.
Mas com arping
você pode verificar se ele está conectado, online e acessível pela rede. Isso orientaria sua solução de problemas para começar a analisar problemas de roteamento e tabela ARP.
Uma visão mais profunda
Existem muitas camadas na cebola da rede. Se ping
não levar você a lugar nenhum, abra uma camada e veja o que arping
pode lhe dizer.