두 테스트 페이지가 서로 다릅니다. 하나는 터널을 통해 제공자 주소를 보고하고, 다른 하나는 집의 프리픽스를 보고하므로 VPN이 새는 것처럼 보입니다. 그 결론은 한 단계를 건너뜁니다. 두 보고서는 서로 다른 라우팅 결정을 실행했고 그중 하나만 터널로 들어가야 했기 때문입니다. 공백은 대개 실제이며 고장 난 터널이 아니라 커버리지 문제입니다. 세 가지 질문이 이를 정리합니다. 어떤 흐름이 실제로 나갔는지, 커널이 그 흐름에 어떤 경로를 선택했는지, 클라이언트가 어떤 동작을 의도했는지입니다.

그 순서대로 작업하십시오. 순서를 바꿔 답하면 클라이언트에 결함이 있는지에 대한 긴 논쟁이 되지만, 실제 답은 IPv6 경로가 한 번도 설치되지 않았다는 것입니다.

어떤 흐름이 실제로 나갔고, 어느 어댑터에서

사용한 체계를 명시하는 시험부터 시작하고, 이어서 응용 프로그램, 접속 네트워크, 적용 중인 프로파일, 그리고 연결이 IPv6를 제공하는지 적어 두십시오. 이 네 가지 사실이 두 실행을 비교 가능하게 만들며, 네 번째는 사람들이 잊습니다. v6 프리픽스가 없는 네트워크는 v6를 새게 할 수 없고, 나중에 프리픽스를 추가하는 네트워크는 답을 바꿉니다.

페이지를 불러와 결과를 읽는 대신 체계마다 요청을 하나씩 보내십시오. 한 페이지가 v6와 v4 자원을 섞을 수 있고, 백그라운드 프로세스는 눈앞의 탭과 다르게 동작할 수 있으며, 캐시된 응답은 시험하려는 네트워크 변경보다 오래 살아남을 수 있습니다. 시험할 목적지를 고정하고 기록해 두어, 반복 실행이 같은 것을 측정하게 하십시오.

커널이 고른 경로 읽기

라우팅 테이블은 브라우저가 답할 수 없는 질문에 답합니다. 특정 목적지가 어디로 가는지 시스템에 묻고, 보이는 기본 경로뿐 아니라 정책 규칙도 포함하십시오. 둘 중 어느 것이든 이를 덮어쓸 수 있습니다.

ip -6 route get 2606:4700:4700::1111
ip -6 rule show
ip -6 route show table all

더 구체적인 프리픽스가 한 목적지만 터널 밖에 있고 나머지는 모두 안에 있는 흔한 이유이며, 정책 규칙은 어떤 경로보다 높은 우선순위로 같은 일을 할 수 있습니다. 메트릭도 읽으십시오. 같은 프리픽스의 두 항목은 화면 순서가 아니라 메트릭으로 결정됩니다. Windows에서는 같은 목록이 Get-NetRoute -AddressFamily IPv6 이며, 결정 순서에 맞도록 메트릭으로 정렬합니다. 표에서 맞아 보이는 규칙도 번호가 더 낮은 정책 규칙에 질 수 있으므로, 규칙 목록은 경로 목록과 같은 호흡에 속합니다.

클라이언트의 IPv6 정책은 어디에서 오는가

클라이언트는 v6를 터널로 나르도록 만들어질 수도, 이를 거부하도록, 혹은 이름 붙은 예외를 허용하도록 만들어질 수도 있으며, 이 세 의도는 서로 다른 세 가지 올바른 결과를 냅니다. 관찰을 누출이라고 부르기 전에 프로파일과 클라이언트 자체 문서를 읽으십시오. v6를 차단하면서 운영체제가 여전히 물리 링크에서 이웃 탐색을 보내는 클라이언트는 설계대로 동작하는 것입니다.

터널에서 의도적으로 제외된 응용 프로그램은 터널이 한 번도 나르지 않은 체계와 다른 사례입니다. 전자는 한 프로그램에 대한 결정이고 후자는 커버리지의 공백이며, 수리는 그에 따라 다릅니다. 존재해서는 안 되는 경로를 찾기 전에 클라이언트의 제외 프로그램 목록을 읽으십시오.

좁은 관찰, 표가 어긋날 때

경로 조회가 모호할 때 호스트에서의 인터페이스 관찰 하나가 이를 해결할 수 있지만, 질문을 겨냥했을 때만 그렇습니다. VPN 종단점 자체로 가는 트래픽은 설계상 물리 어댑터를 지납니다. 중요한 것은 전혀 다른 곳으로 주소가 지정된 응용 프로그램 흐름도 그곳에 나타나는지입니다. 모두 수집하는 대신 시험하는 목적지로 캡처를 걸러내십시오.

넓은 캡처는 그 한 가지 질문이 요구하는 것보다 훨씬 많은 개인 트래픽을 드러냅니다. 또한 관심 있는 흐름이 무관한 연결의 흐름에 묻혀 도착하므로 답도 덜 명확합니다. 시험한 목적지로 걸러내고, 몇 개의 패킷 뒤에 멈추고, 캡처를 삭제하십시오.

공백을 닫는 세 가지 방법

체계를 터널로 나르거나, 터널이 나를 수 없을 때 클라이언트에서 차단하거나, 소유자와 검토 날짜가 있는 의도적 예외를 기록하십시오. 어느 것이든 옹호할 수 있지만, 옹호할 수 없는 단 하나는 선택을 암묵적으로 남기는 것이며, 암묵적 선택이 바로 누출의 정체입니다. 터널에 v6 출구가 전혀 없다면 클라이언트에서 v6를 거부하는 것이 정직하면서도 검증 가능합니다. 중요한 것은 선택이 다음 사람이 찾을 수 있는 곳에 적혀 있고, 반년 뒤 행동에서 추론되지 않는 것입니다.

다시 연결한 뒤와 네트워크 사이를 이동한 뒤 점검을 반복하십시오. 이전 링크를 위해 설치된 경로가 변경을 살아남을 수 있습니다. 그다음 목적지, 선택된 경로, 클라이언트 정책, 시험이 사용한 체계를 기록해, 다음 사람이 다시 도출하는 대신 결정을 읽게 하십시오.RFC 7359 는 이중 스택 누출을 버그가 아니라 설계 문제로 문서화하며, 동작하는 v4 터널이 모든 것을 덮는다고 누군가 주장할 때 인용할 참조입니다.

관련 글