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 ttl
Option ü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!