상태 파일은 세션을 세지, 그 뒤의 LAN을 세지 않는다
스냅숏은 VPN 세션과 라우팅 상태를 나열하며, 사이트 뒤의 모든 머신을 나열하지 않는다. 헤더, 레코드 유형, 파일의 나이를 함께 읽어라.
누군가 VPN에 머신이 몇 대 있는지 묻고, 증거로 상태 파일을 내민다. 이 파일은 더 좁은 질문에 답한다. 이 스냅숏에 세션이 몇 개 있으며 서버가 어떤 가상 주소를 라우팅하는가. 두 질문 사이의 간극이 대부분의 보고 실수가 사는 곳이며, 그 간극을 메우는 일은 파일 자체의 헤더를 읽는 데서 시작된다.
스냅숏에 실제로 들어 있는 것
이 파일은 해당 서버 인스턴스에 상태 출력이 구성되었을 때 일정 간격으로 기록되므로, 실시간 피드가 아니라 주기적인 그림이다. 각 섹션은 세션과 내부 라우팅 상태를 따로 나열하고, 형식 버전이 열 배치를 결정한다.
status /run/openvpn/office.status 30
status-version 3버전 3은 헤더 행이 있는 탭 구분 필드를 쓰고, 오래된 형식은 다르며 이후 버전은 필드를 추가할 수 있다. 열 번호를 하드코딩하는 대신 헤더를 읽어라. 위치를 가정한 스크립트는 다음 업그레이드에서 조용히 깨진다.
| Record | What it describes | What it cannot tell you |
|---|---|---|
| Client list | A session in this snapshot | How many people or machines that session represents |
| Real address | The outer peer address and port | Which device is behind it |
| Routing rows | Virtual addresses and route ownership | Which downstream hosts are alive |
세션을 세라, 사람이나 머신이 아니라
사이트 연결 하나가 그 뒤의 여러 승인된 머신의 트래픽을 실어 나를 수 있다. 한 사람도 노트북과 휴대폰에서 동시에 둘 이상의 세션을 가질 수 있다. 어느 패턴도 개수에는 드러나지 않으므로, 연결된 사용자는 단위를 정의한 뒤에야 의미가 있다. 누군가 세기 시작하기 전에 보고서에 어떤 단위가 필요한지 물어라.
그 숫자가 라이선스나 용량에 중요하다면 보고서와 같은 문서에서 단위를 정의하라. 세션, 신원, 장치 중 무엇을 세는지 밝히지 않은 보고서는 독자가 기대한 단위로 읽힌다.
바깥 주소는 식별자가 아니다
실제 주소 필드는 서버가 보는 피어 주소와 포트다. 번역된 공인 주소 하나 뒤의 여러 클라이언트가 그 주소를 공유하므로, 그것으로 묶으면 무관한 세션이 합쳐진다. 포트도 연결마다 바뀌기에 이 쌍은 안정적인 키로 쓸 수 없다. 그렇게 묶은 보고서는 정밀해 보이지만 틀렸다.
묶을 때는 실효 클라이언트 신원을 쓰고, 주소는 전송 세부 정보로 다뤄라. 두 행이 같은 신원을 공유하면 보통 중복 레코드가 아니라 동시 세션을 뜻한다.
라우팅 행은 호스트 목록이 아니다
라우팅 항목은 한 피어가 책임지는 서브넷을 지목할 수 있고, 서브넷은 그 호스트의 목록이 아니다. 서버는 그 범위를 특정 세션으로 보내야 한다는 것은 알지만, 그 머신 중 어느 것이 켜져 있고 애플리케이션에 인증되었으며 누군가에게 쓸모 있는지는 전혀 모른다. 라우팅 표는 도달 가능성을 설명하지, 점유를 설명하지 않는다. 이 차이가 VPN이 자산 목록 질문에 답할 수 없는 이유 전부다.
여러 행이 같은 피어를 가리킬 수도 있다. 사이트가 둘 이상의 범위를 광고할 수 있기 때문이다. 행을 세고 그 결과를 장치 수라고 부르면 배포 규모를 임의의 배수로 부풀린다.
요구가 정말 자산 목록이라면 그 네트워크를 소유한 목록 프로세스를 써라. VPN은 어느 피어가 경로를 나르는지 식별할 수 있고, 그것은 그 뒤에 어떤 호스트가 있는지와는 다른 사실이다.
나이, 권한, 실시간 보기
모든 답변에 파일의 수정 시각을 함께 붙여라. 몇 시간 전에 멈춘 서버는 마지막 스냅숏을 그대로 남기며, 최신인 척하는 낡은 파일은 보고서가 없는 것보다 나쁘다.
디렉터리는 존재해야 하고 서비스가 실제로 실행되는 계정으로 쓸 수 있어야 한다. 보안 강화 작업 뒤에 잊기 쉽다. 파일에는 보통 이름과 주소가 들어 있으므로 웹 서버가 제공할 수 있는 아무 곳이 아니라 관리용 위치에 두어라. 권한은 당신의 셸이 아니라 서비스 계정에서 확인하라. 조용히 갱신을 멈춘 스냅숏은 조용한 네트워크와 똑같이 보인다.
이벤트 기반 요구에는 더 빠른 폴링 대신 지원되는 관리 인터페이스를 써라. 그 인터페이스를 메트릭이 아니라 제어로 다루고, 세션을 세기 위해서만 인터넷에 노출하지 마라.