Route 53의 IP 기반 라우팅 문제를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Route 53 IP 기반 라우팅 정책에서 DNS 확인을 테스트할 때 예상치 못한 결과가 나타납니다.

해결 방법

예제 시나리오

CIDR 172.32.0.0/16 및 172.33.0.0/16를 사용하는 클라이언트에 IP 기반 라우팅 레코드가 있고, Elastic Load Balancing(ELB) 로드 밸런서 2개를 가리키고 있습니다. ELB 로드 밸런서 하나는 버지니아(us-east-1)에 있고 다른 하나는 아일랜드(eu-west-1)에 있습니다. CIDR 172.32.0.0/16을 사용하는 클라이언트는 도메인을 us-east-1에 있는 로드 밸런서로 확인합니다. CIDR 172.33.0.0/16을 사용하는 클라이언트는 도메인을 eu-west-1의 로드 밸런서로 확인합니다. 그러나 클라이언트가 예상한 출력을 수신하지 못합니다.

참고: 프라이빗 호스팅 영역에는 IP 기반 라우팅이 지원되지 않습니다.

IP 기반 라우팅 문제를 해결하려면 다음 단계를 따르세요.

  1. 사용 사례에 맞게 Route 53 호스팅 영역에 IP 기반 리소스 레코드를 올바르게 구성했는지 확인합니다. Route 53 콘솔을 열고 Route 53 호스팅 영역 구성에 지정된 기본 위치를 확인합니다.

참고:

  • 원본 IP 주소와 일치하는 CIDR 컬렉션에 CIDR 블록이 지정되지 않은 경우, Route 53은 기본 위치인 "*"로 응답합니다.

  • 다음 조건에 해당하는 경우, Route 53은 NODATA로 응답합니다.

    기본 위치 “*”가 지정되지 않았습니다.
    쿼리가 시작된 CIDR 블록이 CIDR 컬렉션에 지정된 CIDR 블록과 일치하지 않습니다.

  • Route 53에서 지정된 CIDR보다 긴 CIDR을 가진 DNS 쿼리를 CIDR 컬렉션에서 지정된 짧은 CIDR과 일치시킵니다. 예를 들어, 2001:db8::/32를 CIDR 컬렉션의 CIDR로 지정하고 2001:0db8:1234::/48에서 쿼리를 수신하는 경우 CIDR이 일치합니다. CIDR 컬렉션에 2001:db8:1234::/48을 지정하고 2001:db8::/32에서 쿼리를 받으면 일치하지 않습니다. Route 53에서 "*" 위치에 레코드로 응답합니다.

CIDR 컬렉션 및 CIDR 블록 할당량에 관해서는 레코드 할당량을 참고하세요.

  1. 클라이언트가 올바르게 확인했는지 확인합니다.

클라이언트가 Virtual Private Cloud(VPC) 내에서 확인 중이고 VPC DNS .2 확인자를 사용하는 경우 IP 기반 라우팅이 작동하지 않습니다. 이는 .2 확인자가 ECS(EDNS 클라이언트 서브넷)를 지원하지 않기 때문입니다.

클라이언트가 VPC 외부에서 확인 중인 경우 다음 명령을 실행해 DNS 확인자가 EDNS0을 지원하는지 확인합니다.

Linux 또는 macOS

dig TXT o-o.myaddr.google.com -4

Windows

nslookup -type=txt o-o.myaddr.google.com

다음은 EDNS0을 지원하지 않는 DNS 확인자의 출력 예제입니다.

$ dig TXT o-o.myaddr.google.com -4

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> TXT o-o.myaddr.google.com -4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38328
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;o-o.myaddr.google.com. IN TXT

;; ANSWER SECTION:
o-o.myaddr.google.com. 60 IN TXT "3.209.83.70"

다음은 EDNS0을 지원하는 DNS 확인자의 출력 예제입니다.

$ dig TXT o-o.myaddr.google.com -4 @8.8.8.8

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> TXT o-o.myaddr.google.com -4 @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30624
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;o-o.myaddr.google.com. IN TXT

;; ANSWER SECTION:
o-o.myaddr.google.com. 60 IN TXT "172.253.8.137"
o-o.myaddr.google.com. 60 IN TXT "edns0-client-subnet 54.82.0.0/24"

3.    DNS 확인을 체크하려면 호스팅된 영역의 권한 있는 이름 서버를 사용하여 레코드를 확인합니다. 다음 명령을 실행합니다. 다음 예제 명령에서 example.com을 도메인으로 바꾸세요.

dig A example.com +subnet=172.3.0.0/16 @ns-1875.awsdns-42.co.uk

또는 dig 또는 nslookup을 사용해 DNS 확인이 예상대로 작동하는지 확인합니다. 다음 예제 명령에서 example.com를 도메인으로 바꾸세요.

dig example.com @8.8.8.8
nslookup example.com 8.8.8.8
  1. IP 기반 리소스 레코드에 상태 확인 레코드를 구성한 경우 이 레코드를 사용하여 상태를 확인합니다. 기본(*) 위치 레코드에서 상태 확인이 실패하면 Route 53에서는 기본 위치를 DNS 쿼리 응답으로 반환합니다.

관련 정보

IP 기반 라우팅

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