Por que o traceroute exibe muitos endereços IP para o mesmo salto?


13

Aqui está o caminho da minha casa para sina.com.cn.

 traceroute -n   sina.com.cn
traceroute to sina.com.cn (202.108.33.60), 30 hops max, 60 byte packets
 1  192.168.31.1  0.476 ms  0.587 ms  0.695 ms
 2  140.0.5.1  2.557 ms  2.699 ms  3.065 ms
 3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms
 4  * 221.11.156.18  26.480 ms 221.11.165.233  22.950 ms
 5  219.158.9.97  14.176 ms * 219.158.19.149  21.472 ms
 6  219.158.9.97  18.142 ms 219.158.8.81  44.856 ms  52.539 ms
 7  124.65.194.190  53.162 ms 219.158.8.81  50.614 ms 124.65.194.190  47.266 ms
 8  124.65.194.190  50.760 ms 61.148.143.26  49.351 ms  53.515 ms
 9  210.74.176.138  43.056 ms  43.286 ms 61.148.143.26  53.712 ms
10  202.108.33.60  46.385 ms 210.74.176.138  42.896 ms  46.931 ms

192.168.31.1 é o meu roteador doméstico.
140.0.5.1 é o meu IP público que o provedor de serviços de Internet fornece.

curl  ifconfig.me
140.0.5.1 

Na terceira linha, diz

3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms

Por que existem dois endereços IP 221.11.155.65 e 221.11.165? O que isso significa?

O pacote salta de 140.0.5.1 para 221.11.155.65e depois salta de 221.11.155.65 para 221.11.165?


Um esclarecimento. Se o provedor de serviços de Internet tiver fornecido um endereço IP, ele não deverá aparecer nos comandos de traceroute que você executa. E se você fizesse um traceroute para o endereço IP, ele apareceria como salto 1. É mais provável que você não tenha nenhum endereço IP e 140.0.5.1seja algum tipo de CGN que se comporte de uma maneira um tanto incomum.
kasperd

Respostas:


4

O que o traceroute faz é usar os campos de opção, pois ele envia pacotes de protocolo de mensagens de controle da Internet (icmp). Cada gateway ou ponto de roteamento na rede lê pacotes em uma interface, decide para onde deve ir e os grava em outra interface. Essa interface é presumivelmente mais próxima do destino. Enquanto o roteador está encaminhando o pacote, ele também faz modificações no cabeçalho do pacote. Reduz o "tempo de vida" ou o campo de contagem de saltos em um. Cada Gateway no caminho do pacote em direção ao destino diminui esse campo.

Quando o campo de contagem de saltos cai para zero, muitos roteadores retornam uma mensagem icmp dizendo onde o pacote foi descartado. Para descobrir qual endereço IP está a uma distância específica, o traceroute enviará pacotes com as opções de tempo de vida e me dará uma resposta quando o tempo limite terminar. mensagens com contagem de saltos começando em 1 e aumentando cada vez mais retornarão o endereço IP de roteadores progressivamente mais distantes. Como o traceroute faz isso várias vezes, você recebe de volta (se você tiver uma rede ricamente conectada, como a Internet) várias respostas em algumas contagens. pode ser que um Gateway específico responda em diferentes quantidades, porque a rota para esse gateway passou por diferentes saltos.


11

O tracerouteque você fornece aqui como informação é que você tem pelo menos 2 rotas para chegar ao seu destino a partir do roteador:

           IP adresses                 Internet operator

           140.0.5.1                   Firstmedia - Indonesia
             /    \
            /      \
221.11.155.65      221.11.165.9        China Unicom - China

Essa é uma situação normal para um grande operador de Internet: ter muitas rotas para resistir a incidentes normais na Internet.

A -aopção de traceroutepode ajudar a identificar a qual operador todos os endereços IP pertencem.

Aqui está um exemplo de uma árvore maior de rotas que você pode obter do seu celular através de uma ferramenta de rede como o servidor http://ping.eu/traceroute/ : traceroute para 140.0.5.1


Não existe uma opção para o meu traceroute no debian9.
scrapy

traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate, ...] [-i device] [-m max_ttl] [-p port] [-s src_addr] [-q nqueries] [-N squeries] [ -t tos] [-l flow_label] [-w waittimes] [-z sendwait] [-UL] [-D] [-P proto] [--sport = port] [-M method] [-O mod_options] [ --mtu] [--back] host [packet_len]
scrapy

Eu estava usando o FreeBSD aqui.
dan

8

No traceroute(8)manual do OpenBSD:

Três sondas (o número exato pode ser alterado usando a -q opção) são enviadas e uma linha é impressa mostrando o TTL ou limite de salto, endereço do gateway e tempo de ida e volta de cada sonda. Se as respostas da sonda vierem de diferentes gateways, o endereço de cada sistema respondente será impresso.

O manual do Linux terá uma redação semelhante.

Os vários endereços IP que você vê são os gateways que respondem às análises individuais em limites de salto específicos.

No seu caso, as três análises resultaram em respostas que, no limite de salto 3, retornavam a você dos gateways em 221.11.155.65 e em 221.11.165.9.

Portanto, a resposta é: Não, o pacote não salta entre os dois hosts listados nessa linha, são enviadas três análises e elas seguem duas rotas diferentes do 140.0.5.1.


1
@RuiFRibeiro Esclarei minha resposta para responder à pergunta explícita que está sendo feita.
Kusalananda

De fato, eu confirmei, pelo menos no traceroute do Debian tem a mesma redação.
Rui F Ribeiro
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.