Оновлення Ubuntu зламало L2TP/IPsec? Порівняйте пропозиції IKEv1
Профіль і пароль не змінилися, але фаза 1 тепер не проходить. Прийнятні пропозиції клієнта змістилися, а сервер і досі пропонує те, що пропонував завжди.
З'єднання працювало в четвер, оновлення виконалося в п'ятницю, а в понеділок клієнт крутиться на “connecting” і здається. Той самий ноутбук, той самий сервер, той самий обліковий запис, той самий заздалегідь розділений ключ. У профілі нічого не редагували, тому очевидні підозрювані, пароль і firewall, марнують ваш час.
Змінився список перетворень, які ваша машина готова запропонувати. Обидва стеки IPsec, що використовуються в Ubuntu, strongSwan і Libreswan, відкидають алгоритми, які більше не вважають безпечними, а плагін NetworkManager перед ними має власний список, який рухається за іншим графіком. Сервер, прив'язаний до 3DES, SHA1 і групи Diffie-Hellman на 1024 біти, може зрештою не почути нічого з того, що приймає.
Що насправді змінило оновлення
Пропозицію IKEv1 живлять два рівні. Демон постачає вбудований у компіляцію набір пропозицій за замовчуванням, а плагін L2TP або покладається на нього, або надає свій список. До NetworkManager-l2tp 1.2.16 плагін покладався на нього, тому вашою пропозицією було те, що встановлений демон вважав розумним. Починаючи з 1.2.16 плагін надсилає задокументований список, змодельований за клієнтами Windows і Apple, і цей список ширший за старе значення за замовчуванням, але більше не містить кожного застарілого поєднання на початку черги.
Цей поділ пояснює режим відмови, який люди вважають заплутаним: дві машини на одному випуску Ubuntu можуть поводитися по-різному, бо в одній є пакет дистрибутива, а в іншій backport, і версія демона на обох у звіті про помилку виглядає однаково. Перевірте версію плагіна, а не лише версію демона, перш ніж робити висновок, що оновлення нічого істотного не змінило.
У тій самій області є менша пастка. Два демони по-різному пишуть групи Diffie-Hellman еліптичної кривої: один пише ecp384, другий ecp_384. Вставте неправильний правопис у діалог Advanced, і демон відхилить налаштування як неаналізоване, що в журналі виглядає як проблема переговорів, а не як друкарська помилка в конфігурації.
Прочитайте відмову, перш ніж щось змінювати
Почніть із того, який backend ви запускаєте, бо відповідь визначає і синтаксис, і місце журналу.
ipsec --version
nmcli connection show "Your VPN name" | grep -i ipsec
Потім прочитайте сам обмін. У strongSwan демон пише в journal на поточному випуску і в /var/log/syslog на старішому, і цікавою частиною є надіслана пропозиція, а не останній рядок. Ви шукаєте формулювання про відсутність відповідної пропозиції, що є проблемою алгоритму; про помилку автентифікації, яка вказує на ключ або обліковий запис; або про звичайний тайм-аут, який вказує на доступність.
Ці три результати занадто часто сприймають як один симптом. Тайм-аут із порожнім журналом демона означає, що пакети не надходять. Відхилення пропозиції означає, що вони надійшли і були відкинуті. Якщо ваш журнал мовчить, підніміть рівень налагодження плагіна на одну спробу і потім знизьте його, бо докладний вивід швидко заповнює journal.
Фаза 1 і фаза 2 — окремі ставки
IKEv1 домовляється двічі. Основний режим будує асоціацію безпеки IKE з алгоритму шифрування, алгоритму цілісності, групи Diffie-Hellman і методу автентифікації. Швидкий режим потім будує асоціацію ESP, яка нестиме L2TP. Сервер вільний прийняти першу і відхилити другу, тому наполовину правильний профіль відмовляє пізніше, ніж ви чекаєте, і виглядає як інша помилка.
Phase 1: 3des-sha1-modp1024!
Phase 2: 3des-sha1!
Знак оклику — це синтаксис strongSwan для строгого запису: пропонуй лише це одне поєднання і нічого більше. Без нього запис приєднується до резервного списку, що добре, коли партнер сучасний, і контрпродуктивно, коли це пристрій з однією жорстко закодованою політикою. Вважайте наведену пару ілюстрацією форми, а не рекомендацією для чогось, що ви будуєте сьогодні.
Змініть одне поле, потім повторіть тест
На поточному плагіні найшвидший перший тест — повністю очистити обидва поля пропозицій і підключитися заново, бо наданий список за замовчуванням уже містить звичайні поєднання Windows і Apple. На старішому плагіні їх очищення повертає керування демону, який міг уже відкинути алгоритм, на якому наполягає ваш сервер, і відмова стає гіршою.
Якщо очищення не допомагає, задайте строгу пару, яку документує ваш сервер, по одній фазі за раз. Змініть фазу 1, підключіться заново і прочитайте журнал, перш ніж торкатися фази 2. Коли поєднання нарешті працює, запишіть його поруч із моделлю сервера і версією плагіна, бо значення за замовчуванням знову зсунуться, і саме ця нотатка перетворює наступне оновлення на п'ятихвилинну перевірку.