Aqui está a configuração no servidor A:
iface serverA_gre0 inet tunnel
address 172.24.0.85
mode gre
endpoint x.x.x.x
dstaddr 172.24.0.86
netmask 255.255.255.252
ttl 255
Configuração no servidor B:
iface serverB_gre0 inet tunnel
address 172.24.0.86
mode gre
endpoint x.x.x.x
dstaddr 172.24.0.85
netmask 255.255.255.252
ttl 255
Sem "ttl 255":
traceroute to 172.24.0.86 (172.24.0.86), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 172.24.0.86 54.507 ms 62.888 ms 51.369 ms
Com "ttl 255":
traceroute to 172.24.0.86 (172.24.0.86), 30 hops max, 60 byte packets
1 172.24.0.86 51.123 ms 51.733 ms 51.943 ms
O que exatamente causa esse problema "*" quando o TTL 255 não existe?
Responder1
TTLapoiaTempo de Viver. É um campo presente no cabeçalho do pacote IP. O valor é inicialmente definido pelo remetente, geralmente como 64, e diminuído em um por cada roteador. Quando chega a 0 antes de chegar ao destino final, o roteador descarta o pacote e envia uma mensagem ICMP Time Exceeded de volta à fonte original. Este processamento TTL é importante para evitar que pacotes IP não roteáveis sejam encaminhados para sempre em uma rede IP, consumindo recursos.
Traceroute usa esse comportamento TTL para descobrir quais saltos e quantos saltos (roteadores) existem em um caminho para um destino. Ele envia pacotes IP de sondagem 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 Exceeded de um roteador, ele exibirá seu endereço IP. Se a sonda atingir o tempo limite, um asterisco será exibido.
Voltando 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 GRE IPv4. Isso pode ser substituído pela ttl
opção 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
, uma investigação enviada por traceroute com TTL=1 será encapsulada em um pacote GRE IPv4 com TTL=255. Este será encaminhado por todos os roteadores intermediários e alcançará o ponto final do túnel e será recebido e tratado pelo destino final. Quando você não usa ttl 255
, o padrão é ttl inherit
. Isso significa que uma investigação traceroute com TTL=1 será encapsulada em um pacote GRE IPv4 com TTL=1. Ele será descartado pelo primeiro roteador. No entanto, é o pacote GRE que é descartado e se o roteador enviar um tempo ICMP excedido, ele se referirá ao pacote encapsulado (GRE) e não à sonda traceroute encapsulada. Portanto, o processo traceroute não receberá nenhum erro ICMP, o probe atingirá o tempo limite e um asterisco (*) será exibido. Quando o TTL é grande o suficiente para que o pacote encapsulado GRE alcance o ponto final do túnel, finalmente a sonda também atinge o destino final e seu endereço IP é exibido.
Então, para concluir, você realmente não tem problema, mas as coisas funcionam exatamente como deveriam!