Соединение TCP через IPSec (Linux/Strongswan) остановы после превышения PMTU

Резервные копии (через Бакулюмы) одного из моих серверов связанное через IPSec (Strongswan на тестировании Debian) демону устройства хранения данных (“B”) не заканчивает 95% времен, которые они выполняют. То, что, по-видимому, происходит:

  1. Бакулюмы открывают соединение TCP для демона устройства хранения данных IP VPN. (→ B)
  2. Начиная с установки ядра net.ipv4.ip_no_pmtu_disc=0 установлен по умолчанию, IP не Фрагментируют бит, установлен в пакете простого текста.
  3. При маршрутизации пакета в туннель IPSec бит DF полезной нагрузки копируется в заголовок IP пакета ESP.
  4. Через какое-то время (часто приблизительно 20 минут) и до нескольких гигабайтов отправленных данных, пакет, немного больше, чем пакеты ESP прежде, отправляется. (→ B)
  5. Поскольку интерфейс демона устройства хранения данных имеет более низкий MTU, чем тот отправляющего узла, маршрутизатор по пути отправляет тип 3 ICMP, кодируйте 4 (Необходимая фрагментация, и не Фрагментируйте, был Установлен), ошибка к хосту. (некоторый маршрутизатор → A)
  6. Остановы соединения, по некоторым причинам разместите лавинные рассылки ~100 пустых дублирующихся ACKs к B (в ~20 мс).

(Пакеты ICMP достигают хоста A и нет никаких правил iptables на месте того блока ICMP.)

Возможные причины, почему это происходит, о котором я могу думать:

  • Ошибка ядра (Debian 3.13.7-1)
  • Linux' реализация IPsec намеренно игнорирует сообщение PMTU как меры безопасности, так как это незащищено и влияло бы на существующий SA. (кажется, допустимое поведение согласно RFC 4301 8.2.1),
  • Должен сделать что-то с PMTU, Стареющим (RFC 4301 8.2.2)

Что лучший способ состоит в том, чтобы зафиксировать это, не отключая исследование PMTU глобально или понизив интерфейс MTU? Возможно, очиститесь, бит DF так или иначе как FreeBSD делает с ipsec.dfbit=0?

5
задан 29 July 2014 в 13:21
2 ответа

Можно попробовать создать правило в iptables, чтобы установить TCP MSS для трафика, предназначенного для VPN, на более низкое значение. Но без захвата пакетов трудно угадать, что происходит.

2
ответ дан 3 December 2019 в 01:57

Если PMTU-обнаружение в сценарии VPN не удается, это, как правило, проблема с публичными IP-адресами шлюзов или маршрутизаторов в промежутке между ICMP-сообщениями или с отфильтрованными ICMP-сообщениями. Зажим MSS является лишь уродливым обходным путем.

.
0
ответ дан 3 December 2019 в 01:57

Теги

Похожие вопросы