15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
08.10.2024

“ping: command not found” — Como Instalar e Usar o Ping no Ubuntu

O erro `ping: command not found` aparece no Ubuntu quando o pacote iputils-ping está ausente do sistema. Isto é comum em instalações mínimas, imagens de VPS em nuvem e containers Docker onde utilitários não essenciais são removidos para reduzir o tamanho da imagem. A solução é um único comando `apt`: `sudo apt install iputils-ping`. Este artigo explica por que o pacote está ausente, como instalá-lo corretamente em diferentes ambientes Ubuntu e como usar `ping` de forma eficaz para diagnósticos de rede no mundo real.

O Que o Comando Ping Realmente Faz

`ping` é um utilitário de diagnóstico de rede que envia pacotes de ICMP Echo Request para um host de destino e aguarda respostas de ICMP Echo Reply. O tempo de ida e volta (RTT) de cada pacote é medido em milissegundos, fornecendo um sinal preciso sobre latência de rede, acessibilidade e estabilidade.

Internamente, `ping` depende do Internet Control Message Protocol (ICMP), definido na RFC 792. Ele opera na camada de rede (Camada 3 do modelo OSI), o que significa que ignora completamente TCP e UDP. Isso o torna útil para isolar se um problema de conectividade está no nível de roteamento IP versus a camada de aplicação ou transporte.

Casos de Uso Principais

  • Teste de acessibilidade — Confirma se um host remoto está ativo e respondendo.
  • Medição de latência — Reporta o RTT em milissegundos; RTT elevado indica congestionamento de rede ou um servidor geograficamente distante.
  • Detecção de perda de pacotes — Respostas ICMP descartadas apontam para falhas de hardware, roteadores sobrecarregados ou links instáveis.
  • Validação de caminho de rede — Útil para verificar se uma rota recém-configurada ou regra de firewall não bloqueia o tráfego.
  • Detecção de firewall e filtragem ICMP — Se `ping` expirar mas os serviços TCP responderem, o firewall provavelmente está bloqueando o tráfego ICMP especificamente.
  • Verificação de resolução DNS — Fazer ping em um hostname (em vez de um IP) confirma que a resolução DNS está funcionando corretamente.

Por Que o Ping Está Ausente no Ubuntu?

A instalação completa do desktop Ubuntu inclui `ping` por padrão. No entanto, vários cenários comuns resultam em um sistema onde o binário está ausente:

  • Instalações mínimas de servidor — O ISO mínimo do Ubuntu Server omite deliberadamente muitos utilitários para manter o tamanho reduzido.
  • Imagens de nuvem e VPS — Os provedores frequentemente distribuem imagens Ubuntu simplificadas para provisionamento mais rápido. Se você estiver executando uma instância de VPS Hosting, pode encontrar isso na primeira inicialização.
  • Containers Docker e LXC — As imagens base oficiais do Ubuntu (`ubuntu:22.04`, `ubuntu:24.04`) não incluem `iputils-ping` por padrão.
  • Implantações automatizadas e pipelines CI/CD — Ambientes com scripts construídos a partir de imagens base mínimas frequentemente carecem de ferramentas de rede padrão.
  • Ambientes chroot e WSL — O Windows Subsystem for Linux e jails chroot também podem omitir o pacote.

O próprio binário reside em `/bin/ping` (ou `/usr/bin/ping` em sistemas mais recentes). Se esse caminho não existir, o shell retorna `command not found`. Você pode confirmar se o binário está simplesmente ausente ou em um caminho não padrão com:

“`bash

which ping

or

type ping

“`

Se ambos não retornarem nada, o pacote não está instalado.

Como Instalar o Ping no Ubuntu (Passo a Passo)

Passo 1: Atualizar o Índice de Pacotes

Sempre atualize o índice de pacotes local antes de instalar qualquer coisa. Isso garante que `apt` resolva as versões de pacotes mais recentes disponíveis e evite erros de metadados desatualizados:

“`bash

sudo apt update

“`

Em um Servidor Dedicado ou um VPS recém-provisionado, este passo é especialmente importante porque o cache de pacotes pode estar desatualizado por dias ou semanas.

Passo 2: Instalar o iputils-ping

O binário `ping` no Ubuntu é fornecido pelo pacote iputils-ping, que faz parte do conjunto mais amplo `iputils` mantido pela comunidade do kernel Linux:

“`bash

sudo apt install iputils-ping

“`

Quando solicitado com `Do you want to continue? [Y/n]`, pressione `Y` e `Enter`. O pacote é pequeno (tipicamente abaixo de 100 KB) e instala em segundos.

Passo 3: Verificar a Instalação

Confirme que o binário está agora disponível e funcional:

“`bash

ping -c 4 google.com

“`

O sinalizador `-c 4` limita a saída a 4 pacotes. Uma resposta bem-sucedida tem esta aparência:

“`

PING google.com (142.250.185.46) 56(84) bytes of data.

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=1 ttl=118 time=12.4 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=2 ttl=118 time=11.9 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=3 ttl=118 time=12.1 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=4 ttl=118 time=12.3 ms

— google.com ping statistics —

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 11.9/12.175/12.4/0.185 ms

“`

Você quer ver 0% de perda de pacotes e valores de RTT consistentes. Alta variância no RTT (`mdev`) sinaliza jitter de rede, o que importa para aplicações sensíveis à latência.

Passo 4: Verificar o Caminho do Binário Instalado e Permissões

“`bash

which ping

ls -la $(which ping)

“`

No Ubuntu 20.04 e posterior, `ping` não requer mais o bit setuid. Em vez disso, usa capacidades Linux (`cap_net_raw`) para enviar pacotes ICMP brutos sem privilégios de root. Você pode inspecionar isso com:

“`bash

getcap $(which ping)

Expected output: /usr/bin/ping cap_net_raw=ep

“`

Esta é uma melhoria de segurança em relação às implementações mais antigas baseadas em setuid.

Instalando o Ping Dentro de um Container Docker

Se você estiver trabalhando dentro de um container Docker baseado em Ubuntu, o processo é idêntico, mas pode ser necessário executar comandos como root (o usuário padrão na maioria das imagens base):

“`bash

apt update && apt install -y iputils-ping

“`

O sinalizador `-y` confirma automaticamente o prompt, o que é essencial para builds de Dockerfile não interativos. Para incorporar `ping` em uma imagem personalizada, adicione-o ao seu `Dockerfile`:

“`dockerfile

FROM ubuntu:22.04

RUN apt update && apt install -y iputils-ping && rm -rf /var/lib/apt/lists/*

“`

A linha `rm -rf /var/lib/apt/lists/*` limpa o cache de pacotes para manter a camada da imagem pequena — uma prática recomendada para imagens de containers de produção.

Instalando o Ping no Ubuntu Sem Acesso à Internet (Método Offline)

Em servidores isolados ou segmentos de rede isolados, `apt` não consegue alcançar repositórios externos. Neste caso, você tem duas opções:

Opção 1: Transferir o pacote .deb manualmente

Em uma máquina com acesso à internet, baixe o pacote:

“`bash

apt download iputils-ping

“`

Transfira o arquivo `.deb` para a máquina de destino via `scp` ou uma unidade USB, depois instale-o:

“`bash

sudo dpkg -i iputils-ping_*.deb

“`

Opção 2: Usar um mirror local ou repositório APT interno

Configure `/etc/apt/sources.list` para apontar para um mirror interno que tenha o pacote em cache. Esta é a abordagem padrão para ambientes empresariais com controles rígidos de saída.

Ferramentas Alternativas Se o Ping Estiver Bloqueado ou Indisponível

O tráfego ICMP é frequentemente bloqueado por firewalls, grupos de segurança em nuvem ou provedores de hospedagem. Se `ping` expirar consistentemente apesar do host ser acessível, considere estas alternativas:

FerramentaProtocoloUso PrincipalComando de Instalação
`ping`ICMPAcessibilidade básica e latência`apt install iputils-ping`
`traceroute`ICMP / UDPAnálise de caminho hop a hop`apt install traceroute`
`mtr`ICMPEstatísticas contínuas de caminho + latência`apt install mtr`
`nmap`TCP/UDP/ICMPVarredura de portas, descoberta de hosts`apt install nmap`
`curl` / `wget`HTTP/HTTPSAcessibilidade na camada de aplicação`apt install curl`
`nc` (netcat)TCP/UDPTeste de conectividade de socket bruto`apt install netcat-openbsd`
`hping3`TCP/UDP/ICMPCriação de pacotes personalizados`apt install hping3`
`fping`ICMPTeste de acessibilidade de hosts em massa`apt install fping`

Insight principal: `mtr` (Matt’s Traceroute) é indiscutivelmente mais útil do que `ping` para diagnosticar perda de pacotes intermitente porque sonda continuamente cada hop no caminho e exibe percentagens de perda por hop em tempo real. Em servidores de produção — incluindo aqueles que executam VPS com cPanel — `mtr` deve ser sua primeira ferramenta quando um cliente relata problemas de conectividade esporádicos.

Erros Comuns e Como Corrigi-los

"permission denied" ou "operation not permitted"

Isso ocorre quando a capacidade `cap_net_raw` está ausente do binário, ou ao executar dentro de um container com capacidades Linux restritas:

“`bash

Check capabilities

getcap /usr/bin/ping

Restore if missing

sudo setcap cap_net_raw+ep /usr/bin/ping

“`

Dentro do Docker, pode ser necessário executar o container com `–cap-add NET_RAW` ou `–privileged` (use `–privileged` apenas em ambientes confiáveis e isolados):

“`bash

docker run –cap-add NET_RAW ubuntu:22.04 ping -c 2 8.8.8.8

“`

"unable to locate package iputils-ping"

Isso significa que `apt` não consegue encontrar o pacote em sua lista de repositórios atual. Causas e soluções:

  1. Índice de pacotes desatualizado — Execute `sudo apt update` primeiro.
  2. sources.list corrompido — Verifique se `/etc/apt/sources.list` contém entradas válidas de repositório Ubuntu.
  3. Container mínimo sem repositório universe — Adicione o repositório universe: `sudo add-apt-repository universe`.
  4. Sem conectividade de rede — Teste com `curl https://archive.ubuntu.com` para confirmar se a máquina consegue alcançar os servidores de pacotes do Ubuntu.

"ping: connect: Network is unreachable"

O binário está instalado, mas o sistema não tem uma rota de rede configurada. Este é um problema de configuração de rede, não um problema de `ping`. Diagnostique com:

“`bash

ip route show

ip addr show

“`

Se a rota padrão estiver ausente, adicione-a:

“`bash

sudo ip route add default via <gateway_ip>

“`

"Name or service not known" (falha de DNS)

`ping google.com` resolve o hostname antes de enviar pacotes ICMP. Se o DNS estiver quebrado, você verá este erro. Teste fazendo ping em um IP diretamente:

“`bash

ping -c 2 8.8.8.8

“`

Se isso for bem-sucedido, o problema é específico do DNS. Verifique `/etc/resolv.conf` e certifique-se de que um nameserver válido esteja configurado.

Sinalizadores Essenciais do Ping Que Todo Sysadmin Deve Conhecer

SinalizadorDescriçãoExemplo
`-c <n>`Enviar exatamente n pacotes e parar`ping -c 5 8.8.8.8`
`-i <sec>`Intervalo entre pacotes (padrão: 1s)`ping -i 0.2 8.8.8.8`
`-s <bytes>`Definir tamanho do payload do pacote (padrão: 56 bytes)`ping -s 1400 8.8.8.8`
`-t <ttl>`Definir valor de Time-To-Live do IP`ping -t 64 8.8.8.8`
`-W <sec>`Tempo limite de espera por cada resposta`ping -W 2 8.8.8.8`
`-q`Modo silencioso — mostrar apenas resumo`ping -q -c 10 8.8.8.8`
`-f`Flood ping (requer root)`sudo ping -f 8.8.8.8`
`-4` / `-6`Forçar IPv4 ou IPv6`ping -6 ipv6.google.com`
`-D`Imprimir timestamp antes de cada linha`ping -D -c 5 8.8.8.8`
`-O`Reportar respostas pendentes (mostra perda de pacotes inline)`ping -O 8.8.8.8`

Dica prática: Use `ping -s 1472 -M do <gateway>` para testar a descoberta de MTU de caminho. O sinalizador `-M do` define o bit “Don’t Fragment”; se o pacote exceder o MTU do caminho, você receberá uma mensagem ICMP “Frag needed”, que é a forma definitiva de diagnosticar buracos negros TCP relacionados ao MTU — um problema comum em túneis VPN e certas configurações de rede em nuvem.

Considerações de Segurança: Quando Desativar o ICMP

Embora `ping` seja inestimável para diagnósticos, ICMP irrestrito em servidores voltados ao público apresenta riscos:

  • Ataques de flood ICMP (ping flood) — Tráfego ICMP de alto volume pode saturar a largura de banda ou CPU em hardware mais antigo.
  • Reconhecimento de rede — Responder ao ICMP revela que um host está ativo, o que auxilia atacantes no mapeamento de sua infraestrutura.
  • Ataques Smurf — Ataques de broadcast ICMP amplificados (amplamente mitigados em redes modernas, mas ainda relevantes em infraestrutura legada).

Para servidores de produção — particularmente aqueles que hospedam aplicações web ou serviços de Email Hosting — uma política razoável é permitir ICMP apenas de IPs de gerenciamento confiáveis e limitar a taxa ou bloquear ICMP da internet pública usando `iptables` ou `nftables`:

“`bash

Allow ICMP from a trusted management IP

sudo iptables -A INPUT -p icmp –icmp-type echo-request -s 203.0.113.10 -j ACCEPT

Rate-limit ICMP from all other sources (max 10 pings/second)

sudo iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 10/second -j ACCEPT

Drop remaining ICMP echo requests

sudo iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

“`

Esta abordagem preserva a utilidade de diagnóstico para sua equipe enquanto reduz a superfície de ataque.

Ping no Contexto de Ambientes de Servidor e Hospedagem

Entender o comportamento de `ping` varia significativamente dependendo do seu ambiente de hospedagem:

Hospedagem Compartilhada: Em planos de Hospedagem Web Compartilhada, você normalmente não tem acesso ao shell. Os diagnósticos baseados em ping devem ser realizados a partir de uma máquina local ou de um serviço de monitoramento externo direcionado ao IP do seu servidor.

VPS e Servidores Dedicados: O acesso root completo significa que você pode instalar `iputils-ping` e executar todos os comandos de diagnóstico livremente. É aqui que `ping`, `mtr` e `traceroute` são mais valiosos para solucionar problemas de conectividade entre seu servidor e provedores upstream.

Servidores GPU: Ambientes de computação de alto desempenho, como nós de GPU Hosting, frequentemente executam imagens de SO mínimas para maximizar a alocação de recursos para cargas de trabalho de computação. O ping e outras ferramentas de diagnóstico estão rotineiramente ausentes e devem ser instalados explicitamente.

Containers e Orquestração: Em pods Kubernetes ou serviços Docker Swarm, as ferramentas de depuração de rede estão tipicamente ausentes das imagens de produção. O padrão recomendado é usar um container sidecar de depuração dedicado ou pod de depuração efêmero (`kubectl debug`) em vez de sobrecarregar imagens de produção com utilitários de diagnóstico.

Matriz de Decisão de Referência Rápida

Use esta matriz para determinar a ação correta com base no seu cenário específico:

CenárioAção Recomendada
Nova instalação de servidor Ubuntu, ping ausente`sudo apt update && sudo apt install iputils-ping`
Container Docker, sem prompt root`apt update && apt install -y iputils-ping`
Ping instalado mas “permission denied”`sudo setcap cap_net_raw+ep /usr/bin/ping`
Ping expira, host é acessível via HTTPICMP bloqueado por firewall — use `curl` ou `nc` em vez disso
Resolução DNS falha ao fazer ping em hostnameVerifique `/etc/resolv.conf`; teste com `ping 8.8.8.8`
Necessita análise de caminho hop a hopInstale e use `mtr` em vez de `ping`
Servidor offline / isoladoBaixe `.deb` em outra máquina, transfira via `scp`, instale com `dpkg -i`
ICMP bloqueado no provedor de nuvemVerifique as regras de grupo de segurança / firewall; permita ICMP tipo 8 de entrada

Lista de Verificação Técnica: Fazendo o Ping Funcionar Corretamente

  • [ ] Execute `sudo apt update` antes de tentar a instalação
  • [ ] Instale com `sudo apt install iputils-ping`
  • [ ] Confirme o caminho do binário: `which ping` deve retornar `/usr/bin/ping`
  • [ ] Verifique as capacidades: `getcap /usr/bin/ping` deve mostrar `cap_net_raw=ep`
  • [ ] Teste com IP primeiro (`ping -c 2 8.8.8.8`) antes de testar com hostname
  • [ ] Se o hostname falhar mas o IP for bem-sucedido, diagnostique o DNS via `/etc/resolv.conf`
  • [ ] Para containers, adicione `–cap-add NET_RAW` se erros de permissão persistirem
  • [ ] Em servidores de produção, aplique limitação de taxa `iptables` para ICMP público
  • [ ] Considere `mtr` para problemas de conectividade persistentes ou intermitentes
  • [ ] Para ambientes offline, use `apt download` em uma máquina conectada e transfira o `.deb`

FAQ

P: Por que o Ubuntu não inclui o ping por padrão?

As imagens mínimas e de servidor do Ubuntu omitem `iputils-ping` para reduzir o tamanho da instalação. O pacote não faz parte das dependências necessárias do sistema base, portanto é excluído a menos que seja explicitamente solicitado. Instale-o com `sudo apt install iputils-ping`.

P: Existe diferença entre `ping` e `ping6` no Ubuntu?

Em sistemas Ubuntu modernos (18.04 e posteriores), o binário `ping` lida com IPv4 e IPv6. Use `ping -4` para forçar IPv4 ou `ping -6` para forçar IPv6. O binário standalone `ping6` está obsoleto e não é mais distribuído separadamente nas versões atuais do `iputils-ping`.

P: Por que o ping funciona como root mas falha para usuários regulares?

Isso indica que a capacidade `cap_net_raw` está ausente do binário. Execute `sudo setcap cap_net_raw+ep /usr/bin/ping` para restaurá-la. Alternativamente, reinstalar o pacote (`sudo apt install –reinstall iputils-ping`) redefinirá as capacidades do binário para seus padrões corretos.

P: Posso usar o ping para testar se uma porta específica está aberta?

Não. `ping` usa ICMP e não tem conceito de portas TCP/UDP. Para testar se uma porta específica está aberta, use `nc -zv <host> <port>` (netcat) ou `nmap -p <port> <host>`. Um host pode ser acessível via `ping` enquanto tem uma porta específica bloqueada, ou vice-versa.

P: O que significa um alto `mdev` (desvio padrão) na saída do ping?

`mdev` mede a variância no RTT entre pacotes. Um valor alto de `mdev` (por exemplo, 20–50 ms em uma conexão com RTT médio de 30 ms) indica jitter de rede — tempos de entrega de pacotes inconsistentes. Isso é particularmente prejudicial para aplicações em tempo real como VoIP, videoconferência e jogos online. Jitter persistente normalmente aponta para congestionamento em um roteador intermediário, uma interface de rede com falha ou uma política de QoS mal configurada.

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar