AdGuard DNS Google 도메인 연결 속도 문제 수정
지난 1~2주 동안 AdGuard DNS의 속도에 대한 많은 불만이 접수되었습니다. 또한 저희는 문제의 원인을 알아낼 수 없었습니다. 측정에 따르면 전 세계의 여러 위치에서 속도가 괜찮았습니다.
하지만 마침내 문제의 원인을 찾았습니다. AdGuard DNS는 원래 설계된대로 작동했지만 반환하는 IP 주소에서 문제가 나타납니다. 일부 도메인(주로 Google 소유 도메인)의 경우 AdGuard DNS는 Google China에 속한 IP 주소를 반환했습니다. 이러한 주소는 대부분의 사용자에게 다소 느리게 작동했습니다.
이 문제를 해결하는 데 시간이 오래 걸려서 죄송합니다. 문제의 원인과 해결 과정에 대해 설명드리겠습니다.
DNS 작동 방법
DNS는 중앙 집중식 시스템이 아닙니다. 각 도메인에는 이를 담당하는 DNS 서버, 이른바 권한이 있는 네임 서버가 있습니다. AdGuard DNS와 같은 재귀 DNS 해석기는 이러한 권한이 있는 네임 서버에서 응답을 받습니다.
AdGuard DNS가 DNS 요청을 받으면 어떻게 되나요?
1 단계: 캐시 확인. 해당 주소가 AdGuard DNS의 내부 캐시에 저장되어있는 경우, 요청에 해당하는 IP 주소를 이미 인식했다는 뜻입니다. 요청된 주소가 저희 내부 서버에 저장되어 있다면, 또한 저희는 해당 IP 주소를 즉시 반환합니다.
2 단계: DNS 확인. 그러나 캐시에서 응답을 찾을 수 없는 경우, 권한이 있는 네임 서버에서 응답을 얻어야 합니다. 예를 들어, AdGuard DNS에 example.org
의 IP 주소를 요청했다고 가정해 보겠습니다.
먼저 org
도메인 영역을 담당하는 서버를 찾아야 합니다. 이 서버를 찾기를 위해 소위 루트 DNS 서버를 처리합니다. 이 서버는 전 세계에 14개 뿐이며 여기에서 전체 목록을 확인할 수 있습니다. 이 서버의 유일한 임무는 각 1단계 도메인 영역(com
,org
등)을 담당하는 서버를 알아내는 것입니다.
이러한 루트 서버 중 하나는 org
도메인 영역을 담당하는 6개의 네임 서버가 있음을 알려줍니다. 이 서버를 ‘TLD 네임 서버’라고하며, 이는 org
영역의 각 도메인을 담당하는 권한이 있는 네임 서버에 대한 내용을 저장하고 있습니다.
그런 다음에는 TLD 서버가 'example.org'를 담당하는 서버를 확인합니다. 두 대의 서버를 알아보고 마지막으로 example.org
의 IP 주소를 알게됩니다.
출처: Cloudflare
이 전체 시스템이 어떻게 작동하는지 직접 알고 싶으시다면 이 웹 사이트에서 확인하실 수 있습니다.
문제 원인 설명
모든 Google 도메인을 담당하는 권한이 있는 네임 서버는 총 4개가 있습니다. 이 서버는 모든 클라이언트가 가장 가까운 Google 서버의 IP 주소를 가져오도록 구성되어있습니다. AdGuard DNS는 전 세계에 거의 50개의 서버를 보유하고 있습니다 (곧 더 많이 보유하게 될 것입니다). 그렇다면 Google이 중국 서버의 주소를 일부에 반환하는 이유는 무엇일까요?
AdGuard DNS 서버에는 여러 IP 주소(IPv6 및 IPv4)가 있습니다. 그리고 IPv6를 사용 중일 때 Google이 IP 주소 위치를 올바르게 감지하지 못한 것으로 보이고, 이 때문에, AdGuard DNS 서버의 실제 위치가 아닌 중국에 대한 레코드를 제공했습니다.
결국 이 문제는 불가사의한 내용이 아닌 것으로 밝혀졌습니다. 따라서 자체 재귀 DNS 서버를 사용하는 경우, 주의하십시오. IPv6를 이용하면 예측할 수 없는 일이 발생할 수 있습니다.
이 문제를 방지하기 위해 모든 DNS 서버가 IPv4를 선호하도록 구성했으므로 더 이상 Google 도메인을 방문할 때 느린 연결 속도가 발생하지 않습니다.
문제 해결의 다른 방법
오랜 시간동안 존재해왔던 EDNS 클라이언트 서브넷 기술을 사용하여 클라이언트를 대신하여 요청하는 권한이 있는 네임 서버를 알릴 수 있습니다. 이를 위한 요청에 클라이언트의 서브넷을 포함해야 합니다. 불행히도 이 방법은 개인정보취급방침에 위배되므로 AdGuard는 사용하지 않습니다.
그러나 IP를 노출하지 않은 상태로 EDNS 클라이언트 서브넷을 사용할 수 있기 때문에 저희는 이 방식에 대해 연구중입니다. 블로그와 SNS에 업데이트 상황을 지속적으로 공유하겠습니다.