VPN 과금 논의에서는 늘 두 가지 질문이 뒤섞입니다. 이 사용자가 접속을 허용받았는가, 그리고 실제로 무엇을 했는가. 첫 번째는 인증이 답합니다. 두 번째는 시작하고 갱신되고 끝나는 회계 레코드가 필요합니다. 로그인 성공은 첫 번째를 증명하고 두 번째에 대해서는 아무 말도 하지 않으므로, 동작하는 RADIUS 인증 설정도 빈 사용량 보고서를 만들 수 있습니다.

두 가지 다른 질문

인증은 연결이 시작될 수 있는지 결정하고, 주소 풀이나 그룹 같은 속성과 함께 판정을 돌려줍니다. 회계는 뒤따른 서비스를 하나의 세션에 묶인 일련의 이벤트로 기록합니다.

둘은 같은 프로토콜을 지나 보통 같은 서버로 갑니다. 그래서 사람들은 하나가 다른 하나를 함축한다고 가정합니다.

접속 요청에는 세션의 지속 시간이 담기지 않고, Stop 레코드는 사용자를 받아들였어야 했는지를 다시 결정하지 않습니다. 둘을 별개의 계약으로 다루면 통합 작업이 드러납니다. 한 경로는 결정이 필요하고, 다른 경로는 시작과 중간과 끝이 있는 수명 주기가 필요합니다.

세 가지 레코드 유형이 주는 것

Start 레코드는 세션을 열고, Interim-Update는 세션이 열려 있는 동안 활동을 보고하며, Stop은 세션을 닫습니다. 셋 모두 세션 식별자를 지니므로 수신자는 이들을 하나의 서비스 이벤트에 연결할 수 있습니다.

그 식별자가 둘 사이의 유일하게 신뢰할 수 있는 연결입니다. 같은 사용자 이름이 연속으로 또는 병렬로 여러 세션을 가질 수 있기 때문입니다. 저장 구조는 계정 이름이 아니라 이 식별자를 중심으로 설계하십시오.

레코드를 확인 응답하는 것과 그것을 잘 저장하는 것은 다른 문제입니다. 회계 명세는 레코드를 기록할 수 없을 때 확인 응답을 금지하므로, 응답은 수신자가 책임을 받아들였다는 사실을 알려 줍니다. 그러나 이후의 보고 작업, 대시보드, 청구 내보내기가 그것을 올바르게 소비했는지는 알려 주지 않습니다.

사용자 이름이 세션이 아닌 이유

한 사람이 아침에는 노트북에서, 오후에는 휴대전화에서 접속하고 두 세션은 같은 계정 이름을 지닙니다. 짝이 되는 Stop 없이 도착한 Start는 이름을 조회해 가장 오래된 열린 행을 고르는 방식으로 닫을 수 없습니다.

그 지름길이 바로 사용량 보고서에 불가능한 지속 시간이 생기는 방식입니다.

네트워크 접속 서버의 정체성을 세션 식별자와 함께 유지하십시오. 두 서버가 서로 다른 맥락에서 같은 값을 부여할 수 있고, 식별자만으로 병합하면 무관한 세션이 합쳐질 수 있습니다. 세션이 정상적으로 끝나지 않을 때 조정 정책이 닫는 방식을 결정해야 하며, 그 결정은 설계에 속하고 한 달에 한 번 하는 수동 데이터베이스 편집에 속하지 않습니다.

PAM이 맞는 곳과 맞지 않는 곳

OpenVPN의 인증 플러그인은 PAM의 인증 단계와 계정 관리 단계를 호출합니다. 계정 단계는 자격을 확인하며, 그 이름이 사용량 회계를 뜻하지는 않고, 플러그인은 PAM의 세션 열기와 닫기 후크를 구동하지 않습니다.

일부 PAM RADIUS 모듈은 그 세션 후크를 통해 회계 레코드를 보낼 수 있고, 이는 애플리케이션이 실제로 그것들을 호출할 때만 동작합니다.

따라서 그런 모듈을 인증 스택에 추가해도 연결 해제 이벤트는 생기지 않습니다. 전체 수명 주기가 필요하다면 그것을 소유한 통합을 고르십시오. 연결 상태가 바뀔 때 Start, Interim-Update, Stop을 내보내는 플러그인이나 지원되는 빌드입니다. 유지 관리 상태와 수신자를 사용할 수 없을 때의 문서화된 동작을 확인하십시오. 레코드를 조용히 버리는 플러그인은 한 번도 보내지 않은 플러그인과 똑같아 보이기 때문입니다. 회계 명세는 통합이 지켜야 할 레코드 의미를 정의합니다.

계약을 증명하는 인수 테스트

정상적인 연결과 해제를 시험하고, 그다음 같은 계정으로 재연결을, 그다음 해제하지 않고 사라지는 클라이언트를 시험하십시오.

하나의 세션 식별자를 생성에서 확인 응답을 거쳐 저장까지 추적하고, 카운터의 방향과 단위와 인터페이스를 확인하십시오. 레이블이 없는 바이트 수는 나중에 감사할 수 없습니다.

마지막으로 서버가 시간 초과로 닫아야 했던 세션이 보고서가 이해하는 방식으로 표현되는지 확인하십시오. 정상적인 해제만 다루는 계약은 가장 필요할 때 실패하는 계약입니다.

관련 글