WireGuard 핸드셰이크 경과 시간은 세션 타임아웃이 아니다
키 재생성 타이머가 관리하는 것은 키이며 사용자 접근이 아니다. latest-handshakes 를 읽으면 한 피어의 프로토콜 상태를 알 수 있을 뿐, 그 권한이 만료되었는지는 알 수 없다.
트래픽을 더 이상 전달하지 않는 피어도 그 때문에 키를 잃지는 않으며, 새 핸드셰이크가 누군가 사용 권한을 갱신했다는 것을 증명하지도 않는다. WireGuard 의 타이머는 키를 새로 유지하고 패킷을 흐르게 하기 위한 것이며, 정해진 시간이 지나면 로그아웃하는 사용자를 모델링하지 않는다. 여기서는 세 가지 질문이 뒤섞이고, 각각은 다른 증거를 가진다. 이 구분이 어떤 도구를 쓸지 결정한다.
세 가지 질문, 하나의 명령 출력
운영자는 피어에 도달할 수 있는지, 활동한 적이 있는지, 아직 허용되는지를 묻는다. 첫째는 프로토콜 상태, 둘째는 트래픽 카운터, 셋째는 권한이다. WireGuard 인터페이스에서 읽을 수 있는 것은 처음 두 개뿐이며, 그것들이 세 가지 모두의 답으로 쓰인다.
| Question | Evidence it needs | What does not answer it |
|---|---|---|
| Is the peer reachable now? | A recent handshake and a working return path | An interface that exists |
| Has it been active? | Transfer counters moving over time | A handshake timestamp alone |
| Is access still granted? | The configuration or controller that authorizes it | Any protocol timer |
각 행을 세 개의 별도 조사로 읽어야 한다. 처음 두 개는 비용이 적고 인터페이스 자체의 카운터로 답할 수 있다. 셋째는 접근을 부여하는 구성이 필요하고, 그것은 다른 파일이나 다른 시스템에 있다. 잘못된 행을 고르는 것은 프로토콜 타이머에게 정책의 일을 시키는 것이다.
타이머가 실제로 관리하는 것
프로토콜은 핸드셰이크 재시도, 전송 키 회전, 오래된 키로 보호된 패킷의 거부에 대한 상수를 정의한다. 이것들은 트래픽과 상태에 반응하며, 달력이나 17:00 까지 연결해도 된다는 정책에 반응하지 않는다. 그래서 유휴 피어가 몇 시간 동안 비활성으로 보이면서도 권한을 유지할 수 있다.
PersistentKeepalive 는 없는 타임아웃으로 흔히 오해된다. NAT 매핑을 살려 두기 위해 인증된 빈 패킷을 보내며, 값을 영으로 두면 아무것도 취소하지 않은 채 그 패킷이 멈춘다.
피어별 실행 상태를 읽되, 주석이 아니라 공개 키를 사용한다:
wg show wg0 latest-handshakes
wg show wg0 transfer
최근 핸드셰이크는 핸드셰이크 하나가 완료되었음을 말한다.터널 뒤의 사설 서비스에 도달할 수 있다는 뜻은 아니다, 오래된 타임스탬프는 그저 조용한 피어의 것일 수 있다.
유휴 피어가 로그아웃한 피어가 아닌 이유
WireGuard 에는 시작과 끝이 있는 세션 객체가 없다. 피어는 허용된 주소를 가진 공개 키이며, 그 트래픽을 보호하는 핸드셰이크는 필요할 때 교체되고 사용자에게 보이는 로그인은 없다. 최근 트래픽이 없다는 것을 로그아웃으로 보는 것은 모델을 뒤집는 것이다.
진짜 불만이 유휴 상태 후 연결이 실패한다는 것이라면, 원인은 보통 다른 곳, 곧 만료된 NAT 매핑, 잠든 기기, 상태를 버린 방화벽 같은 데에 있다. 반대편에서 트래픽을 보내고 새 흐름을 시작해 시험하고, 무엇이 달라지는지 비교한다.
기한은 권한이 있는 곳에 둔다
접근이 특정 시각에 끝나야 한다면, 기한은 접근을 부여하는 쪽에 속한다. 피어 구성을 발급하는 컨트롤러는 새 구성을 내주기 전에 갱신된 승인을 요구할 수 있으며, 이는 컨트롤러의 속성이지 인터페이스의 숨은 매개변수가 아니다.
수동으로 관리하는 피어의 경우 삭제는 실행 중인 인터페이스와 저장된 구성, 두 곳에 도달해야 한다. 실행 중에만 피어를 삭제하면 재시작이나 조정 루프에 의해 되돌려지고, 만료되었다고 생각한 정체성이 복원된다:
sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0
그다음에는 라벨이 아니라 경계를 시험한다. 기한 후에 피어가 거부되는지, 갱신 경로가 동작하는지, 상태가 관리자 재로딩 후에도 남는지 확인한다. 핸드셰이크 경과 시간은 유용한 운영 신호이며 접근 기록은 아니다.