Número TTL do túnel GRE

Número TTL do túnel GRE

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 ttlopçã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!

informação relacionada