VPN이 IPv6를 실제로 전달할까요, 아니면 서버에 닿기만 할까요?
IPv6에 도달하는 것은 IPv6를 전달하는 것이 아니다. 두 주소 체계를 모두 확인하고, 전달과 차단 중에서 고르고, 킬 스위치도 같은 범위를 덮게 하라.
IPv4 전용 유출 테스트는 깨끗하게 나오는데 IPv6 테스트는 집 주소를 보여 주고, 터널은 명목상 연결되어 있다. 이 조합은 듀얼 스택 네트워크에서 흔한데, VPN이 한 주소 체계의 경로만 바꾸고 다른 하나는 그대로 두었기 때문이다. 바깥 터널과 그 안의 트래픽은 서로 다른 주소 지정 결정이다. 하나를 시험해도 다른 하나에 대해서는 아무것도 알 수 없다.
클라이언트가 무엇을 보고하는지뿐 아니라 요청이 실제로 어느 체계를 사용했는지도 확인해야 하는데, 호스트 이름은 두 종류의 응답을 모두 돌려줄 수 있기 때문이다.
두 체계, 두 가지 경로
운영 체제는 주소 체계마다 라우팅 테이블을 따로 유지한다. IPv4용 기본 경로를 설치해도 IPv6용 기본 경로는 설치되지 않으며, IPv4로 도달할 수 있는 터널 종단점은 IPv6 트래픽이 그 안으로 들어가는지에 대해 아무것도 말해 주지 않는다. 터널을 통한 IPv6 기본 경로가 없으면 호스트는 자신이 가진 IPv6 경로를 사용하는데, 그것은 대개 물리 링크다. 애플리케이션 입장에서 연결은 그저 직접 연결일 뿐이다.
A와 AAAA 레코드를 모두 반환하는 호스트 이름은, 애플리케이션이 두 체계를 다른 순서로 시도할 수 있기 때문에 이것을 보기 어렵게 만든다. 성공한 요청은 어느 경로로 갔는지 증명하지 않는다. 자기가 시험한 체계를 밝히는 테스트를 사용해야 한다.
서버에 닿는 것은 트래픽을 전달하는 것이 아니다
사업자들은 IPv6 지원이라는 표현을 여러 가지 서로 다른 기능에 쓴다. 종단점이 IPv6로 연결을 받아들여도 터널은 여전히 IPv4만 전달할 수 있다. 터널이 IPv6 내부 패킷을 전달하면서 바깥 전송은 IPv4로 남을 수도 있다. 아니면 클라이언트가 IPv6를 완전히 차단해 터널 밖으로 아무것도 새지 않게 할 수도 있다. 이들은 서로 다른 세 가지 동작이며, IPv6 지원이라고만 적힌 페이지는 이들을 구분하지 못한다.
설계에 어느 것이 필요한지 물어야 한다. IPv6 전용 서비스에 도달해야 하는 네트워크에는 전달이 필요하다. 직접 IPv6 트래픽을 막아야 하는 네트워크에는 차단이나 완전한 전달이 필요하며, 마케팅 페이지의 표기가 아니다.
전달과 차단 중에서 결정하라
전달이란 터널에 IPv6 주소가 있고, 그 안에 기본 경로가 있으며, 양쪽 끝에서 트래픽을 허용하는 정책이 있다는 뜻이다. 차단이란 클라이언트가 IPv6가 터널 밖으로 나가는 것을 의도적으로 막는 것이며, 이는 안전하지만 IPv6 목적지에 도달하는 데는 쓸모가 없다. 둘 다 정당하며, 어느 것도 당연히 가정할 수 있는 기본값이 아니다. 먼저 요구 사항을 고르고, 그다음 클라이언트가 실제로 그것을 구현하는지 확인해야 한다.
IPv4만 있는 게스트 네트워크는 IPv6 경로를 시험할 수 없으므로, 그곳에서 한 테스트는 두 체계가 모두 존재하는 집 네트워크에 대해 아무것도 말해 주지 않는다. 해당 체계가 실제로 제공되는 곳에서 테스트해야 한다.
킬 스위치에도 같은 범위가 필요하다
IPv4만 덮는 킬 스위치는 다른 체계가 직접 나가도록 내버려 두며, 그것이 바로 막아야 했던 유출이다. 두 체계와 터널이 올라오거나 내려가는 전환 순간에 대해 그 규칙을 검토해야 한다. 시스템 전체에서 IPv6를 끄는 것은 대안이 아니다: 관련 없는 서비스를 망가뜨릴 수 있고, 클라이언트 정책 문제를 기계 전체의 변경 뒤에 숨긴다.
DNS는 이 모든 것과 분리해 두어야 한다. DNS는 누가 질의에 답하는지와 질의가 어떻게 이동하는지에 관한 것이고, 그 뒤에 이어지는 애플리케이션 연결은 자기 경로를 가진다. 한쪽이 맞아도 다른 쪽은 아닐 수 있으며, 둘을 함께 진단하면 결론이 뒤섞인다.
각 테스트가 어느 체계를 시험했는지와 클라이언트가 어떤 기능을 주장하는지 기록해야 한다. 그 두 사실이 지원 표기가 결코 답하지 못할 질문에 답한다.