IPv6보다 IPv4 수신 연결 선호


11

우리는 사용자의 IP 위치를 파악함으로써 혜택을받는 소셜 / 로컬 서비스를 운영합니다. 문제는 IPv6의 경우 지리적 위치가 IPv4보다 약간 더 중요하다는 것입니다.

nginx가있는 Ubuntu 호스트에서 IPv6을 통해 들어오는 연결을 선호하는 방법이 있습니까? 구성은 다음과 같습니다.

server {
    listen 80 default_server;
    listen [::]:80 ipv6only=off default_server;
}

답변:


23

IPv6 / IPv4 기본 설정은 연결 시작 자, 즉 웹 브라우저에 의해 결정됩니다. 주소 선택 규칙은 RFC 6724에 정의되어 있습니다. 재정의 할 수는 있지만 사용자는 운영 체제를 재구성해야합니다.

다른 사람이 IPv4를 사용 하도록 할 수있는 유일한 방법 은 IPv6을 전혀 제공하지 않는 것입니다. 분명히 이것은 중기 적으로도 실용적인 해결책이 아닙니다 ...

따라서 원래 문제로 돌아가 보겠습니다. IPv6의 지리적 위치는 "IPv4보다 조금 더 중요합니다."

부분적으로 이것은 지리적 위치 데이터를 얻는 위치에 따라 크게 달라집니다. 예를 들어 Maxmind는 내 IPv6 주소를 "미국"으로 도시를 전혀 지정하지 않고 흥미로운 좌표 를 제공하는 반면 Google은 여전히 ​​여전히 약 50 마일 떨어진 대도시 지역을 정확하게 식별합니다. Maxmind와 Google은 모두 수정 사항을보고 할 수 있으며 최소한 Maxmind의 경우 누구나 IP 주소에 대해이 작업을 수행 할 수 있습니다 .

이 상황이 오래 지속될 것이라고는 생각하지 않습니다. IPv6 사용이 계속 확장됨에 따라 이러한 지리적 위치 서비스 사용자는 IPv6 주소에 대해 더 높은 정확도를 요구할 것이며, 적어도 고객을 지불하기 위해 고객이 다른 곳으로 이동하지 않도록이를 최종적으로 제공해야합니다.

그 동안에는 응용 프로그램에 다른 방법으로 사용자를 찾을 수 있어야합니다. 로그인 한 경우 기존 계정에서 위치에 대한 힌트를 얻을 수 있습니다. 사용자에게 국가를 명시 적으로 선택하도록 요청할 수 있습니다. 등등...

웹 페이지에서 IPv4 전용 하위 도메인과 IPv6 전용 하위 도메인을 제공하면 페이지를 각각로드 할 수 있습니다. 그런 다음 이들을 클라이언트 측과 연관시키고 서버에 다시보고 할 수 있습니다. 우연히도 Maxmind는 이미 자체 웹 사이트에서이 작업을 수행하고 있습니다.


12
IP를 통한 위치 정보가 공룡의 길을 갈 것으로 기대합니다. v4 블록 거래가 더 많은 관심을 끌 때 대륙 해상도가 가장 좋습니다.
Jim B

4
가난한 사람들을 미치게 만드는 것은 AFRINIC에서 IPv4 블록을 받고 있지만 실제로 아프리카에 있지 않은 모든 회사입니다. 나는 이미 야생에서이 중 몇 가지를 발견했습니다.
Michael Hampton

1
그래, 나도 봤어 거래 된 블록으로 인해 문서 추적 데모가 레일에서 사라지는 것을 보았습니다.
Jim B

15

이러한 기본 설정은 SRV 레코드를 사용하여 표현할 수 있습니다. 불행히도 HTTP에는 지원되지 않습니다. 따라서 클라이언트 만 IPv4와 IPv6 중에서 선택하는 상황에 처하게됩니다.

많은 클라이언트가 SYN + SYN-ACK의 왕복 시간을 사용하여 둘 중 사용할 것을 결정합니다. 따라서 IPv6에서 SYN-ACK 패킷 전송 속도를 늦춤으로써 대부분의 클라이언트가 IPv4를 선호하게 할 수 있습니다. 그러나 일부러 사이트 속도를 늦추는 것은 끔찍한 방법입니다.

대신 나는 물러서서 문제를 살펴볼 것입니다. 더 나은 위치 정보 데이터를 원합니다. 방문자가 사이트에 액세스 할 때마다 즉시 해당 IP 주소 중 하나를 알게됩니다. 이것이 IPv4 주소인지 IPv6 주소인지는 브라우저가 서버와 통신하기 위해 선호하는 브라우저에 따라 다릅니다.

페이지 내에서 AJAX 요청을 사용하여 다른 IP 주소를 알 수 있습니다. IPv4를 사용하는 클라이언트의 경우 AJAX 요청을 IPv6 전용 도메인으로 보내고 IPv6을 사용하는 클라이언트의 경우 AJAX 요청을 IPv4 전용 도메인으로 보냅니다.

AJAX 요청이 서버에 도착하자마자 사용자의 IPv4 및 IPv6 주소를 모두 알게됩니다. 이 서신을 알면 둘 중 하나만 아는 것보다 지리적 위치를 더 잘 수행 할 수 있습니다.

AJAX 요청이 서버에 도착하지 않는 경우가 종종 있습니다. 이러한 사용자의 경우 하나의 IP 주소 만 기반으로 가장 잘 수행 할 수 있으므로 지리적 위치를 지정해야합니다. 그러나 AJAX 요청에 대한 응답이 클라이언트 측에서 사용되지 않는 한, 사용자는 AJAX 요청이 실패한 것을 눈치 채지 못할 것입니다. 따라서 AJAX 요청으로 인해 감지 된 속도 저하 또는 불규칙한 동작이 발생하지 않습니다.


2
이것은 매우 독창적이고 구현하기 쉬운 솔루션처럼 보입니다.
Dan Dascalescu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.