퍼블릭 DNS 해석기가 EDNS 클라이언트 서브넷(ECS) 확장을 지원하는지 확인하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Route 53에서 지리 근접, 위치 및 지연 시간 기반 라우팅 정책을 사용하고 있습니다. 퍼블릭 DNS 해석기의 IP 주소를 찾아서 EDNS 클라이언트 서브넷(ECS) 확장을 지원하는지 확인하려고 합니다.

해결 방법

특정 DNS 레코드 세트를 사용하여 DNS 해석기의 퍼블릭 IP 주소를 찾은 다음 EDNS 클라이언트 서브넷 확장에 대한 지원 확인

다음 DNS 레코드 세트를 쿼리하여 DNS 해석기의 IP 주소를 포함하는 출력을 가져옵니다. 해석기가 지원하는 경우 EDNS 클라이언트 서브넷 확장에 대한 세부 정보도 출력에 포함됩니다.

참고: Windows를 사용하고 있다면 nslookup을 사용하여 이런 명령을 실행할 수 있습니다.

1.    'o-o.myaddr.l.google.com' TXT 레코드 세트를 사용합니다.

$ dig +nocl TXT o-o.myaddr.l.google.com +short
$ dig +nocl TXT o-o.myaddr.l.google.com @Resolver-IP +short

EDNS 클라이언트 서브넷 확장이 지원되지 않는 경우 출력은 다음과 같습니다.

"203.201.60.5"

이 예시에서 출력 결과는 IP 주소가 203.201.60.5인 해석기가 EDNS 클라이언트 서브넷 확장을 지원하지 않음을 나타냅니다.

EDNS 클라이언트 서브넷 확장이 지원되는 경우 출력은 다음과 같습니다.

"172.253.220.1"
"edns0-client-subnet 27.34.254.0/24"

이 예시의 출력은 IP 주소가 172.253.220.1인 해석기가 EDNS 클라이언트 서브넷 확장을 지원한다는 것을 나타냅니다. 클라이언트 서브넷 27.34.254.0/24 정보는 신뢰할 수 있는 이름 서버로 전송됩니다.

DIG 9.9.3 이상을 사용하는 경우 dig를 사용해서 클라이언트 서브넷을 전송할 수도 있습니다.

$ dig +nocl TXT o-o.myaddr.l.google.com @8.8.8.8 +subnet=35.163.158.0/24 +short
"74.125.18.67"
"edns0-client-subnet 35.163.158.0/24"

이 예시에서 첫 번째 줄은 DNS 해석기의 IP 주소를 나타냅니다. 두 번째 줄은 신뢰할 수 있는 이름 서버로 전달된 값인 **'edns0-client-subnet'**을 나타냅니다.

2.    'resolver-identity.cloudfront.net' 레코드 세트를 사용합니다.
참고: 이 경우 DNS 해석기의 퍼블릭 IP 주소만 반환됩니다.

$ dig resolver-identity.cloudfront.net +short
203.201.60.5

이 예시에서 203.201.60.5는 재귀 해석기의 IP 주소입니다.

3.    'rs.dns-oarc.net' TXT 레코드 세트를 사용합니다.
참고: 이 경우 DNS 해석기의 퍼블릭 IP 주소만 반환됩니다.

$ dig +short rs.dns-oarc.net txt @8.8.8.8
rst.x4050.rs.dns-oarc.net.
rst.x4058.x4050.rs.dns-oarc.net.
rst.x4064.x4058.x4050.rs.dns-oarc.net.
"172.217.34.197 DNS reply size limit is at least 4064"
"172.217.34.197 sent EDNS buffer size 4096"

이 예시에서 172.217.34.197은 Anycast 해석기(8.8.8.8)의 퍼블릭 IP 주소입니다.

참고: Anycast DNS 서비스(예: 8.8.8.8)에서는 해석기 IP 주소가 변동됩니다. 이 경우, 'for loop'를 사용하여 각 위치에서 재귀 해석기가 사용하는 공개 IP 주소 목록을 가져옵니다.

for i in {1..10}; do dig +short resolver-identity.cloudfront.net @8.8.8.8; sleep 11; done; 
172.217.38.5
172.217.34.195
172.253.244.3
172.217.34.69

이 예시에서 Anycast DNS 서비스 8.8.8.8은 서로 다른 퍼블릭 IP 주소를 사용하여 신뢰할 수 있는 이름 서버에 연결되었습니다.

Route 53 DNS 쿼리 로그를 분석하여 EDNS 클라이언트 서브넷 확장에 대한 지원 여부 결정

퍼블릭 DNS 쿼리 로깅을 사용하여 DNS 해석기 IP 주소를 찾을 수 있습니다. 또한 로깅은 DNS 쿼리에서 Route 53 이름 서버로 전달되는 EDNS 클라이언트 서브넷 정보를 제공합니다.

EDNS 클라이언트 서브넷 확장이 지원되는 경우 출력은 다음과 같습니다.

1.0 2020-05-10T10:39:49Z Z07163611M5WTAAAAA5F8 testwebsite.com A NOERROR UDP IAD79-C1 172.253.214.14 35.173.125.0/24

이 예시에서는 클라이언트 컴퓨터의 네트워크(35.173.125.0/24)가 출력에 포함됩니다. 네트워크가 포함되는 이유는 DNS 쿼리를 Route 53로 전달하는 해석기가 EDNS 클라이언트 서브넷 확장을 지원하기 때문입니다. 쿼리는 해석기 IP 주소, 172.253.214.14에서 전송되었습니다.

EDNS 클라이언트 서브넷 확장이 지원되지 않는 경우 출력은 다음과 같습니다.

1.0 2020-05-10T10:39:34Z Z07163611M5WTAAAAA5F8 testwebsite.com A NOERROR UDP IAD79-C1 35.170.83.67 -

해석기 IP 주소, 35.170.83.67이 출력에 포함됩니다. 하지만 10번째 필드의 '-'에서 알 수 있듯이 클라이언트 서브넷 정보는 전달되지 않습니다.


관련 정보

Amazon Route 53에서 EDNS0을 사용하여 사용자의 위치를 추정하는 방법

Route 53에서 DNS 응답 확인

Route 53 지리적 위치 라우팅 문제를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전