전역 IPv6 주소가 트래픽이 터널을 우회한다는 뜻은 아니다
범위는 주소가 어디까지 라우팅될 수 있는지를 말할 뿐, 이 패킷이 어디로 갔는지는 말하지 않는다. 결론을 내리기 전에 인터페이스와 선택된 경로, 터널 접두사를 읽어 보라.
시험 페이지가 전역 IPv6 주소를 보고하면 결론은 곧장 VPN을 우회하는 트래픽으로 뛰어간다. 그 결론에는 페이지가 끝내 보여 주지 않은 두 가지 사실이 필요하다: 어떤 애플리케이션이 요청을 보냈는지, 그리고 커널이 그 요청에 어떤 경로를 골랐는지. 주소의 범위는 그 주소가 어디까지 라우팅될 수 있는지를 설명한다. 이 특정 패킷이 어디로 갔는지에 대해서는 아무것도 말하지 않는다.
범위와 역할은 서로 다른 증거를 가진 서로 다른 질문이다.
범위는 누가 라우팅할 수 있는지를 답하지, 누가 라우팅하는지를 답하지 않는다
전역 유니캐스트 주소는 원칙적으로 공용 인터넷에서 라우팅될 수 있고, 고유 로컬 주소는 내부 토폴로지를 위한 것이며, 링크 로컬 주소는 하나의 링크에만 존재한다. 이것들은 주소 블록의 속성이다. 특정 목적지로 가는 패킷이 터널을 통해 나가는지는 라우팅 테이블과 인터페이스에 붙은 정책이 결정하며, 둘 다 어느 방향으로도 가리킬 수 있다.
주소는 전역 범위이면서도 터널은 경로이지 주소 계획이 아니므로 터널 안에서 전달될 수 있다.
웹 시험이 아니라 인터페이스의 모든 주소를 읽어라
인터페이스 출력은 여러 주소를 한꺼번에 보여 준다: 물리 링크의 외부 주소, 터널 주소, 그리고 인터페이스마다 하나의 링크 로컬 주소이다. 웹 시험은 한 요청의 출발지 주소만 보여 준다. ip -6 addr show 으로 시작해 어느 주소가 어느 인터페이스에 속하는지, 어떤 접두사 길이를 지니는지 적고, 그다음 요청이 실제로 어느 인터페이스를 썼는지 물어라.
ip -6 route get 2606:4700::1111 은 커널이 목적지에 대해 고를 인터페이스와 출발지를 출력하므로, 그것과 비교해 보라.
전역 접두사가 터널 안으로 들어가는 방식
두 가지 설계가 터널 인터페이스에 전역 주소를 만든다. 제공자는 터널을 통해 클라이언트로 라우팅되는 접두사를 위임할 수 있고, 그러면 경로는 여전히 터널인데 주소는 전역이 된다. 또는 클라이언트가 원래의 전역 주소를 유지하고, 바깥 헤더가 일을 하는 동안 터널이 그것을 내부 트래픽으로 나른다. 어느 설계도 변환을 요구하지 않으며, 혼란은 IPv4 NAT의 습관을 IPv6의 요건으로 여기는 데서 시작된다.
관리자에게 둘 중 어느 것이 해당하는지 물어라. 답이 반대편 서버가 당신을 출발지로 무엇으로 보는지를 결정한다.
사설처럼 보이는 주소가 신뢰의 신호가 아닌 이유
고유 로컬 주소는 운영자가 내부 라우팅을 위해 의도했다는 것만 말하고 그 이상은 말하지 않는다. 장치가 관리되는지, 소프트웨어가 신뢰할 만한지, 트래픽이 암호화되는지를 증명하지 않는다. 반대로 전역 주소는 트래픽이 터널을 빠져나갔음을 증명하지 않으며, 이 글 전체는 바로 그 가정을 부수기 위해 존재한다.
신뢰는 정책과 인증, 암호화로 판단하라. 주소의 겉모습은 양방향 모두에서 실패하는 약한 추론이다.
경로와 정책을 두 개의 질문으로 시험하라
첫째 경로: curl -6 https://ifconfig.me 를 터널을 통해, 다시 물리 인터페이스를 통해 실행하고 답을 비교하라. 둘째 정책: 터널이 실제로 어떤 접두사를 나르는지, 반대편에 그에 대한 되돌아오는 경로가 있는지 확인하라. 공용 사이트에 대한 성공한 요청은 그 목적지가 어디서든 닿을 수 있기 때문에 둘 다 증명하지 못한다. 정책 시험에는 내부 목적지를 써라.
각 경로가 만들어 낸 출발지 주소를 기록하라. 터널 우회에 관한 주장이 실제로 필요로 하는 증거가 그것이다.