Відповіді DPD доводять, що партнер IKE живий, а не те, що ваші дані течуть
Відповіді про живучість, повідомлення про заповнення та звужені селектори описують три різні речі. Читайте їх окремо, перш ніж звинувачувати одне з них у зупинці.
Журнали IPsec можуть показувати відповіді про живучість, поки застосунок перед ними стоїть, і обидва факти можуть бути правдивими водночас. Відповідь DPD встановлює, що обробка IKE партнера відповіла в той момент; вона нічого не каже про те, чи дочірня SA несе потрібний вам пакет. Вважати кожне попередження поблизу збою його причиною — це шлях, яким проблема селектора діагностується як помилка протоколу. Три спостереження плутають найчастіше, і вони відповідають на три різні питання. Читайте їх за зв'язком і призначенням, перш ніж читати за міткою часу.
Що доводить кожне спостереження
Таблиця відокремлює те, що встановлює кожне спостереження, від того, що воно лише супроводжує.
| Observation | What it establishes | What it leaves open |
|---|---|---|
| DPD replies arrive | The peer's IKE process answered | The child SA, forwarding path and application reply |
| TFC padding notification | The peer will not accept padding for that child SA | Whether ordinary ESP protection still works, which it does |
| Selectors reported as narrowed | The accepted traffic set is a subset of the offer | Whether 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 дає лічильники. Читайте їх після свіжого дозволеного запиту, а не коли система простоює. Відсутність зростання вихідного трафіку вказує на вибір або локальний шлях; вихідний без відповідного вхідного вказує на партнера, його пересилання чи його відповіді.
Завершений обмін застосунку важливіший за будь-який лічильник, тому тест має завершуватися на застосунку, а не на індикаторі тунелю.
Виберіть виправлення після цього
Лише коли цей запис існує, є виправлення, яке можна вибрати: прийняті селектори, маршрут, фільтрування, реалізація партнера або межа, яку ви щойно продемонстрували. Скидання партнера змінює кілька станів одразу і часто відновлює трафік, не пояснюючи, який був неправильним, тож збій повертається. Тримайте дампи стану ядра поза тікетами, бо вони можуть містити ключі, а короткого зведення достатньо кожному, кому треба допомогти.
Коли запис суперечить вашій першій теорії, вірте запису й перепишіть теорію; ця звичка цінніша за будь-який окремий рядок журналу, обговорюваний тут.