openvpn --errors-to-stderr — це параметр запуску, а не помилка
Якщо ви бачите --errors-to-stderr у командному рядку, це не означає, що щось не вдалося. Визначте, чи читаєте ви рядок запуску, чи вивід процесу, і потім перевірте.
Командний рядок, що містить --errors-to-stderr виглядає як скарга, але нею не є, виглядає як скарга, але нею не є. Слово належить до назви параметра — так само, як назва файлу журналу нічого не каже про те, що в ньому записано. Перш ніж змінювати будь-яку конфігурацію, встановіть, що ви насправді читаєте.
Рішення має три гілки: рядок — це сам запуск, рядок — це вивід, який надрукувала програма, або рядок — це текст, який оболонка повторила до запуску VPN. Кожна гілка вказує на інше місце для перевірки, і лише одна з них — власне повідомлення VPN.
Назва параметра — не повідомлення про стан
Для Community OpenVPN, --errors-to-stderr спрямовує вивід помилок до стандартної помилки замість стандартного виводу. Це вибір потоку, а не фільтр важливості, і він не створює помилку. Пізніший --log або --log-append може перенаправити ті самі повідомлення у файл, тому ефект прапорця залежить від решти команди. Довідка з журналювання з джерела визначає цей порядок.
Отже, наявність прапорця каже, куди підуть помилки. Вона не каже, що одна сталася.
Рядок запуску чи вивід процесу
Почніть із питання, хто надрукував текст. Модуль служби, пакет застосунку або оболонка часто повторюють увесь argv до того, як процес VPN щось запише. Це відлуння не відрізнити від рядка стану, якщо ви бачите лише фрагмент.
Якщо рядок прийшов від оболонки, VPN ще не працював і йому нічого повідомляти. Дивіться нижче у виводі перше повідомлення з часовою позначкою або назвою підсистеми.
Якщо рядок прийшов від процесу VPN, це все ще лише виклик. OpenVPN не друкує власний командний рядок як помилку, а важливі повідомлення йдуть після нього.
Знайдіть процес і його результат
Встановіть, чи процес досі працює. Клієнт, який працює й повторює спроби, виглядає зовсім інакше, ніж той, що одразу завершився, і той самий командний рядок стоїть перед обома.
Потім читайте результат через компонент, якому належить процес. У systemd це журнал модуля; у настільному застосунку — власний журнал або консоль застосунку. Код виходу разом з останніми повідомленнями відповідає на питання, на яке назва параметра лише натякає.
Помилка розбору конфігурації, відсутній файл, відхилені облікові дані й тайм-аут партнера — чотири різні події. Вони надходять одним потоком. Їм потрібні чотири різні виправлення. Визначте, яке у вас, перш ніж торкатися профілю, і цитуйте точне повідомлення, коли просите про допомогу.
Коли прапорець заслуговує свого місця
Прапорець заслуговує свого місця, коли стандартний вивід несе дані й помилки не повинні його забруднювати, або коли оболонка захоплює два потоки окремо. У сеансі на передньому плані в терміналі обидва потоки опиняються перед вами. У такому разі розрізнення рідко змінює те, що ви робите.
Залиште його, якщо навколишній скрипт залежить від розділення. Видалення через те, що назва виглядає тривожно, змінює місце появи повідомлень і більше нічого не виправляє.
Що не змінювати
Не вважайте параметр кроком ремонту. Його видалення не може виправити сертифікат, маршрут або збій автентифікації.
Якщо виклик містить --config stdin, конфігурація подається через стандартний ввід. Це окреме рішення про те, як надається файл. Змінюйте по одній речі за раз і перечитайте фактичне повідомлення, перш ніж змінювати другу.