“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:
| Ferramenta | Protocolo | Uso Principal | Comando de Instalação |
|---|
| — | — | — | — |
|---|
| `ping` | ICMP | Acessibilidade básica e latência | `apt install iputils-ping` |
|---|
| `traceroute` | ICMP / UDP | Análise de caminho hop a hop | `apt install traceroute` |
|---|
| `mtr` | ICMP | Estatísticas contínuas de caminho + latência | `apt install mtr` |
|---|
| `nmap` | TCP/UDP/ICMP | Varredura de portas, descoberta de hosts | `apt install nmap` |
|---|
| `curl` / `wget` | HTTP/HTTPS | Acessibilidade na camada de aplicação | `apt install curl` |
|---|
| `nc` (netcat) | TCP/UDP | Teste de conectividade de socket bruto | `apt install netcat-openbsd` |
|---|
| `hping3` | TCP/UDP/ICMP | Criação de pacotes personalizados | `apt install hping3` |
|---|
| `fping` | ICMP | Teste 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:
- Índice de pacotes desatualizado — Execute `sudo apt update` primeiro.
- sources.list corrompido — Verifique se `/etc/apt/sources.list` contém entradas válidas de repositório Ubuntu.
- Container mínimo sem repositório universe — Adicione o repositório universe: `sudo add-apt-repository universe`.
- 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
| Sinalizador | Descrição | Exemplo |
|---|
| — | — | — |
|---|
| `-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ário | Açã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 HTTP | ICMP bloqueado por firewall — use `curl` ou `nc` em vez disso |
|---|
| Resolução DNS falha ao fazer ping em hostname | Verifique `/etc/resolv.conf`; teste com `ping 8.8.8.8` |
|---|
| Necessita análise de caminho hop a hop | Instale e use `mtr` em vez de `ping` |
|---|
| Servidor offline / isolado | Baixe `.deb` em outra máquina, transfira via `scp`, instale com `dpkg -i` |
|---|
| ICMP bloqueado no provedor de nuvem | Verifique 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.
