Número TTL do túnel GRE

5

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

Definindo 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 o problema "*" quando o TTL 255 não existe?

    
por Thomas G. Lau 19.01.2017 / 10:46

1 resposta

2

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!

    
por 24.11.2017 / 08:25