Служба OpenVPN не запускається з профілем, який відкриває GUI: п’ять перевірок
Той самий профіль, інший засіб запуску. Перевірте робочий каталог, обліковий запис служби, атрибут зашифрованого файлу, власника, а потім обгортку.
Два засоби запуску відкривають той самий профіль на одній машині, і підключається лише GUI. Файл цілий, і інсталятор, ймовірно, справний; різниця в контексті, який кожен засіб запуску надає openvpn.exe. Робочий каталог, ідентичність облікового запису й атрибути файлу подорожують разом із цим контекстом. Перевіряйте їх у цьому порядку й зупиніться на першому, що пояснює помилку.
Підтвердьте, який засіб запуску не працює
Почніть із доведення розподілу. Якщо GUI підключається, а служба ні за того самого шляху до профілю, файл комусь доступний для читання, і питання стає таким: хто й звідки його читає. Якщо не вдається обом, профіль пошкоджено і ніщо з цього не стосується. Запишіть назву служби й точний профіль, який їй було наказано завантажити.
Служба, спрямована на власний каталог автозапуску, може не завантажувати файл, який ви тримаєте відкритим у редакторі. Порівняйте шлях у конфігурації служби зі шляхом у GUI символ за символом, бо назви каталогу в кінці або іншої літери диска достатньо, щоб завести вас у хибну гілку.
Де розв’язуються відносні шляхи
Профіль, який посилається на ca.crt або допоміжний скрипт голим ім’ям, вимагає пошуку відносно того місця, де перебуває процес. GUI стартує в каталозі конфігурації, тож ці імена розв’язуються. Служба, запущена менеджером служб, не має такої відправної точки, і пошук не вдається ще до читання будь-якого сертифіката. Саме тому той самий профіль працює в одному засобі запуску і не працює в іншому.
Дайте обгортці каталог для старту або зробіть кожне посилання абсолютним. Відтворення контексту GUI у командному рядку виглядає так:
openvpn --cd "C:\VPN\profiles\office" --config "C:\VPN\profiles\office\office.ovpn"
Підвищення докладності цієї команди показує точний шлях, який було спробувано. Зробіть це до зміни дозволів, бо відсутній файл і відмовлене читання потребують різних виправлень. Типовий журнал їх не розрізняє. Один додатковий прапорець економить годину здогадів.
Коли ідентичність служби не може читати
Служба працює від імені системної ідентичності, а не вашої. ACL, який дає вашому користувачу повний контроль і нікому більше, там не спрацьовує, хоч у вашій сесії працює бездоганно. Профіль, що лежить на зіставленому диску або автентифікованій спільній папці, не працює з тієї ж причини. Підтвердьте дозволи файлу, перш ніж дивитися на будь-що інше.
Перевірка — це читання чинних дозволів плюс читання, спробуване від ідентичності служби. Виконайте першу частину з підвищеного командного рядка:
icacls "C:\VPN\profiles\office\office.ovpn"
Потім спробуйте те саме читання від ідентичності служби, наприклад за допомогою psexec -s -i із Sysinternals, і спостерігайте, чи файл відкривається. Якщо ні, жодне виправлення шляху не допоможе. Виправте ACL або перемістіть профіль туди, де ідентичність служби може його читати.
Шифрування на рівні файлу — другий, рідший випадок. Профіль, позначений атрибутом Encrypting File System, прозоро розшифровується для користувача, який його зашифрував, і лишається нечитабельним для облікового запису служби. Саме тому той самий файл відкривається у вашому редакторі, а не під службою.
Атрибут видно з підвищеного командного рядка, і його перевірка не відкриває профіль. Виконайте обидві команди й прочитайте вивід:
cipher /s:"C:\VPN\profiles\office"
attrib "C:\VPN\profiles\office\office.ovpn"
Зняття атрибута робить файл читабельним, але також знімає захист, який він ніс. Якщо профіль має лишитися захищеним, покладіть таємний матеріал туди, де ідентичність служби має явний дозвіл, замість покладатися на шифрування окремих користувачів. Така схема переживає зміну пароля і робить доступ доступним для перегляду комусь іншому, ніж особа, що зашифрувала файл.
Як вирішити, хто володіє тунелем
GUI може запитати пароль і прочитати сертифікат із вашого сховища користувача. Служба не може ні того, ні того, тож профіль, який залежить від інтерактивного секрету, ніколи не запуститься без нагляду, скільки б шляхи не виправляли. Ця межа — проєктне рішення, а не дефект, який треба обходити. Виберіть одного власника, перш ніж щось інше змінювати.
Якщо тунель має бути піднятий до входу, дайте службі джерело облікових даних без нагляду й власну копію профілю. Якщо він потрібен лише поки ви за столом, тримайте його в GUI і приберіть копію служби. Обидва одразу — це конфігурація, що породжує конфлікти адаптерів і дубльовані маршрути.
Цей конфлікт зазвичай діагностують як помилку конфігурації, а не як двох власників, що б’ються за один адаптер. Журнал подій покаже один процес, який не може відкрити пристрій TAP, що виглядає як проблема дозволів, але нею не є. Спочатку порахуйте власників.
Що насправді запускає обгортка служби
Точка входу служби — невелика обгортка, яка читає власні збережені параметри, а потім запускає openvpn.exe. Коли командний рядок у журналі подій не збігається з вашим очікуванням, саме ці значення треба оглянути. Перевстановлення скидає їх до типових і знищує докази. Спершу прочитайте їх.
Значення живуть у реєстрі під власним ключем служби, а sc qc показує шлях до бінарного файлу, який запустить менеджер служб. Порівняйте цей шлях зі збереженою конфігурацією обгортки, перш ніж редагувати будь-що з них.
Заміна обгортки на скрипт, який ви контролюєте, більш інвазивна, але вона згортає чинний командний рядок в один читабельний файл. Завершіть перезапуском, потім читайте журнал профілю, доки не з’явиться перший успішний рядок старту. Стан служби «працює» означає лише те, що обгортка не вийшла, і це також правда, коли її дочірній процес одразу загинув.