Стиснення в OpenVPN: відмовитися, лише приймати чи повний LZO?
comp-lzo no — не сувора відмова. Порівняйте відмову від стиснення, однобічний прийом під час міграції та його збереження, а потім перевірте, що робить offload.
Три рядки в профілі виглядають так, ніби всі вони вимикають стиснення, і лише один справді це робить. Різниця важлива, бо попередження, яке ви хочете заглушити, є симптомом, а політика вирішує, чи може інша сторона ще стискати. Порівняння варіантів на одній осі, тобто що кожен дозволяє після зміни, знімає більшу частину невизначеності. Який обрати, залежить від того, чи ви мігруєте, чи вже облаштовуєтесь.
Три політики, які у файлі конфігурації виглядають однаково
Кожен варіант відповідає на інше питання. allow-compression no одразу відмовляє в стиснених корисних даних, allow-compression asym розпаковує те, що надходить, і ніколи не стискає те, що виходить, а старий comp-lzo no залишає місце для push з боку партнера, який вмикає стиснення. Лише перший — політика, яку сервер не може перекрити.
Запишіть усі три в таблицю до вибору, бо назви досить близькі, щоб ввести перевіряльника в оману. Два з них досі виконують код розпакування на прийнятих пакетах, і саме про це йдеться в аргументі безпеки. Третій прибирає можливість, а не обмежує її напрямок. Якщо запис про зміну каже, що стиснення вимкнено, цьому реченню відповідає рівно один рядок.
Попередження, з якого почалося розслідування, не є метою. Заглушити його, залишивши дозвільну політику, означає чистий журнал і незмінну експозицію.
| Setting | What it permits | When it is the right answer |
|---|---|---|
allow-compression no | No compressed payloads, and no compression framing under offload | Both ends can be changed now |
allow-compression asym | Decompress inbound only | A dated migration while peers catch up |
comp-lzo no | Off locally, still pushable by a peer | Legacy compatibility you can still justify |
Що означає no у старому варіанті LZO
У застарілому варіанті LZO no вимикає стиснення для локальної сторони, не забороняючи іншій стороні ввімкнути його там, де політика це дозволяє. Саме через цю асиметрію перенесення профілю на сувору відмову змінює поведінку так, як лабораторний тест з одним сервером може ніколи не виявити.
Питання безпеки є умовним, а не абсолютним. Коли зловмисник може розмістити вибраний відкритий текст поруч із секретом і спостерігати, як стиснення змінює розмір зашифрованого трафіку, інформаційний канал існує. Перехід з LZO на LZ4 змінює алгоритм і кадрування, а не цей механізм.
Тож чесна постановка стосується того, що ви готові дозволити, а не того, який алгоритм зараз рекомендований. Сувора відмова — єдиний варіант, що не залежить від співпраці іншої сторони.
Лише прийом — це стан міграції, а не пункт призначення
Асиметричний прийом існує для того, щоб одна сторона могла припинити стискати, поки інша ще цього очікує. Це міст, а мости потребують дати завершення й власника. Записуйте, які партнери ще надсилають стиснутий трафік, бо політика дозволяє саме такий трафік. Без цього списку стан міграції через інерцію стає постійною конфігурацією.
Клієнт не може змусити несумісний сервер відмовитися від старого кадрування, редагуючи власний файл. Напрямок push визначається на сервері, тому міграція насправді завершується в конфігурації сервера та його файлах для кожного клієнта.
Режими stub зберігають кадрування, але пропускають саму роботу стиснення, і вони не є прямою заміною старішого варіанта. Перевірте їх на найстарішому партнері, якого вам ще треба підтримувати, перш ніж зупинитися на одному.
Де offload каналу даних змінює відповідь
Offload каналу даних переносить обробку пакетів у ядро, і профіль, який досі залежить від кадрування стиснення, може не вписатися в цей шлях. Збій не завжди гучний: клієнт підключається, а потім поводиться інакше, ніж тунель, який ви тестували.
Перевіряйте, яка реалізація активна до і після зміни, а не лише те, чи вдається з'єднання. Коли шлях з offload відмовляє в кадруванні стиснення, сувора політика відмови та розгортання з offload узгоджуються, а дозвільна політика та розгортання з offload — ні.
Це поєднання заслуговує на окремий тест, бо саме там файл, який виглядає правильно, мовчки виявляється не тим, що використовується. Порівняйте узгоджений стан із наміром, записаним у профілі, бо лише одне з них видно в журналі.
Виберіть політику, а потім перевірте узгоджений результат
Виберіть сувору відмову, коли можете змінити обидві сторони, асиметричний прийом, коли ще не можете, і повне стиснення лише тоді, коли можете пояснити, чому експозиція прийнятна. Потім перевірте, про що домовилися, а не те, що написано у файлі. Тихіший журнал — доказ лише тоді, коли він відповідає політиці, яку ви мали намір застосувати.
Тримайте рішення поруч із профілем, до якого воно застосовується, з датою та партнерами, які ще звільнені. Через півроку ця нотатка — різниця між навмисним винятком і пригодою, яку ніхто не може датувати. Напишіть її в тому самому репозиторії, що й профіль, щоб наступний редактор побачив причину до директиви.