Журналы IPsec могут показывать ответы о жизнеспособности, пока приложение перед ними стоит, и оба факта могут быть верны одновременно. Ответ DPD устанавливает, что обработка IKE партнёра ответила в тот момент; он ничего не говорит о том, несёт ли дочерняя SA нужный вам пакет. Считать каждое предупреждение рядом со сбоем его причиной — это путь, которым проблема селектора диагностируется как ошибка протокола. Три наблюдения путают чаще всего, и они отвечают на три разных вопроса. Читайте их по связи и назначению, прежде чем читать по метке времени.

Что доказывает каждое наблюдение

Таблица отделяет то, что устанавливает каждое наблюдение, от того, что оно лишь сопровождает.

ObservationWhat it establishesWhat it leaves open
DPD replies arriveThe peer's IKE process answeredThe child SA, forwarding path and application reply
TFC padding notificationThe peer will not accept padding for that child SAWhether ordinary ESP protection still works, which it does
Selectors reported as narrowedThe accepted traffic set is a subset of the offerWhether the subset includes the flow the user needs

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

Жизнеспособность — не здоровье данных

DPD работает как обмен INFORMATIONAL, разговор плоскости управления между демонами IKE. Ответ доказывает, что процесс IKE партнёра доступен и готов отвечать, а тайм-аут доказывает, что нет. Ни один результат не проверяет дочернюю SA, селекторы, путь пересылки или ответ приложения, поэтому здоровый DPD рядом с остановленной передачей — это связная картина, а не противоречие.

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

Уведомление о заполнении — это утверждение о заполнении

Заполнение TFC — самая перечитываемая строка в этих журналах. Она говорит, что заполнение для конфиденциальности потока трафика не будет принято для этой дочерней SA, что является утверждением о необязательной функции заполнения, а не отказом от защиты ESP. Находить его рядом со сбоем обычно совпадение из-за многословности, и включение или выключение заполнения ничего не меняет в охвате селекторов.

Спецификация IKEv2 определяет и уведомление, и согласование селекторов, а предупреждающая метка реализации ни в одном из двух случаев не заменяет смысл протокола.

Сужение тише и вероятнее важно

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

Записи, специфичные для хоста, с ограничением порта стоит прочитать дважды, потому что именно они исключают ICMP или второй порт, оставляя ping к шлюзу работающим.

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

Запишите источник, назначение, семейство адресов, протокол и порт так, как они видны при решении о защите, включая любой намеренный перевод. Это те значения, которые должны совпасть с селектором, и это также значения, которые люди заново набирают по памяти, когда тикет попадает к третьей паре рук.

Затем определите дочернюю SA и её направленные счётчики: swanctl --list-sas даёт сводку ассоциации на хосте strongSwan, а ip -s xfrm state даёт счётчики. Читайте их после свежего разрешённого запроса, а не пока система простаивает. Отсутствие роста исходящего трафика указывает на выбор или локальный путь; исходящий без соответствующего входящего указывает на партнёра, его пересылку или его ответы.

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

Выберите исправление после этого

Только когда эта запись существует, есть исправление, которое можно выбрать: принятые селекторы, маршрут, фильтрация, реализация партнёра или граница, которую вы только что продемонстрировали. Сброс партнёра меняет несколько состояний сразу и часто восстанавливает трафик, не объясняя, какое было неверным, поэтому сбой возвращается. Держите дампы состояния ядра вне тикетов, потому что они могут содержать ключи, а краткой сводки достаточно любому, кому нужно помочь.

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

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