헤드리스 박스에는 열어 볼 브라우저도, 바라볼 자물쇠도 없으므로 점검은 응답을 읽을 수 있는 요청이어야 합니다. 이는 단 하나의 출구 주소 결과로 수십 개의 서비스, 두 개의 주소 패밀리, 프록시를 운영하는 기기를 인증하려는 상황을 보기 전까지는 사소해 보입니다. 아래의 절차는 워크로드가 실제로 실행되는 같은 컨텍스트에서 한 번에 하나의 제한된 증거를 쌓습니다.

테스트가 무엇을 증명해야 하는지 정한다

무엇이든 실행하기 전에 기대를 한 줄로 적습니다. 어느 흐름이, 어느 인터페이스를 거쳐, 어느 목적지로 가며, 반대편에서 무엇이 보여야 하는지. 기대를 밝히지 않은 테스트는 아무도 해석할 수 없는 숫자를 낳습니다.

가장 유용한 형태는 자기가 본 출발지 주소를 보고하는 승인된 엔드포인트를 지목합니다.

그 엔드포인트만이 여러분이 마련해야 할 부분입니다. 나머지는 모두 클라이언트 측 관측이며, 클라이언트 측 관측은 흥미로운 방식으로 잘못됩니다.

올바른 컨텍스트에서 관측을 실행한다

관리자의 셸은 워크로드의 환경이 아닙니다. 다른 프록시 변수, 다른 네임스페이스의 다른 라우팅 테이블, 다른 사용자의 환경 파일을 담고 있을 수 있습니다. 점검 대상과 같은 호스트, 컨테이너, 네임스페이스 또는 서비스 컨텍스트에서 테스트를 실행하세요. 그렇지 않으면 자기 셸을 측정하는 셈입니다.

일반 호스트에서는 같은 사용자와 같은 유닛을 뜻합니다. 컨테이너 환경에서는 호스트에서 시험하는 대신 컨테이너의 네트워크 네임스페이스로 들어가는 것을 뜻합니다. systemd 서비스에서는 같은 설정의 일시적 유닛을 뜻할 수 있습니다.

뒤따르는 요청은 올바른 컨텍스트에 있을 때만 의미가 있습니다.

주소 패밀리를 따로 점검한다

각 패밀리를 명시적으로 요청하세요. 성공한 IPv4 요청은 IPv6 경로를 전혀 통과하지 않기 때문입니다. --ipv4와 --ipv6 선택자는 선택을 강제하며, 두 결과의 차이 자체가 정보입니다.

curl --ipv4 https://probe.example/observed-source
curl --ipv6 https://probe.example/observed-source

실패한 IPv6 요청은 효과적인 차단의 증거가 아닙니다. 엔드포인트에 IPv6 주소가 없거나, DNS가 쓸 만한 것을 반환하지 않았거나, 기기에 IPv6 경로가 아예 없을 수 있습니다. 결론을 내리기 전에 실패를 읽으세요. 터널을 통과한 성공적인 IPv6 요청만이 IPv6 경로가 다뤄졌음을 증명합니다.

두 응답을 나란히 기록합니다. 그중 하나만으로는 사실의 절반입니다.

출구 점검이 놓치는 네 가지를 더한다

출구 주소는 한 가지 질문에 답합니다. 나머지 넷이 터널이 설계대로 동작하는지를 결정합니다.

CheckWhat it provesWhat it does not
Included and excluded destinationsThe split behaves as designed for those flowsCoverage of any other destination
Resolver pathWhere a fresh lookup actually travelledWhere a cached answer came from
Tunnel-down behaviourThe failure policy for a new requestWhat an already open connection does
Reconnect and restartThe requirement survives the lifecycle eventBehaviour under load or partial failure

목적지 정책이 먼저입니다. 설계에 분할이 있다면 포함되어야 할 흐름과 제외되어야 할 흐름을 시험합니다. 다음은 DNS인데, 설정값이 아니라 실제 리졸버 경로를 들여다봅니다. 캐시된 응답이나 출력된 설정은 새 질의가 어디로 갔는지 아무것도 말해 주지 않기 때문입니다.

실패 동작에는 계획과 보존된 복구 경로가 필요합니다. 터널을 쓸 수 없는 동안 새 요청을 관측하고, 오래된 열린 연결은 실패 정책의 증거가 아님을 기억하세요. 수명 주기는 마지막입니다. 재연결이나 서비스 재시작이 요구 사항에 영향을 준다면 그 후에 관측을 반복하세요.

평결이 아니라 증거를 기록한다

결과마다 프로세스 컨텍스트, 목적지, 주소 패밀리, 시각, 관측된 출발지를 남깁니다. 그 집합은 실행한 흐름에 대한 제한된 증거이며, 무엇을 다뤘는지 말하기 때문에 변호할 수 있습니다.

이것은 VPN 사업자의 기록에 대한 감사가 아니며, 기기의 앞으로의 모든 애플리케이션에 대한 인증서도 아닙니다.

한계를 결과 옆에 적습니다. 다루지 않은 것을 밝히는 테스트는 검토를 통과하지만, 기기가 검증되었다고 주장하는 테스트는 통과하지 못합니다. 사용한 패밀리 선택자 옆에 curl 설명서를 두고, 네 행짜리 표를 결과와 함께 보관하세요.

관련 글