OpenVPN запустився, але нічого не вивів: спершу перевірте log-append
Тиша під час ручного запуску — не збій. Прочитайте log і log-append у завантаженому профілі, потім зіставте файл та його часові мітки з процесом.
Ви запускаєте OpenVPN з оболонки з файлом конфігурації, а термінал стоїть без жодного виводу. Ні банера, ні помилки, ні запрошення. Здається, що запуск не вдався, тому ви запускаєте ще одну копію, потім ще одну, і на машині лишається кілька напівналаштованих примірників. Перш ніж це робити, перевірте в профілі директиву, яка вже перенаправила журнал в інше місце. Тиша — властивість консолі, а не процесу.
Тиша має два дуже різні пояснення
Перше: процес працює нормально і пише у файл, за яким ви не стежите. Друге: він одразу завершився з помилкою, записаною в тому самому файлі.
Обидва лишають порожній термінал, і їх розділяє одне питання: чи є зараз процес і що у файлі, до якого йому наказано писати. Дайте відповідь на це, перш ніж знову торкатися конфігурації. Перезапуск заради виводу — це те, як два примірники починають битися за один тунельний пристрій і той самий порт, що породжує помилки, які не мають нічого спільного з початковою проблемою.
Знайдіть директиву, потім знайдіть процес.
ps -o pid,args= -C openvpn
grep -nE '^\s*(log|log-append|cd|daemon|verb)\b' /etc/openvpn/server/server.confЗнайдіть місце призначення, яке використовує робочий процес
Читайте профіль, з яким процес насправді було запущено, а не той, який ви редагували. Примірник під керуванням служби зазвичай завантажує інший шлях і працює в іншому робочому каталозі, тому відносне ім'я файлу розв'язується десь там, де ви не очікували.
Явна cd директива робить цю різницю ще різкішою, бо відносний шлях зсувається разом зі зміною каталогу. Якщо цю конфігурацію ви успадкували, файл може лежати там, де зараз ніхто не став би шукати.
Порівняйте час зміни файлу з моментом запуску. Журнал минулого тижня — це доказ про минулий тиждень. Потім прочитайте останні рядки зміненого файлу і вважайте те, що там є, зниклим повідомленням про запуск.
log проти log-append: доказ і стирання
log-append дописує до того, що вже є у файлі. log відкриває файл для запису і обрізає його, тому перемикання між ними може знищити запуск, який ви збиралися прочитати.
Якщо хтось змінив директиву під час налагодження, попередній доказ уже зник, і розмір файлу виглядатиме підозріло малим. Це варто знати, перш ніж порівнювати два запуски й робити висновок, що щось змінилося. Видаліть журнал навмисно або збережіть його, але знайте, що саме ви зробили. Доказ, який ви прибрали свідомо, зрозуміти легше, ніж той, що ви втратили випадково.
Жоден варіант не створює відсутніх батьківських каталогів і не дає доступу через дозволи файлової системи чи пісочницю служби. Шлях, який у конфігурації виглядає правильним, усе одно може бути недоступним для запису обліковому запису, під яким працює демон, і тоді демон може зазнати збою, не встигнувши нічого повідомити. Перевірте, чи існує каталог і хто його власник, перш ніж вважати, що проблема в імені файлу.
Коли обгортка служби перехоплює вивід
У systemd стандартний вивід і помилки потрапляють до журналу, якщо явна директива файлу не має пріоритету, а обгортка постачальника може перехопити їх зовсім в іншому місці.
Ось чому той самий профіль поводиться по-різному з оболонки та з unit. Середовище unit, його робочий каталог і стандартні потоки відрізняються від вашої інтерактивної оболонки. Відносний шлях може розв'язатися в одному контексті й нікуди не потрапити в іншому. Коли ці двоє не згодні, читайте визначення unit, а не профіль.
Порівняйте два способи запуску, замість того щоб робити висновок, що один із них зламано. Прочитайте командний рядок unit та його середовище, потім прочитайте журнал за той самий проміжок часу. Якщо обгортка перенаправляє вивід у свій файл, тепер цей файл — ваш журнал, а директиви OpenVPN не мають значення для того, куди пішли повідомлення.
Підвищуйте докладність лише тоді, коли можете її прочитати
Підвищення докладності до того, як знайдено місце призначення, лише створює більше тексту там, куди ви не дивитеся.
Коли ви знаєте, куди потрапляє вивід, помірний рівень показує розбір профілю та спробу з'єднання. Двох або трьох достатньо для проблеми запуску. Вищі рівні виправдані, коли збій є деталлю переговорів, і вони також швидко збільшують файл.
Потім прочитайте справжню помилку. Тихий термінал нічого не доводить щодо того, чи піднявся тунель, а збій, записаний у файлі, — саме той, який варто виправити.