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 시간이 하나라는 것입니다. 각 필드를 무엇이 기록했고 그때 무슨 일이 있었는지 물으면, 타임라인은 모순이 아니라 레이블이 붙은 관찰의 집합이 됩니다.

관련 글