국가를 고르고 연결했는데 다른 나라의 웹사이트가 반긴다. 목록의 표기는 당신이 나갈 주소에 대해 아무것도 약속한 적이 없다: 그것은 누군가 공개한 필드이며, 당신이 보지 못한 방법으로 도출된 것이다. 그 필드를 주소로 취급하는 바로 그 지점에서 혼란이 시작된다.

세 가지 별개의 것이 국가 값을 지니며, 아무도 거짓말하지 않고서도 서로 어긋날 수 있다. 그것들을 구분하면 불일치가 미스터리가 아니라 진단 가능한 것이 된다.

국가 표기를 지니는 세 가지 다른 것

첫째는 디렉터리 자체의 필드로, 운영자가 직접 신고했거나 주소 데이터베이스에서 추론했거나 항목을 만들 때 그냥 복사했을 수 있다. 둘째는 주소 자체이며, 그것을 알리는 네트워크에 속하고, 지리 위치 조회가 RFC 8805에서 설명한 형식의 공개 매핑 데이터를 사용해 답하는 대상이 바로 이것이다. 셋째는 앱이 표시하기로 결정한 것으로, 다른 데이터베이스나 계정 설정, 또는 기기에서 부여한 권한에서 올 수 있다. 네트워크 사실인 것은 둘째뿐이며, 그것조차 관찰이 아니라 조회다.

그 셋 사이의 일관성은 반가운 일이겠지만 어디에서도 요구되지 않는다. 불일치는 그것들이 서로 다르게 도출되었다는 증거일 뿐이다.

깃발이 아니라 주소를 확인하라

유용한 질문은 당신의 트래픽이 실제로 어느 공인 주소에서 나가는가이다. 이는 클라이언트에서 답할 수 있고, 어떤 목록 필드에도 의존하지 않는다. 답을 기대했던 프리픽스와, 지리 위치 조회가 그것에 대해 말하는 것과 비교하고, 두 결과를 노트에 따로 적어 두라. 기대한 국가와 조회 사이의 차이는 라우팅이나 데이터베이스의 문제이고, 조회와 앱의 판단 사이의 차이는 다시 데이터베이스의 문제다.

서비스가 그 지역에 출구를 여러 개 두고 있다면 확인을 두 번 하라. 주소 풀은 연속된 연결에서 서로 다른 주소를 줄 수 있고, 표본 하나는 그중 하나만 설명한다.

지도 위의 가까움은 네트워크 위의 가까움이 아니다

가까운 나라가 먼 나라보다 더 긴 경로일 수 있는 것은 광섬유 경로가 국경을 따르지 않기 때문이다. 지연 시간을 위해 노드를 고른다는 것은 가장 가까운 깃발을 고르는 것이 아니라 당신이 신경 쓰는 목적지를 측정하는 일이다. 같은 논리가 용량에도 적용되는데, 두 나라 떨어진 가벼운 부하의 출구가 옆의 포화된 출구를 이길 수 있기 때문이다. 먼저 측정하고 다음에 결정하며, 두 숫자 모두 움직이므로 시각을 적어 두라.

위치는 보존 기간에 대해서도, 종단점을 누가 운영하는지에 대해서도 아무것도 말하지 않는다. 그것들은 자체 증거가 필요하며, 국가 열에는 담을 수 없다.

출구 주소를 직접 확인하라

클라이언트와 외부 서비스에 당신의 주소가 어떻게 보이는지 물은 다음, 로컬 라우팅 테이블에 그 경로가 어떻게 선택되었는지 물어라. 아래 명령은 세 가지를 모두 하며, 세 번째를 사람들이 자주 건너뛴다. 인터페이스 이름은 자신의 터널 장치로 바꾸라.

curl -sS https://api.ipify.org; echo
curl -sS --interface tun0 https://api.ipify.org; echo
ip route get 1.1.1.1
ip -6 addr show dev tun0

처음 두 줄은 일치해야 하며, 일치하지 않는다면 당신이 있다고 생각하는 경로가 트래픽을 나르는 경로가 아니다. 경로 조회는 커널이 목적지에 사용할 인터페이스와 원본 주소를 알려 주며, 그것이 출구 주소 뒤의 메커니즘이다. IPv6 줄이 중요한 이유는 한 기기가 한 체계에는 터널을, 다른 체계에는 직접 경로를 유지할 수 있기 때문이다. 국가 표기는 그런 경우를 하나도 스스로 포괄하지 못한다.

관찰한 주소, 데이터베이스의 판단, 앱의 표시를 세 개의 별도 노트로 적어라. 그러면 다음에 만나는 불일치를 원인에 쉽게 귀속시킬 수 있다.

관련 글