Трафик уходит с одной площадки и не возвращается, оба шлюза сообщают о завершённом согласовании, а единственная зацепка — куча исходящих пакетов без ответов. На конечной точке Linux обычная причина — не стойкость шифрования, MTU или таблица маршрутизации. Это гранулярность записей политики и номер, который связывает каждую политику с ассоциацией безопасности. Приведённая ниже процедура читает эти две базы, прежде чем трогать что-либо ещё.

Разделите симптом, прежде чем что-то менять

Односторонний сбой при завершённом согласовании IKE сужает проблему до пути данных. Либо исходящая политика совпала и ответ был отброшен, либо ответ вообще не пришёл, потому что у другой стороны не было чем его отправить. Для приложения оба случая выглядят одинаково, а базы xfrm их различают.

Не начинайте с MTU. Неверный MTU даёт замирания и симптомы фрагментации, а не чистое разделение направлений с растущими счётчиками исходящих пакетов.

Прочитайте базу политик и базу состояний

В Linux шифрование определяется записями политики, поэтому подходящая политика, а не маршрут, помещает пакет в туннель. Запустите ip xfrm policy, чтобы увидеть селекторы, направление, приоритет и шаблон каждой записи, и ip xfrm state, чтобы увидеть установленные ассоциации с их reqid. Политика и ассоциация связаны этим reqid.

Посмотрите все три направления. Исходящее и входящее охватывают трафик к этому узлу и от него; направление пересылки важно, когда узел маршрутизирует за других. Отсутствующая или несовпадающая запись в одном направлении объясняет односторонний результат без какой-либо криптографической ошибки.

Классическая асимметрия: один reqid на несколько подсетей

Частая ошибка возникает у партнёра, который устанавливает политики для всех согласованных подсетей под одним reqid, что бывает при generate_policy require в racoon. Трафик тогда уходит через ассоциацию, установленную последней, а другая сторона держит отдельную ассоциацию на каждую подсеть. Ответы приходят на ассоциацию, чей reqid не указывает на политику, которая должна их принять, и ядро отбрасывает их после расшифровки.

Исправление — это изменение конфигурации, а не правило межсетевого экрана: generate_policy unique; даёт каждой политике собственный reqid, так что у ассоциаций партнёра на каждую политику появляются соответствующие партнёры. Примените это, согласуйте заново и посчитайте разные reqid для ожидаемых подсетей, прежде чем объявлять успех.

Если две подсети по-прежнему делят один reqid, а другая сторона ожидает два, вы нашли асимметрию. Запишите соответствие, потому что это доказательство того, что следующее изменение её исправило или сохранило.

Селекторы берутся из согласования, а не из вашей конфигурации

Защищённые диапазоны — это то, о чём договорились обе стороны, а не то, что запросила одна из них. Клиент, предлагающий пару узлов против широкого удалённого диапазона, получает суженную версию шлюза и не может её расширить. Читайте установленные селекторы, а не те, что в вашем локальном файле.

Когда цель обратная — оставить одно назначение вне туннеля, добавьте политику обхода с меньшим номером приоритета, чтобы она перебила автоматически установленную запись. Политика без шаблона разрешает открытый текст, что делает её осознанным исключением для журнала изменений, а не шагом отладки.

Проверяйте в этом порядке и знайте, как откатиться

Перечислите политики для каждой подсети в обоих направлениях, включая пересылку, если узел маршрутизирует. Посчитайте разные reqid и подтвердите по одному на политику на той стороне, которая его ожидает. Сравните установленные селекторы с согласованными. После обновления ключа перечитайте счётчики по ассоциациям, потому что проверенная ассоциация могла уже исчезнуть. Маршруты проверяйте последними, так как отсутствующий маршрут к удалённой подсети даёт похожий односторонний симптом при чистых счётчиках политики.

Перед изменением партнёра сохраните текущий вывод обеих команд xfrm. Если новый параметр не восстановит обратное направление, восстановление этого вывода — более быстрый откат, чем пересборка туннеля по памяти, и оно сохраняет сравнение честным.

Похожие статьи