У Windows питання "де мій профіль OpenVPN" має дві різні відповіді, і неправильний вибір коштує цілого дня. Спільнотний OpenVPN GUI вважає каталог своїм списком профілів: кожен файл .ovpn у налаштованій теці з'являється в меню в треї, а видалений із цієї теки файл зникає. OpenVPN Connect працює зі сховища імпорту, тому зберігає профіль, який ви видалили з диска, і ігнорує файл, який ви туди скопіювали. Порівняння нижче — те, яким я користуюся, щоб вирішити, яку теку відкрити, перш ніж щось чіпати.

Список теки проти сховища імпорту

Спільнотний GUI перелічує файли під час запуску: він читає один каталог конфігурації, вибраний під час встановлення, і файл .ovpn, що лежить там, є профілем. Закрийте клієнт, скопіюйте файл у цю теку, запустіть його знову, і запис буде в меню.

Connect натомість будує свій список із записів, створених під час імпорту, тому скопійований файл невидимий, а імпортований профіль переживає видалення початкового завантаження. Саме ця єдина різниця пояснює більшість повідомлень про те, що два клієнти зберігають профілі в різних місцях, бо так і є.

Спільнотний GUI: яка тека насправді використовується

Важливі дві теки. Встановлення для одного користувача читає %USERPROFILE%\OpenVPN\config; встановлення для всіх користувачів читає C:\Program Files\OpenVPN\config, або шлях x86, коли клієнт 32-bit. Якщо профіль з'являється лише для одного облікового запису Windows, він у теці для одного користувача, і інший запис його ніколи не побачить.

Не виводьте шлях із інсталятора. GUI приймає аргумент --config_dir і пам'ятає каталог, з яким був запущений, тому ярлик може вказувати зовсім в інше місце. Перевірте ціль ярлика й поле Start in або налаштування GUI, перш ніж створювати будь-який файл.

Видалення — це видалення файлів. Спершу закрийте GUI, щоб він не тримав запис у пам'яті, видаліть .ovpn разом із будь-якими файлами сертифіката чи ключа, що лежать поруч, а потім знову запустіть клієнт.

Тека для всіх користувачів потребує видалення з підвищеними правами. Видалення, яке там мовчки нічого не робить, — це UAC, а не помилка клієнта.

Connect: сховище імпорту й подвійна пастка AppData

Поточні збірки 2.x і 3.x зберігають профілі в %APPDATA%\OpenVPN Connect\profiles. Збірки близько 2.5 використовували натомість %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile, тому старіші й новіші відповіді на форумах виглядають суперечливими. Машина, оновлена на місці, все ще може мати обидва варіанти.

Шляхи спотворюються під час переказу. %AppData% уже розгортається в AppData\Roaming, тому запис %AppData%\Roaming\OpenVPN Connect\profiles розширюється до AppData\Roaming\Roaming і нікуди не вказує. Використовуйте змінну або буквальний шлях, ніколи не суміш двох.

Видаляйте через клієнт: відкрийте Profiles, скористайтеся значком олівця, виберіть Delete. Це видаляє запис і збережену копію разом. Видалення теки, поки Connect працює, може залишити запис, який нічого не відкриває, і це скарга "profile still shows up" в іншій її формі.

Імпортована копія — та, яку запускає клієнт. Редагування .ovpn, залишеного в Downloads, нічого не змінює, бо Connect читає свою збережену копію; щоб змінити remote або cipher, редагуйте профіль усередині клієнта, або відредагуйте файл і імпортуйте його знову .

Чому видалений профіль повертається

Звичайна причина — дві інсталяції одного сімейства клієнтів. GUI для одного користувача й GUI для всіх користувачів мають окремі каталоги конфігурації, тому видалення з одного залишає інший недоторканим, і в треї досі відображається ім'я. Programs and Features — місце, де ви переконуєтеся, чи встановлені обидва.

Друга причина — профіль, якого ніколи не було в теці, яку ви перевірили. Відкриття .ovpn один раз із мережевої теки або теки Downloads може скопіювати його до каталогу конфігурації для одного користувача, а імпортовані профілі Connect існують лише в AppData. Перш ніж щось редагувати, пошукайте ім'я файлу і в %USERPROFILE%, і в %APPDATA%. Тека профілю зазвичай містить закритий ключ поруч із .ovpn, тому ніколи не вставляйте теку в тікет чи чат, щоб довести, який профіль ви видалили, — натомість назвіть ім'я файлу й мітку часу.

Старіші збірки GUI також зберігають налаштування клієнта в реєстрі. Якщо в треї досі відображається ім'я після зникнення файлу і присутня лише одна інсталяція, один раз перезапустіть клієнт і перевірте каталог конфігурації ярлика, перш ніж думати про правку ключів реєстру.

Два тунелі одночасно: спершу адаптери, потім маршрут

GUI може тримати кілька з'єднань, по одному на віртуальний адаптер; додайте адаптери з пункту меню Start, який встановлює TAP-Windows6, потім підтвердьте кількість у Network Connections, бо двом одночасним тунелям потрібні два адаптери, і обидва мають отримувати адресу автоматично. Маршрутизація — жорсткіша межа. Два профілі, кожен із яких перенаправляє весь трафік, конкурують за маршрут за замовчуванням, і володіти ним може лише один, тому ви отримуєте періодичні збої замість двох робочих тунелів. Залиште один повний тунель, а другому дайте профіль split-tunnel, який штовхає лише власну підмережу.

Перекривні приватні діапазони не можна виправити додаванням адаптера. Якщо обидва сервери видають 10.8.0.0/24, другий тунель конфліктує на рівні адреси, і жодна конфігурація клієнта їх не розділить.

Імена адаптерів кажуть, на що ви дивитеся. Get-NetAdapter у PowerShell перелічує адаптери TAP-Windows і адаптер Wintun за іменем, що швидше, ніж рахувати значки в Network Connections, коли тунель піднявся на неправильному.

Запуск іменованого профілю зі скрипта

GUI бере ім'я профілю відносно свого каталогу конфігурації, тому лаунчер виглядає так: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn". Абсолютний шлях або процес, запущений в іншому робочому каталозі, тихо зазнає невдачі, тому ярлик, що працює подвійним клацанням, ламається під Task Scheduler.

Задайте робочий каталог замість надії. У лаунчері AutoHotkey це SetWorkingDir, C:\Program Files\OpenVPN\config; у Task Scheduler це поле Start in дії. Передача --config_dir з тим самим шляхом робить лаунчер незалежним від обох.

Перш ніж завершити, експортуйте профіль, запишіть його адаптер, підмережу й підмережу, яку він маршрутизує, і тримайте сертифікати кожного клієнта в його власній підтеці. Потім переконайтеся, що тека належить клієнту, який ви насправді запускаєте, і видаляйте через клієнт, коли в цього клієнта є сховище імпорту. Саме цей порядок не дає тому самому профілю знову з'явитися після наступного перезавантаження.

Схожі статті