Manuais para a linha de comandos

Man » Manual online do ping - documentação online detalhada para a página de manual do ping

🌍
ping - envia ICMP ECHO_REQUEST para hosts de rede

SINOPSIA

ping [-aAbBdCDfhHLnOqrRUvV346] [-c count] [-e identifier] [-F flowlabel] [-i interval]
[-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N nodeinfo_option]
[-w deadline] [-W timeout] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl]
[-T timestamp option] [hop...] {destination}

DESCRIÇÃO

ping usa o datagrama ICMP ECHO_REQUEST obrigatório para solicitar um ICMP ECHO_RESPONSE de um host ou gateway. Os datagramas ECHO_REQUEST (“pings”) têm um cabeçalho IP e ICMP, seguidos por uma estrutura timeval e, em seguida, um número arbitrário de bytes de “preenchimento” usados para preencher o pacote.

ping funciona com IPv4 e IPv6. O uso de apenas um deles pode ser imposto especificando -4 ou -6.

ping também pode enviar consultas de informações de nó IPv6 (RFC4620). Os saltos intermediários podem não ser permitidos, porque o roteamento de origem IPv6 foi descontinuado (RFC5095).

OPÇÕES

-3
Precisão do RTT (não arredonde o resultado do tempo).

-4

Usar apenas IPv4.

-6

Usar apenas IPv6.

-a

Ping audível.

-A

Ping adaptável. O intervalo entre pacotes se adapta ao tempo de ida e volta, de modo que, efetivamente, não haja mais do que um (ou mais, se o preload estiver definido) pacote não respondido na rede. O intervalo padrão é de 2 ms, para mais informações, consulte a opção -i. Em redes com baixo RTT, este modo é essencialmente equivalente ao modo de inundação.

-b

Permitir pingar um endereço de transmissão.

-B

Não permitir que o ping altere o endereço de origem dos probes. O endereço é vinculado a um selecionado quando o ping é iniciado.

-c count

Parar após enviar count pacotes ECHO_REQUEST. Com a opção de prazo, o ping aguarda count pacotes ECHO_REPLY até que o tempo limite expire.

-C

Chamar a chamada de sistema connect() na criação do socket.

-d

Definir a opção SO_DEBUG no socket que está sendo usado. Essencialmente, esta opção de socket não é usada pelo kernel Linux.

-D

Imprimir o timestamp (tempo Unix + microssegundos, como em gettimeofday) antes de cada linha.

-e identifier

Definir o campo de identificação do ECHO_REQUEST. O valor 0 implica o uso de um socket bruto (não suportado no socket de datagrama ICMP). O valor do campo pode ser impresso com a opção -v.

-f

Ping de inundação. Para cada ECHO_REQUEST enviado, um ponto “.” é impresso, enquanto para cada ECHO_REPLY recebido, um backspace é impresso. Isso fornece uma exibição rápida de quantos pacotes estão sendo descartados. Se o intervalo não for fornecido, ele define o intervalo como zero e envia pacotes o mais rápido possível ou cem vezes por segundo, o que for maior. Apenas o superusuário pode usar esta opção com intervalo zero.


-F flow label
Apenas IPv6. Aloca e define o rótulo de fluxo de 20 bits (em hexadecimal) nos pacotes de solicitação de eco. Se o valor for zero, o kernel aloca um rótulo de fluxo aleatório.

-h
Exibe a ajuda.

-H
Força a resolução de nome DNS para a saída. Útil para destinos numéricos ou a opção -f, que, por padrão, não a executam. Também pode ajudar a resolver problemas de resolução de DNS. Substitui a opção -n definida anteriormente. Consulte também a variável de ambiente IPUTILS_PING_PTR_LOOKUP.

-i interval
Define o intervalo de espera em segundos entre o envio de cada pacote. Permite números reais com ponto como separador decimal (independentemente da configuração de localidade). O padrão é esperar um segundo entre cada pacote normalmente ou não esperar no modo de inundação. Apenas o superusuário pode definir o intervalo para valores menores que 2 ms. O ping de transmissão e multicast tem uma limitação ainda maior para usuários comuns: o mínimo é de 1 segundo.

-I interface
A interface é um endereço, um nome de interface ou um nome VRF. Se a interface for um endereço, define o endereço de origem para o endereço da interface especificada. Se a interface for um nome de interface, define a interface de origem para a interface especificada. Se a interface for um nome VRF, cada pacote é roteado usando a tabela de roteamento correspondente; neste caso, a opção -I pode ser repetida para especificar um endereço de origem. NOTA: Para IPv6, ao fazer ping para um endereço de escopo de link local, a especificação de link (pela notação '%' no destino ou por esta opção) pode ser usada, mas não é mais obrigatória.

-l preload
Se preload for especificado, o ping envia esse número de pacotes sem aguardar a resposta. Apenas o superusuário pode selecionar preload maior que 3.

-L
Suprime o loopback de pacotes multicast. Esta flag se aplica apenas se o destino do ping for um endereço multicast.

-m mark
Use mark para marcar os pacotes que estão sendo enviados. Isso é útil para vários motivos dentro do kernel, como usar o roteamento de política para selecionar um processamento de saída específico. É necessária a capacidade CAP_NET_ADMIN ou CAP_NET_RAW (a partir do Linux 5.17), consulte socket(7).

-M pmtudisc_opt
Seleciona a estratégia de descoberta MTU de caminho. pmtudisc_option pode ser do (define a flag DF, mas está sujeito a verificações de PMTU pelo kernel; os pacotes muito grandes serão rejeitados), want (realiza a descoberta de PMTU, fragmenta localmente quando o tamanho do pacote for grande), probe (define a flag DF e ignora as verificações de PMTU, útil para sondagem) ou dont (não define a flag DF).

-N nodeinfo_option
Apenas IPv6. Envia Consultas de Informações de Nó IPv6 (RFC4620) em vez de Solicitações de Eco. É necessária a capacidade CAP_NET_RAW.

help
Exibe a ajuda para o suporte NI.

name
Consulta nomes de nó.

ipv6
Consulta endereços IPv6. Existem várias flags específicas do IPv6.

ipv6-global
Solicita endereços IPv6 de escopo global.

ipv6-sitelocal
Solicita endereços IPv6 de escopo de site local.

ipv6-linklocal
Solicita endereços IPv6 de escopo de link local.

ipv6-all
Solicita endereços IPv6 em outras interfaces.

ipv4
Consulta endereços IPv4. Existe uma flag específica do IPv4.

ipv4-all
Solicita endereços IPv4 em outras interfaces.

subject-ipv6=ipv6addr
Endereço IPv6 de assunto.

subject-ipv4=ipv4addr
Endereço IPv4 de assunto.

subject-name=nodename

Nome do sujeito. Se contiver mais de um ponto, assume-se que é um nome de domínio totalmente qualificado.

subject-fqdn=nodename

Nome do sujeito. Assume-se sempre que é um nome de domínio totalmente qualificado.

-n

Saída numérica apenas. Não será feita qualquer tentativa de pesquisar nomes simbólicos para endereços de host (sem resolução DNS reversa). Este é o padrão para destino numérico ou opção -f. Substitui a opção -H definida anteriormente. Consulte também a variável de ambiente IPUTILS_PING_PTR_LOOKUP.

-O

Relata o ICMP ECHO pendente antes de enviar o próximo pacote. Isso é útil em conjunto com a opção de marca de tempo -D para registrar a saída em um arquivo de diagnóstico e procurar respostas ausentes.

-p pattern

Você pode especificar até 16 bytes de "preenchimento" para preencher o pacote que envia. Isso é útil para diagnosticar problemas de rede dependentes de dados. Por exemplo, -p ff fará com que o pacote enviado seja preenchido com todos os bits 1.

-q

Saída silenciosa. Nada é exibido, exceto as linhas de resumo no momento da inicialização e quando terminar.

-Q tos

Define os bits relacionados à Qualidade de Serviço (QoS) nos datagramas ICMP. tos pode ser um número decimal (apenas ping) ou hexadecimal.

Em RFC2474, esses campos são interpretados como DS de 8 bits (Differentiated Services), consistindo em: bits 0-1 (2 bits mais baixos) de dados separados e bits 2-7 (6 bits mais altos) de DSCP (Differentiated Services Codepoint). Em RFC2481 e RFC3168, os bits 0-1 são usados para ECN.

Historicamente (RFC1349, substituído por RFC2474), eles eram interpretados como: bit 0 (bit mais baixo) para reservado (atualmente sendo redefinido como controle de congestionamento), 1-4 para Tipo de Serviço e bits 5-7 (bits mais altos) para Precedência.

-r

Ignora as tabelas de roteamento normais e envia diretamente para um host em uma interface conectada. Se o host não estiver em uma rede conectada diretamente, um erro será retornado. Esta opção pode ser usada para pingar um host local por meio de uma interface que não possui rota, desde que a opção -I também seja usada.

-R

Apenas ping. Registra a rota. Inclui a opção RECORD_ROUTE no pacote ECHO_REQUEST e exibe o buffer de rota nos pacotes retornados. Observe que o cabeçalho IP é grande o suficiente apenas para nove rotas. Muitos hosts ignoram ou descartam esta opção.

-s packetsize

Especifica o número de bytes de dados a serem enviados. O valor padrão é 56, que se traduz em 64 bytes de dados ICMP quando combinado com os 8 bytes do cabeçalho de dados ICMP. O valor máximo permitido é 65507 para IPv4 (65467 quando -R ou -T ou saltos intermediários) ou 65527 para IPv6, mas a maioria dos sistemas limita isso a um número menor, dependente do sistema.

-S sndbuf

Define o buffer de envio do socket. Se não for especificado, ele é selecionado para armazenar em buffer não mais do que um pacote.

-t ttl

Apenas ping. Define o tempo de vida IP (TTL).

-T timestamp option

Define opções de marca de tempo IP especiais. A opção de marca de tempo pode ser tsonly (apenas marcas de tempo), tsandaddr (marcas de tempo e endereços) ou tsprespec host1 [host2 [host3 [host4]]] (marca de tempo em saltos predefinidos).

-U

Imprime a latência completa de usuário para usuário (o comportamento antigo). Normalmente, o ping imprime o tempo de ida e volta da rede, que pode ser diferente, por exemplo, devido a falhas do DNS.


-v

Saída detalhada. Não suprimir as respostas DUP ao pingar o endereço multicast.

-V

Mostrar a versão e sair.

-w prazo

Especificar um tempo limite, em segundos, antes que o ping termine, independentemente de quantos pacotes tenham sido enviados ou recebidos. Neste caso, o ping não para após o envio de um determinado número de pacotes, mas aguarda o término do prazo, o recebimento de um determinado número de respostas ou a ocorrência de alguma notificação de erro da rede.

-W tempo_limite

Tempo para aguardar uma resposta, em segundos. Esta opção afeta apenas o tempo limite na ausência de respostas, caso contrário, o ping aguarda por dois RTTs. É permitido o uso de números decimais com ponto como separador decimal (independentemente das configurações de localidade). 0 significa tempo limite infinito.

Quando o ping é usado para isolamento de falhas, ele deve primeiro ser executado no host local, para verificar se a interface de rede local está ativa e funcionando. Em seguida, os hosts e gateways mais distantes devem ser “pingados”. Os tempos de ida e volta e as estatísticas de perda de pacotes são calculados. Se pacotes duplicados forem recebidos, eles não são incluídos no cálculo da perda de pacotes, embora o tempo de ida e volta desses pacotes seja usado no cálculo dos números mínimos/médios/máximos/desvio padrão dos tempos de ida e volta.

O desvio padrão populacional (mdev) é essencialmente uma média de quão distante cada RTT de ping está da média de RTT. Quanto maior o mdev, mais variável é o RTT (ao longo do tempo). Com uma alta variabilidade de RTT, você terá problemas de velocidade em transferências em massa (elas demorarão mais do que o necessário, pois a variabilidade eventualmente fará com que o remetente espere pelas confirmações) e você terá qualidade de VoIP medíocre ou ruim.

Quando o número especificado de pacotes foi enviado (e recebido) ou se o programa for terminado com um sinal SIGINT, um breve resumo é exibido. Estatísticas atuais mais curtas podem ser obtidas sem a terminação do processo com o sinal SIGQUIT.

Este programa é destinado ao uso em testes, medições e gerenciamento de rede. Devido à carga que pode impor à rede, não é aconselhável usar o ping durante operações normais ou em scripts automatizados.

AMBIENTE

A variável de ambiente IPUTILS_PING_PTR_LOOKUP definida como 0 desabilita a resolução reversa de DNS (consulta PTR)
por padrão. Ela será substituída pelas opções -H ou -n.

CÓDIGO DE SAÍDA

Se o ping não receber nenhum pacote de resposta, ele sairá com o código 1. Se um número de pacotes e um prazo forem especificados, e menos do que o número de pacotes especificado forem recebidos quando o prazo for atingido, ele também sairá com o código 1. Em caso de outros erros, ele sairá com o código 2. Caso contrário, ele sairá com o código 0. Isso torna possível usar o código de saída para verificar se um host está ativo ou não.

Para IPv6, quando o endereço de destino tem escopo de link local e o ping está usando sockets ICMP, a interface de saída deve ser especificada. Quando o ping está usando sockets brutos, não é estritamente necessário especificar a interface de saída, mas isso deve ser feito para evitar ambiguidade quando existem várias interfaces de saída possíveis.


Existem duas maneiras de especificar a interface de saída:

usando a notação %

O endereço de destino é pós-fixado com % e o nome da interface de saída ou ifindex, por exemplo:

ping fe80::5054:ff:fe70:67bc%eth0

ping fe80::5054:ff:fe70:67bc%2

usando a opção -I

Ao usar sockets de datagramas ICMP, este método é suportado a partir das seguintes versões do kernel: 5.17, 5.15.19, 5.10.96, 5.4.176, 4.19.228, 4.14.265. Também não é suportado no musl libc.

DETALHES DO PACOTE ICMP

Um cabeçalho IP sem opções tem 20 bytes. Um pacote ICMP ECHO_REQUEST contém mais 8 bytes de cabeçalho ICMP seguido por uma quantidade arbitrária de dados. Quando um tamanho de pacote é fornecido, isso indica o tamanho desta parte extra de dados (o padrão é 56). Assim, a quantidade de dados recebida dentro de um pacote IP do tipo ICMP ECHO_REPLY será sempre 8 bytes maior do que o espaço de dados solicitado (o cabeçalho ICMP).

Se o espaço de dados tiver pelo menos o tamanho de um struct timeval, o ping usará os bytes iniciais deste espaço para incluir um timestamp, que ele usará no cálculo dos tempos de ida e volta. Se o espaço de dados for menor, nenhum tempo de ida e volta será fornecido.

PACOTES DUPLICADOS E DANIFICADOS

O ping relatará pacotes duplicados e danificados. Pacotes duplicados nunca deveriam ocorrer e parecem ser causados por retransmissões inadequadas no nível de enlace. Duplicatas podem ocorrer em muitas situações
e raramente (se alguma vez) são um bom sinal, embora a presença de baixos níveis de duplicatas nem sempre seja motivo de alarme.

Pacotes danificados são obviamente um motivo sério de alarme e geralmente indicam hardware defeituoso em algum lugar no caminho do pacote ping (na rede ou nos hosts).

COLISÕES DE ID

Ao contrário do TCP e UDP, que usam a porta para identificar exclusivamente o destinatário para entregar dados, o ICMP usa o campo identificador (ID) para identificação. Portanto, se na mesma máquina, ao mesmo tempo, dois processos ping usarem o mesmo ID, a resposta de eco pode ser entregue a um destinatário errado. Este é um problema conhecido devido ao tamanho limitado do campo ID de 16 bits. Essa é uma limitação histórica do protocolo que não pode ser corrigida no momento, a menos que codifiquemos um ID na carga útil do pacote ping. O ping imprime a mensagem DIFFERENT ADDRESS e a perda de pacotes é negativa.

O ping usa o PID para obter um número exclusivo. O valor padrão de /proc/sys/kernel/pid_max é 32768. Em sistemas que usam ping intensivamente e com pid_max maior que 65535, as colisões estão fadadas a acontecer.

TESTANDO DIFERENTES PADRÕES DE DADOS

A camada de rede (inter)não deve tratar os pacotes de maneira diferente, dependendo dos dados contidos na parte de dados. Infelizmente, problemas dependentes de dados são conhecidos por se infiltrarem nas redes e permanecerem não detectados por longos períodos de tempo. Em muitos casos, o padrão que terá problemas é algo que não tem “transições” suficientes, como todos os uns ou todos os zeros, ou um padrão próximo da borda, como quase todos os zeros. Não é necessariamente suficiente especificar um padrão de dados de todos os zeros (por exemplo) na linha de comando, porque o padrão que é de interesse está no nível de enlace de dados, e a relação entre o que você digita e o que os controladores transmitem pode ser complicada.


Isso significa que, se você tiver um problema dependente de dados, provavelmente terá que fazer muitos testes para encontrá-lo. Se tiver sorte, poderá encontrar um arquivo que não pode ser enviado pela sua rede ou que leva muito mais tempo para ser transferido do que outros arquivos de tamanho semelhante. Você pode então examinar este arquivo em busca de padrões repetidos que pode testar usando a opção -p do ping.

DETALHES DO TTL

O valor TTL de um pacote IP representa o número máximo de roteadores IP pelos quais o pacote pode passar antes de ser descartado. Na prática atual, você pode esperar que cada roteador na Internet diminua o campo TTL em exatamente um.

O campo TTL para pacotes TCP pode ter vários valores. O valor máximo possível deste campo é 255, e um valor inicial recomendado é 64. Para mais informações, consulte a seção TCP/Interface de Nível Inferior do RFC9293.

Em operação normal, o ping imprime o valor TTL do pacote que recebe. Quando um sistema remoto recebe um pacote ping, ele pode fazer uma de três coisas com o campo TTL em sua resposta:

Não alterá-lo; esta é a ação que os sistemas Berkeley Unix realizavam antes da versão 4.3BSD Tahoe. Neste caso, o valor TTL no pacote recebido será 255 menos o número de roteadores no caminho de ida e volta.

Definir para 255; esta é a ação que os sistemas Berkeley Unix atuais realizam. Neste caso, o valor TTL no pacote recebido será 255 menos o número de roteadores no caminho do sistema remoto para o host que executa o ping.

Definir para algum outro valor. Algumas máquinas usam o mesmo valor para pacotes ICMP que usam para pacotes TCP, por exemplo, 30 ou 60. Outras podem usar valores completamente arbitrários.

BUGS

Muitos Hosts e Gateways ignoram a opção RECORD_ROUTE.

O comprimento máximo do cabeçalho IP é muito pequeno para que opções como RECORD_ROUTE sejam completamente úteis. No entanto, não há muito que possa ser feito sobre isso.

Pingar em grande quantidade não é recomendado em geral, e pingar o endereço de broadcast deve ser feito apenas em condições muito controladas.

VEJA TAMBÉM

ip(8), ss(8).

HISTÓRICO

O comando ping apareceu no 4.3BSD.

A versão descrita aqui é sua descendente específica para Linux.

A partir da versão s20150815, o binário ping6 não existe mais. Ele foi mesclado ao ping. Criar um link simbólico chamado ping6 apontando para ping resultará na mesma funcionalidade de antes.

SEGURANÇA

ping requer a capacidade CAP_NET_RAW para ser executado 1) se o programa for usado para consultas não-echo (veja a opção -N) ou quando o campo de identificação for definido como 0 para ECHO_REQUEST (veja a opção -e), ou 2) se o kernel não suportar sockets de datagrama ICMP, ou 3) se o usuário não tiver permissão para criar um socket de echo ICMP. O programa pode ser usado como set-uid root.

DISPONIBILIDADE

ping faz parte do pacote iputils.