Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

Дано: туннель IPIP over IPsec через интернет. Туннель работает, но напрягает сломанная трассировка через туннель. На стенде из пары роутеров не воспроизводилось, начал ковырять дальше и таки выяснил причину - при трассировке через IPIPoverIPsec туннель TTL=1 выставялется для "внешнего" пакета, как следствие, time exceeded приходит от провайдера! На tcpdump ISP это выглядит условно так:

19:23:42.163312 IP (tos 0x0, ttl 1, id 0, offset 0, flags [DF], proto ESP (50), length 152)
    localrouter > remoterouter: ESP(spi=0x11111111,seq=0x11), length 132
19:23:42.164677 IP (tos 0x0, ttl 30, id 0, offset 0, flags [none], proto ICMP (1), length 56)
    isp-gateway > localrouter: ICMP time exceeded in-transit, length 36
        IP (tos 0x0, id 0, offset 0, flags [DF], proto ESP (50), length 152, bad cksum 82e0 (->83e0)!)

При этом при пинге удаленного конца туннеля видим, что внешний пакет приходит с TTL равен исходящему минус количество внешних хопов, однако в развернутом пакете TTL равен исходящему минус 1.

Вопрос - возможно ли его изменить, чтобы исходящий пакет уходил с нормальным TTL, не взирая на TTL заворачиваемого пакета?

Изменено пользователем KorDen
Опубликовано (изменено)
  В 25.06.2018 в 20:02, KorDen сказал:

возможно ли его изменить, чтобы исходящий пакет уходил с нормальным TTL, не взирая на TTL заворачиваемого пакета?

Показать  

Отвечу себе же на свой же вопрос:

ipip0: ip/ip  remote 1.2.3.4  local 5.6.7.8  ttl inherit

Короче говоря, "ip tunnel change ipip0 ttl 64" решает проблему. Остается вопрос - как перманентно установить TTL для исходящего туннельного пакета из CLI? ip adjust-ttl устанавливает не то что нужно...

Похоже это в фичреквесты добавления команды типа interface tunnel ttl как минимум для IPIP и GRE (с EoIP непонятно, поскольку RFC-подобного описания сходу не нашел), которая будет устанавливать TTL внешнего пакета. @Le ecureuil...?

 

P.S.: временно решил проблему через /opt/etc/ndm/ifstatechanged.d:

#!/bin/sh
[ "$system_name" != "ipip0" ] && exit 0
ip tunnel change ipip0 ttl 64
Изменено пользователем KorDen
Опубликовано (изменено)
  В 29.06.2018 в 18:25, Le ecureuil сказал:

так нужно inherit сделать, или фиксированное значение а-ля 64?

Показать  

Для большинства случаев использования туннелей в роутерах нужно фиксированное значение а-ля 64. По-умолчанию же идет inherit. По RFC2003 "The Time To Live (TTL) field in the outer IP header is set to a value appropriate for delivery of the encapsulated datagram to the tunnel exit point.", но linux ставит inherit если параметр ttl отсутствует при создании туннеля.

В качестве быстрого фикса установка того же 64 закроет вопрос. Аналогично по идее и для GRE, за EoIP не скажу. Но в идеале бы хотелось бы видеть опцию для настройки, хоть и не обязательно..

Изменено пользователем KorDen
Опубликовано
  В 29.06.2018 в 19:06, KorDen сказал:

Для большинства случаев использования туннелей в роутерах нужно фиксированное значение а-ля 64. По-умолчанию же идет inherit. По RFC2003 "The Time To Live (TTL) field in the outer IP header is set to a value appropriate for delivery of the encapsulated datagram to the tunnel exit point.", но linux ставит inherit если параметр ttl отсутствует при создании туннеля.

В качестве быстрого фикса установка того же 64 закроет вопрос. Аналогично по идее и для GRE, за EoIP не скажу. Но в идеале бы хотелось бы видеть опцию для настройки, хоть и не обязательно..

Показать  

Сейчас сделал, что явно забито IPDEFTTL (оно же равно 64 в большинстве реализаций). Появится в следующем draft.

Если будет работать нормально - перетащу во все остальные ветки.

  • 1 год спустя...
Опубликовано
  В 27.08.2019 в 19:35, KorDen сказал:

По мотивам данной темы, из чата: аналогичная проблема с туннелями 6in4, тоже желательно хотя бы IPDEFTTL вместо inherit

Показать  

На всякий случай мой запрос по этой теме #446611. Если я ничего не путаю, то @vst там в копии.

Опубликовано

@Le ecureuil, большое спасибо, особенно за скорость :)

Если можно, пара вопросов:

  1. Я правильно понимаю, что изменения появятся в следующем обновлении 3.1?
  2. Ваш коллега из поддержки написал в запросе, что будет добавлена команда в CLI для управления значениями TTL и MTU на интерфейсе TunnelSixInFour. Теперь не ждать её появления?
Опубликовано
  В 03.09.2019 в 20:29, rustrict сказал:

@Le ecureuil, большое спасибо, особенно за скорость :)

Если можно, пара вопросов:

  1. Я правильно понимаю, что изменения появятся в следующем обновлении 3.1?
  2. Ваш коллега из поддержки написал в запросе, что будет добавлена команда в CLI для управления значениями TTL и MTU на интерфейсе TunnelSixInFour. Теперь не ждать её появления?
Показать  

Команда уже вроде есть (если мне память не изменяет). Их точно нет?
Появится в 2.11, 2.15, 3.01 и в следующих.

Опубликовано (изменено)

Простите, да, для MTU команда interface ip mtu работает. Но для TTL я ничего в справочнике не вижу, а ip adjust-ttl send неприменима для TunnelSixInFour:

(config)> interface TunnelSixInFour0
Core::Configurator: Done.
(config-if)> ip adjust-ttl send 64
Network::Interface::Repository error[6553609]: unable to find TunnelSixInFour0 as "Network::Interface::IP".

В запросе мне ваш коллега так описал команду:

interface TunnelSixInFour0 ip
	mtu - set Maximum Transmit Unit size
	remote - set a remote peer address
	ttl - set Time to live value

interface ip ttl — такой команды как раз сейчас нет.

Изменено пользователем rustrict
русский язык :)
Опубликовано
  В 03.09.2019 в 20:58, rustrict сказал:

Простите, да, для MTU команда interface ip mtu работает. Но для TTL я ничего в справочнике не вижу, а ip adjust-ttl send неприменима для TunnelSixInFour:

(config)> interface TunnelSixInFour0
Core::Configurator: Done.
(config-if)> ip adjust-ttl send 64
Network::Interface::Repository error[6553609]: unable to find TunnelSixInFour0 as "Network::Interface::IP".

В запросе мне ваш коллега так описал команду:

interface TunnelSixInFour0 ip
	mtu - set Maximum Transmit Unit size
	remote - set a remote peer address
	ttl - set Time to live value

interface ip ttl — такой команды как раз сейчас нет.

Показать  

Видимо забыли, что эта команда только для ipv4 есть. TTL не будет, пока смысла в ней не вижу совсем.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.