Туннельный номер GRE TTL
Вот настройка на сервере 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
Настройка на сервере 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
Без "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
С "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
Что именно вызывает эти "*" проблемы, когда TTL 255 не существует?
1 ответ
TTL означает " Время жить". Это поле присутствует в заголовке IP-пакета. Значение первоначально устанавливается отправителем, часто равным 64, и уменьшается на единицу каждым маршрутизатором. Когда он достигает 0, не достигнув конечного пункта назначения, маршрутизатор отбрасывает пакет и отправляет сообщение ICMP Time Exceeded обратно в исходный источник. Эта обработка TTL важна для предотвращения бесконечной пересылки IP-пакетов в сети IP, что потребляет ресурсы.
Traceroute использует это поведение TTL для определения количества прыжков и количества прыжков (маршрутизаторов) на пути к месту назначения. Он отправляет зондирующие IP-пакеты с небольшими TTL в последовательности: TTL=1, TTL=2, TTL=3. TTL=1 будет сброшен первым маршрутизатором, TTL = 2 будет перенаправлен первым и отброшен вторым, и так далее. Если traceroute получает сообщение ICMP Time Exceeded от маршрутизатора, он отображает свой IP-адрес. Если время срабатывания датчика истекло, отображается звездочка.
Чтобы вернуться к эффекту, который вы видите, это из-за того, что туннелирование GRE работает относительно TTL. Для туннелей IPv4 GRE по умолчанию копируется TTL из туннелированного пакета в пакет IPv4 GRE. Это может быть отменено ttl
вариант, как вы сделали. Соответствующая выдержка из руководства:
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.
Итак, когда вы используете ttl 255
тест, отправленный traceroute с TTL = 1, будет инкапсулирован в пакет GRE IPv4 с TTL=255. Это будет перенаправлено всеми промежуточными маршрутизаторами и достигнет конечной точки туннеля и будет получено и обработано конечным пунктом назначения. Когда вы не используете ttl 255
по умолчанию ttl inherit
, Это означает, что зонд traceroute с TTL = 1 будет инкапсулирован в пакет GRE IPv4 с TTL=1. Он будет сброшен первым маршрутизатором. Однако это пакет GRE, который отброшен, и если маршрутизатор отправляет превышенное время ICMP, то он будет ссылаться на инкапсулирующий пакет (GRE), а не на инкапсулированный тест traceroute. Поэтому процесс traceroute не получит никакой ошибки ICMP, время ожидания истекло, и отображается звездочка (*). Когда TTL достаточно велик для того, чтобы инкапсулированный пакет GRE достиг конечной точки туннеля, тогда, наконец, зонд также достигает конечного пункта назначения и отображается его IP-адрес.
Итак, в заключение, у вас действительно нет проблем, но все работает именно так, как должно!