“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.
em todos os serviços de alojamento