GRE-Tunnel-TTL-Nummer

GRE-Tunnel-TTL-Nummer

Hier ist die Einstellung auf Server 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

Einstellung auf Server 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

Ohne "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

Mit „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

Was genau verursacht dieses „*“-Problem, wenn TTL 255 nicht vorhanden ist?

Antwort1

TTLsteht fürZeit zu leben. Es handelt sich um ein Feld im IP-Paketheader. Der Wert wird zunächst vom Absender festgelegt, häufig auf 64, und von jedem Router um eins verringert. Wenn er 0 erreicht, ohne das endgültige Ziel zu erreichen, verwirft der Router das Paket und sendet eine ICMP-Zeitüberschreitungsnachricht an die ursprüngliche Quelle zurück. Diese TTL-Verarbeitung ist wichtig, um zu verhindern, dass nicht routbare IP-Pakete für immer in einem IP-Netzwerk weitergeleitet werden und Ressourcen verbrauchen.

Traceroute verwendet dieses TTL-Verhalten, um herauszufinden, welche Hops und wie viele Hops (Router) es auf einem Pfad zu einem Ziel gibt. Es sendet nacheinander Test-IP-Pakete mit kleinen TTLs: TTL=1, TTL=2, TTL=3. TTL=1 wird vom ersten Router verworfen, TTL=2 wird vom ersten weitergeleitet und vom zweiten verworfen und so weiter. Wenn Traceroute eine ICMP-Zeitüberschreitungsmeldung von einem Router empfängt, zeigt es dessen IP-Adresse an. Wenn die Testzeit abläuft, wird ein Sternchen angezeigt.

Um auf den Effekt zurückzukommen, den Sie sehen: Er liegt an der Funktionsweise des GRE-Tunnelings in Bezug auf TTL. Bei IPv4-GRE-Tunneln wird standardmäßig die TTL vom getunnelten Paket in das IPv4-GRE-Paket kopiert. Dies kann durch die ttlOption überschrieben werden, wie Sie es getan haben. Relevanter Auszug aus dem Handbuch:

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.

Wenn Sie also verwenden ttl 255, wird eine von Traceroute gesendete Sonde mit TTL=1 in ein GRE-IPv4-Paket mit TTL=255 gekapselt. Dieses wird von allen Zwischenroutern weitergeleitet, erreicht den Tunnelendpunkt und wird vom endgültigen Ziel empfangen und verarbeitet. Wenn Sie nicht verwenden ttl 255, ist die Standardeinstellung ttl inherit. Das bedeutet, dass eine Traceroute-Sonde mit TTL=1 in ein GRE-IPv4-Paket mit TTL=1 gekapselt wird. Es wird vom ersten Router verworfen. Es ist jedoch das GRE-Paket, das verworfen wird, und wenn der Router eine ICMP-Zeitüberschreitung sendet, bezieht sich dies auf das kapselnde Paket (GRE) und nicht auf die gekapselte Traceroute-Sonde. Daher erhält der Traceroute-Prozess keinen ICMP-Fehler, die Sonde läuft ab und ein Sternchen (*) wird angezeigt. Wenn die TTL lang genug ist, damit das GRE-gekapselte Paket den Tunnelendpunkt erreicht, erreicht die Sonde schließlich auch das endgültige Ziel und ihre IP-Adresse wird angezeigt.

Zusammenfassend lässt sich also sagen, dass Sie wirklich kein Problem haben, sondern dass alles genau so funktioniert, wie es sollte!

verwandte Informationen