Три годинники в одному журналі VPN: клієнт, шлюз, збирач
Журнал клієнта, запис шлюзу й прибуття до збирача — це три події з трьома годинниками. Визначте джерело, перш ніж порівнювати позначки часу.
Хронологія інциденту VPN зазвичай починається з двох позначок часу, що розходяться на кілька хвилин, і з екрана, який показує іншу годину. Спокуса — вибрати одну правильною і переписати іншу. Обидві можуть бути правильними, бо їх записали різні годинники про різні події. Міф у тому, що у VPN один годинник; робота — з'ясувати, який компонент записав кожне поле.
Міф: у VPN один годинник
Клієнт записує подію, коли намагається встановити з'єднання. Шлюз записує подію, коли отримує або приймає цю спробу. Збирач записує час прибуття, коли отримує повідомлення шлюзу. Це три події, і кожну позначено тим годинником, якому довіряв компонент, що записує. Звести їх в одну хронологію — це зручність, яка приховує розбіжність, яку ви намагаєтеся пояснити.
Числа зазвичай різняться на секунди чи хвилини, і це нормально. Важливо, чи це затримка доставки, зсув годинника або справді інша подія. Щоб вирішити, на що ви дивитеся, потрібне походження кожного поля, а не твердіша думка про те, яка машина має рацію.
Спершу прочитайте джерело, потім значення
Перш ніж порівнювати значення, визначте, хто створив кожне з них і яке це поле. Повідомлення syslog несе позначку часу від джерела, як описує RFC 5424, і формат може також нести відомості про якість часу, що описують синхронізацію та точність. Той самий формат дозволяє джерелу взагалі не надсилати позначку часу, коли воно не може прочитати системний час, що саме по собі є корисним сигналом.
journalctl -o short-iso --utc -n 20
logger -t vpn-check "test event"
Клієнт може також надіслати значення часу як метадані застосунку, і служба, що його зберігає, має позначати його як повідомлене клієнтом, а не вважати незалежно перевіреним. Ця позначка — різниця між доказом і твердженням. Коли ви експортуєте журнали для справи, тримайте разом назву поля, джерело і зсув. Зведення їх до зручного місцевого часу знищує саме ту інформацію, яка вам потрібна.
Зупиніться, якщо не можете сказати, який компонент записав поле. Порівнювати його з чимось іншим — це здогад.
Показ часового поясу — не інший момент
Той самий момент, показаний як 10:00Z і як 18:00+08:00, не є розбіжністю, і ставлення до нього як до розбіжності втрачає півдня. Перетворіть обидва на UTC перед порівнянням і тримайте вихідний текст поруч із перетворенням. Десятковий дріб з одного боку і цілі секунди з іншого — теж не конфлікт. Точність — не правильність: значення з мілісекундами все одно може походити від годинника, що помиляється на хвилини.
date -u +%FT%TZ
timedatectl
Затримка доставки — інше звичайне пояснення. Шлюз фіксує, коли прийняв з'єднання, а збирач фіксує, коли повідомлення дійшло до нього, тому проміжок між ними — час передавання. Цей проміжок говорить про конвеєр журналів, а не про сеанс VPN. Позначте його як час прибуття, і він перестане конкурувати з часом події.
Зіставляйте, не переписуючи докази
Зберігайте початкові позначки часу і додайте похідний стовпець, якщо вам потрібен спільний вигляд. Пояснюйте перетворення в нотатках, а не редагуйте вихідні записи, бо джерело — це те, що перевірить пізніший рецензент. Зберігайте час прибуття збирача окремо там, де він існує.
chronyc tracking
journalctl --utc -u openvpn-client@work -n 50 --no-pager
Зміна годинника пристрою не є засобом приватності й не переписує записи, які вже зберігає інша система. Це також ускладнює порівняння доказів підтримки і може зламати перевірки сертифікатів і коду, що залежать від часу. Тримайте годинники синхронізованими для звичайної роботи, а будь-який навмисний зсув вважайте несправністю, яку треба дослідити. Якщо два записи виглядають не по порядку, подивіться на синхронізацію годинника і доставку, перш ніж будувати нову історію.
Міф, з яким треба розпрощатися, — що існує один час VPN. Запитайте, що записало кожне поле і що сталося, коли воно це зробило, і хронологія стане набором позначених спостережень, а не суперечністю.