Три часа в одном журнале 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. Спросите, что записало каждое поле и что произошло, когда оно это сделало, и хронология станет набором помеченных наблюдений, а не противоречием.