Windows і strongSwan: узгодження чотирьох трансформ у пропозиції IKE
Спільного шифру недостатньо, коли сторони розходяться в групі обміну ключами. Порівняйте всі чотири трансформи, а потім застосуйте одну обмежену політику профілю.
Обидві сторони підтримують AES, обидві приймають SHA-256, і тунель усе одно не піднімається. Пропозиція не пройшла на компоненті, який ніхто не порівняв, зазвичай на групі обміну ключами. Цей посібник читає фактичний обмін до будь-яких змін, застосовує одну обмежену політику і залишає відкат, що повертає попередні параметри.
Прочитайте відмову, перш ніж змінювати групу
«Помилка узгодження політики» — це підсумок, а не діагноз. Вона означає, що взаємно прийнятної пропозиції не знайдено, і нічого не каже про те, який компонент було відхилено. Ставтеся до неї як до початку розслідування, а не як до доказу про конкретну групу.
Відповідь зазвичай на боці сервера. Журнал strongSwan на належному рівні перелічує пропозицію, отриману від клієнта, і пропозицію, яку він налаштований приймати, а різниця між двома списками називає компонент, що не пройшов.
Не вважайте, що клієнт пропонує те, що сказано в старому дописі на форумі. Активний профіль і встановлена в ньому політика визначають запропонований список, а оновлена збірка Windows може запропонувати інший набір, ніж той на знімку екрана, з якого ви копіюєте.
Запишіть обидва списки. Чотири позиції трансформ і одна група — короткий список, і рядкове порівняння займає менше часу, ніж будь-який експеримент. Чотири позиції легко втримати в полі зору. Файл журналу — ні.
Порівнюйте кожну трансформу, а не одне знайоме ім'я
Пропозиція IKE — це набір виборів, які всі мають збігтися. Шифрування захищає переговори, цілісність або PRF їх засвідчує, а група Diffie-Hellman створює свіжий ключовий матеріал. Пропозиція, що збігається за першими двома і різниться за третьою, усе ще неприйнятна для обох сторін.
Два поля Windows, які тут плутають, належать до різних фаз. DHGroup стосується обміну ключами IKE, а PfsGroup — дочірньої асоціації, що захищає трафік. Зміна другого не виправить відмову в першому.
Назви груп різняться між реалізаціями, і це окреме джерело плутанини. strongSwan пише modp2048 і ecp256, а Windows використовує назви переліку, такі як Group14 і ECP256, тож порівняння має спершу перекласти. Тримайте нотатку в два стовпці з обома назвами. Тоді наступна розбіжність класифікується за секунди.
| Transform | Windows parameter | strongSwan name | Failure it causes |
|---|---|---|---|
| Encryption | CipherTransformConstants | aes, aes256gcm and similar | No common proposal at all |
| Integrity or PRF | AuthenticationTransformConstants | sha256, sha512 and similar | Proposal rejected after encryption matches |
| Key-exchange group | DHGroup | modp2048, ecp256 | Exchange fails during key establishment |
| Child SA protection | PfsGroup | esp proposal groups | Tunnel negotiates, data association does not |
Застосуйте одну повну й обмежену політику
Підтримуваний інструмент для рідного профілю IKEv2 — це політика IPsec для кожного підключення, задана як один об'єкт, а не поле за полем. Спершу перегляньте її, потім застосуйте, а попередні параметри збережіть у записі про зміну.
Set-VpnConnectionIPsecConfiguration -ConnectionName "Northwind IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -DHGroup ECP256 -PfsGroup ECP256 -WhatIf
Перемикач -WhatIf показує локальну зміну в попередньому перегляді й нічого не застосовує. Це корисно і водночас є поширеною пасткою, бо попередній перегляд доводить лише те, що параметри синтаксично прийнятні для локального командлета. Чи прийме шлюз отриману пропозицію, він не каже.
Заодно узгодьте й область дії. Підключенню в сховищі всіх користувачів потрібен відповідний параметр для всіх користувачів, а редагування профілю окремого користувача з тим самим відображуваним ім'ям змінює інший об'єкт, який тунель не використовує.
Потім перед тестом приведіть бік strongSwan до того самого набору. Узгоджена зміна на обох кінцях — єдиний варіант, який сходиться; зміна однієї сторони й повторні спроби дають журнал, повний однакових відмов.
Перевірте обмін і перегенерацію ключів окремо
Успішне підключення — це одне спостереження, а перегенерація ключів — інше. Початкові переговори IKE використовують один набір параметрів, а дочірня асоціація, що несе трафік, може згодом бути переузгоджена зі своєю політикою. Налаштування, яке підключається і потім через час відвалюється, зазвичай належить до другого випадку.
ipsec statusall | grep -A6 "Northwind"
Get-VpnConnection -Name "Northwind IKEv2" | Format-List *
Перша команда показує погляд сервера на встановлені асоціації, включно з дочірньою SA та її залишком часу життя. Друга показує, що тепер містить профіль клієнта, і це єдиний спосіб переконатися, що задана політика і є чинною.
Спостерігайте за повною перегенерацією ключів, перш ніж оголосити успіх. Це означає залишити підключення піднятим достатньо довго, щоб дочірня асоціація замінилася, і потім підтвердити, що трафік триває. Більшість розбіжностей політики ховається саме на цьому кроці, бо початкові переговори можуть пройти з набором, який перегенерація не приймає.
Відкат — це попередній набір параметрів, а не поблажливий запасний варіант. Якщо клієнт пропонував лише слабку стару групу, відповідь — поліпшити спільну політику клієнта й сервера, а не додавати цю групу на шлюз, де кожна майбутня сторона зможе дійти знизу до неї.
Запишіть чотири параметри, групу, область підключення й результат перегенерації. Це коротка нотатка, і вона — різниця між інструкцією та історією про те, як одного разу піднявся тунель.