TTL significa Tempo de vida . É um campo presente no cabeçalho do pacote IP. O valor é inicialmente definido pelo remetente, geralmente para 64, e decrementado por um por cada roteador. Quando atinge 0 sem antes de chegar ao destino final, o roteador descarta o pacote e envia uma mensagem ICMP Time Exceded para a fonte original. Esse processamento TTL é importante para evitar que pacotes IP não rotináveis sejam encaminhados para sempre em uma rede IP, consumindo recursos.
O traceroute usa esse comportamento TTL para descobrir quais saltos e quantos hops (roteadores) há em um caminho para um destino. Envia os pacotes IP da sonda com pequenos TTLs em sequência: TTL = 1, TTL = 2, TTL = 3. TTL = 1 será descartado pelo primeiro roteador, TTL = 2 será encaminhado pelo primeiro e descartado pelo segundo, e assim por diante. Se o traceroute receber uma mensagem ICMP Time Exceded de um roteador, ele exibirá seu endereço IP. Se a sonda expirar, um asterisco será exibido.
Para retornar ao efeito que você está vendo, é por causa de como o tunelamento GRE funciona em relação ao TTL. Para túneis GRE IPv4, o padrão é copiar o TTL do pacote encapsulado para o pacote IPv4 GRE. Isso pode ser substituído pela opção ttl
como você fez. Trecho relevante do manual:
ttl N
hoplimit N
set a fixed TTL (IPv4) or hoplimit (IPv6) N on tunneled
packets. N is a number in the range 1--255. 0 is a special
value meaning that packets inherit the TTL value. The default
value for IPv4 tunnels is: inherit. The default value for IPv6
tunnels is: 64.
Portanto, quando você usar ttl 255
, um probe enviado por traceroute com TTL = 1 será encapsulado em um pacote IPv4 GRE com TTL = 255. Isso será encaminhado por todos os roteadores intermediários e atingirá o ponto final do túnel e será recebido e manipulado pelo destino final. Quando você não usa ttl 255
, o padrão é ttl inherit
. Isso significa que uma sonda traceroute com TTL = 1 será encapsulada em um pacote IPv4 GRE com TTL = 1. Ele será descartado pelo primeiro roteador. No entanto, é o pacote GRE que é descartado e, se o roteador envia um tempo ICMP excedido, ele se referirá ao pacote de encapsulamento (GRE) e não à sonda de traceroute encapsulada. Portanto, o processo traceroute não receberá nenhum erro ICMP, o probe expira e um asterisco (*) é exibido. Quando o TTL é grande o suficiente para o pacote encapsulado GRE alcançar o ponto final do túnel, finalmente a sonda também alcança o destino final e seu endereço IP é exibido.
Então, para concluir, você realmente não tem um problema, mas as coisas funcionam exatamente como deveriam!