VPN 세션 타이머와 인증 토큰은 따로 만료된다
게이트웨이의 세션 한도, 유휴 타이머, 재사용 가능한 인증 토큰은 서로 다른 규칙으로 만료된다. 끊김 순간의 오류 줄이 그중 무엇이었는지 알려준다.
VPN 끊김은 클라이언트 쪽에서는 똑같아 보이지만 속으로는 아무것도 공유하지 않는 이유로 일어날 수 있다. 터널 세션이 끝났거나, 유휴 타이머가 작동했거나, 클라이언트가 재사용하던 자격 증명이 낡은 것이다. 각각 담당자도 해결책도 다른데, 끊김 순간의 오류 순서가 그것들을 구분하며 보통 한 줄이다.
하나의 터널에 세 개의 시계가 돌아가고, 그중 터널인 것은 하나뿐이다.
하나의 터널 위의 세 가지 시계
세션 시계는 게이트웨이에 속하며, 최대 연결 시간과 유휴 시간 제한 중 하나 또는 둘 다를 가지며, 어느 하나에 도달하면 터널을 끝낸다. 토큰 시계는 인증 시스템에 속하고, 사람 없이 자격 증명을 얼마나 오래 다시 제시할 수 있는지 결정한다. 경로 시계는 클라이언트와 게이트웨이 사이에 있는 NAT나 방화벽에 속하고, 끝났다고 보는 흐름의 매핑을 만료시킨다. 셋 모두 연결 끊김을 만들지만, 같은 로그 줄을 만드는 것은 하나도 없다.
VPN 개념인 것은 첫 번째뿐이다. 나머지 둘은 신원과 네트워크에서 빌려온 것이며, 흔히 그것과 혼동된다.
토큰이 실제로 재사용되는 방식
OpenVPN 서버는 최초 로그인 뒤 인증 토큰을 발급할 수 있어서, 제어 채널 재협상이 사용자에게 자격 증명을 다시 요구하지 않는다. 클라이언트는 그 토큰을 계속 제시하고 서버는 그것이 얼마나 오래 허용되는지 결정한다. 토큰 수명이 재협상 간격보다 짧으면 다음 재협상이 실패하고, 클라이언트는 시간 초과 대신 인증 오류를 보고한다. 같은 프로필이 한 시간 동안 작동하다가 정해진 지점에서 실패하는 이유가 여기에 있다.
재협상 간격은 별도 설정이다. 그것을 바꾸면 토큰을 제시하는 시점이 옮겨질 뿐, 수명이 바뀌지는 않는다.
클라이언트 쪽에서 본 각 만료의 모습
세션 시간 초과는 보통 서버 쪽 이유를 동반한 깔끔한 끊김으로 오고, 대개 예측 가능한 시간 뒤에 인증 오류 없이 일어난다. 유휴 시간 초과는 침묵처럼 보이며, 터널이 트래픽을 나르지 않게 되고 그러다 키프얼라이브가 포기한다. 토큰 만료는 일 초 전까지 작동하던 세션 한가운데에서 AUTH_FAILED로 온다.
줄을 읽고 나서 시계를 보라. 설정된 값과 일치하는 지속 시간은 우연이 아니다.
저장된 비밀번호가 도움이 되지 않는 이유
캐시된 비밀번호는 비밀번호에 대한 요구에 응답한다. 토큰 수명을 늘리지 않으며, 두 번째 요소나 기기 상태 확인에 대한 요구를 충족하지도 않는다. 재시도 빈도를 높이거나 연결 시간 제한을 줄이거나 프로필을 다시 가져와도 신원 시스템이 자격 증명을 얼마나 오래 받아들일지는 달라지지 않는다.
지속되는 해결책은 올바른 객체에 올바른 수명을 두는 것, 또는 사람 없이 필요한 요구를 완료할 수 있는 클라이언트 흐름이다.
무엇을 문서화하고 시험할지
적어 둘 값은 세 가지로, 게이트웨이의 세션 및 유휴 한도, 토큰 수명, 경로에서 가장 짧은 관련 매핑 시간 제한이다. 그다음 한 값을 줄여 각 만료를 일부러 시험하고, 클라이언트가 무엇을 보고하는지 관찰하고, 값을 되돌린다. 경계마다 사용자가 무엇을 해야 하는지 확인해야 하며, 매시간 전체 로그인을 요구하는 것은 누군가 일부러 내려야 했던 정책 결정이다.
인증 이벤트가 전혀 없는 끊김은 경로나 유휴 타이머의 것이며, 그것은 다른 증거로 하는 다른 조사다.