Skip to main content

Route53

DNS (Domain Name System) & Route 53

  • DNS는 사람이 읽을 수 있는 도메인 이름(www.amazon.com)을 컴퓨터가 읽을 수 있는 IP 주소(192.0.2.44)로 변환하는 시스템
  • Route53은 AWS에서 제공하는 DNS(Domain Name System) 서비스

Route53의 기능:

  • 퍼블릭 도메인 구매 또는 이전 (.com, .net, .co.kr)
  • AWS 내부 VPC에서만 사용할 수 있는 프라이빗 도메인 생성
  • 라우팅 정책 적용 (단순 라우팅, 가중치기반, 지리적위치, 지연시간, 장애조치, 다중값 응답)

Domain Level AWS-ANS_route53-1

DNS Resolution AWS-ANS_route53-2

  1. 사용자가 웹 브라우저에서 www.example.com을 입력
  2. www.example.com에 대한 요청이 인터넷 서비스 제공업체(ISP)가 관리하는 DNS 해석기(DNS Resolver)로 라우팅
  3. ISP의 DNS 해석기는 www.example.com에 대한 요청을 DNS 루트 네임 서버에 전달
  4. ISP의 DNS 해석기는 www.example.com에 대한 요청을 이번에는 .com 도메인의 TLD 네임 서버 중 하나에 다시 전달 .com 도메인의 네임 서버는 example.com 도메인과 연관된 Amazon Route 53 네임 서버의 이름을 사용하여 요청에 응답
  5. ISP의 DNS 해석기는 www.example.com에 대한 요청을 Amazon Route 53의 해당 네임 서버에 전달
  6. Amazon Route 53 네임 서버는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고 이 IP 주소를 DNS 해석기로 반환
  7. ISP의 DNS 해석기가 IP 주소를 웹 브라우저로 반환합니다. 또한, DNS 해석기는 다음에 누군가가 example.com을 탐색할 때 좀 더 빠르게 응답할 수 있도록 사용자가 지정하는 일정 기간 동안 example.com의 IP 주소를 캐싱(저장), 다음페이지 TTL(Time to Live)에서 설명
  8. 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 www.example.com에 대한 요청을 웹서버로 전송
  9. 192.0.2.44에 있는 웹 서버 또는 그 밖의 리소스는 www.example.com의 웹페이지를 웹 브라우저로 반환하고, 웹 브라우저는 이 페이지를 표시

Route53 - TTL AWS-ANS_route53-3

  • DNS recursive resolver(ISP 업체가 운영하는 DNS 재귀적 리졸버)가 이 레코드에 관한 정보를 캐싱할 시간(초)

주요 DNS 레코드 유형 DNS 레코드를 통해 트래픽을 도메인에 라우팅하는 방식을 Domain Name System(DNS)에 알려줌

  • A - 도메인 네임을 IPv4 주소로 라우팅 (www.google.com -> 192.100.10.1)
  • AAAA - 도메인 네임을 IPv6 주소로 라우팅
  • CNAME - 도메인 네임을 도메인 네임으로 라우팅 (site.google.com -> blog.google.com)
  • ALIAS - 도메인 네임을 AWS 리소스로 라우팅 (www.google.com -> AWS EC2)
  • MX(Mail eXchanger) - 이메일 서버 연동시 메일의 소유를 확인하기 위한 레코드
  • NS(Name Server) - DNS 레코드를 가진 DNS 서버를 식별하기 위한 레코드
  • SOA(Start Of Authority) - 도메인의 정보와 권한을 가진 레코드

라우팅 정책 - 단순 라우팅(Simple)

호스팅 영역 안의 레코드는 도메인 주소의 IP 주소값을 가지고 있으며, 이 레코드 값에 따라 라우팅할 수 있다.

  • 도메인 네임 -> IP 주소로 라우팅
  • 라우팅 대상이 여러 개(예, 2개의 IP주소)인 경우 랜덤하게 라우팅

라우팅 정책 - 가중치 기반(Weighted)

AWS-ANS_route53-4

  • 접속자가 요청하는 횟수의 가중치(%)를 기준으로 라우팅하는 방법
  • 트래픽을 분산하거나 버전이 다른 애플리케이션을 테스트하는 경우 유용
note

각 가중치를 더한 총합(전체 가중치 값)에서 개별 가중치 값을 나눈만큼의 비율로 트래픽을 분산시킵니다.

라우팅 정책 - 지연 시간(Latency)

  • 가장 짧은 지연시간을 제공하는 리전으로 라우팅하는 방법
note

서울 리전 근처에 있는 사용자들은 지연 시간이 가장 짧은 서울 리전으로 연결되고 미국 근처에 있는 사용자들은 지연 시간이 가장 짧은 미국 리전으로 연결

라우팅 정책 - 지리적 위치(GeoLocation)

  • 지연시간(Latency)기반 라우팅은 사용자와 가까운 AWS 리전으로 라우팅
  • 지리적 위치 라우팅은 사용자가 속한 대륙이나 국가를 기준으로 라우팅하는 방법
  • 예) 한국 또는 아시아로부터 오는 트래픽을 지정된 서버 IP로 라우팅

라우팅 정책 - 상태 검사(Health Check)

  • 서버의 상태를 모니터링하는 기능
  • 상태확인을 모니터링하고 상태가 좋지 않은 경우 다른 서버로 라우팅하는 장애조치를 구성할 수 있음

라우팅 정책 - 장애 조치(Failover)

AWS-ANS_route53-5

  • 기본(Primary) 라우팅이 실패하면 보조(Secondary)로 자동 라우팅되는 방식

라우팅 정책 - 다중값 응답(MultiValue)

  • 사용자가 요청 시 Route 53 DNS에서 다수의 값을 반환하는 라우팅
  • 리소스의 상태를 확인하여 DNS에서 상태확인에 따라 정상인 경우만 IP 주소를 전달

Route 53 Private Hosted DNS Zones

  • Amazon VPC내에서 트래픽을 라우팅
  • 프라이빗 Domain Name을 프라이빗 IP 주소로 변환하여 라우팅
  • 프라이빗 호스팅 영역을 VPC에서 사용하려면 VPC 설정의 DNS 호스팅 이름(DNS Hostname)과 DNS 확인(DNS Resolution)을 활성화해야 함

VPC - DNS

  • DNS 호스트 이름과 DNS 확인은 프라이빗 호스팅 영역에 대한 필수 설정
  • 프라이빗 호스팅 영역에 대한 DNS 쿼리는 Amazon 제공 VPC DNS 서버에서만 확인 가능
DNS Hostname
  • 기본(Default) VPC가 아닌 새로 생성한 Custom VPC의 경우 이 옵션은 기본적으로 비활성화되어 있음
  • 프라이빗 호스팅 영역을 사용하려면 이 옵션을 활성화해야 함

VPC가 퍼블릭 IP 주소가 있는 인스턴스에 퍼블릭 DNS 호스트 이름을 할당하도록 지원할 여부를 결정합니다.

DNS Resolution
  • 프라이빗 호스팅 영역은 VPC DNS 서버로부터의 DNS 쿼리만 수락
  • VPC DNS 서버의 IP 주소는 VPC IPv4 네트워크 범위를 기준으로 2를 더한 예약된 IP 주소

DNS 확인(DNS Resolution)을 활성화하면 DNS 확인을 수행하기 위한 확인자(Resolver)로서 VPC DNS 서버를 사용할 수 있음

VPC - DHCP Option Sets

  • DHCP(Dynamic Host Configuration Protocol)는 TCP/IP 네트워크 상의 호스트로 구성 정보를 전달하기 위한 표준을 제공
  • DHCP 옵션 세트에 지정된 도메인 서버를 사용해 도메인 네임을 확인
  • VPC에서 도메인 네임 확인을 위한 도메인 서버 정보를 지정할 수 있음
  • 사용자 지정 도메인 네임 또는 AWS 기본 도메인 이름 ex) ap-southeast-1.compute.internal 사용
  • 사용자 지정 도메인 네임 서버 또는 AmazonProviderDNS 사용
  • NTP 서버, NetBIOS 서버 지정 가능
  • DHCP 옵션 세트는 VPC 단위로 지정되며 하나의 옵션세트만 지정 가능
  • 기존의 DHCP 옵션세트는 수정이 불가능하며 필요하면 새로 생성해야 함

Route 53 DNS Resolver for Hybrid Cloud

AWS-ANS_route53-6

note

만약에 VPC와 온프레미스에 있는 데이터센터를 VPN이나 Direct Connect에 연결했을 경우 호스트 네임을 온프레미스에서 사용해야 할 경우가 있습니다. 이 때 온프레미스에 별도의 DNS 서버를 구축하는 것이 아니라 Route 53에 있는 DNS 리졸버라는 기능을 사용하여 온프레미스에 별도의 DNS 서버를 배포하지 않고도 아마존의 VPC와 온프레미스의 데이터 간에 트래픽을 전달할 수 있습니다.

  • Route 53 Resolver: 엔드포인트 및 전달 규칙을 시작하여 추가 DNS 서버를 배포하지 않고도 Amazon VPC와 온프레미스 데이터 센터간에 트래픽을 전달

사용 시나리오

  1. Private Hosted Zone은 Shared Service VPC에 연결
  2. Inbound Endpoint: 온프레미스에서 확인하려는 Route 53 이름에 대하여 온프레미스 DNS 서버에 전달 규칙을 만듦.
  3. Outbound Endpoint: AWS VPC에서 온프레미스로 확인하려는 이름에 대한 Route 53 Resolver 규칙을 생성
Trouble Shooting

Route 53 서버를 찾을 수 없음

Route 53에 등록된 기존의 호스팅 영역을 삭제하고 새로운 실습을 다시 진행해보고자 새로운 호스팅 영역을 생성하고 도메인에 등록된 네임 서버를 호스팅 영역의 NS 레코드의 값으로 등록하고 TTL을 10초로 낮춰 기다리고 있었는데 몇 번을 시도해도 인터넷과 연결이 되지 않았다.

원인

nxdomain 오류가 있었는데 확인해보니 호스팅 영역의 도메인 이름에 오타가 있어 등록한 도메인과 달라 발생한 오류로 이로 인해 인터넷과 연결이 되지 않았던 것이었다. 덕분에 Route 53 FAQ를 정독하게 됐다. 도메인 등록과 DNS 서버(호스팅)를 모두 Route 53에서 진행하다보니 헷갈렸던 내용들이 한 번에 정리되었다.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/route-53-troubleshoot-nxdomain-responses/

따라서 반대로 도메인의 이름 서버에 등록된 기존 네임 서버를 삭제하고 호스팅 영역에 있는 네임 서버로 업데이트 하였다. 그래도 접속이 되지 않아 공식문서를 찾아보니 이런 내용이 있었다.

도메인 이름 서버를 Route 53 호스팅 영역의 이름 서버로 변경하더라도 실제로 변경사항이 적용되어 Route 53이 DNS 서비스로 사용되려면 최대 2일이 걸릴 수 있습니다. 이는 인터넷을 통하는 DNS 해석기가 일반적으로 2일 1회에 한하여 이름 서버를 요청하고 응답을 캐시하기 때문입니다.

도메인에 등록한 네임 서버가 레코드를 업데이트한 호스팅 영역의 네임 서버와 일치하지 않는 경우 다음 두 가지 방법을 사용할 수 있습니다.

1. 도메인에 현재 연결된 호스팅 영역의 레코드 변경 (권장)

현재 도메인 등록에 연결되지 않은 호스팅 영역에서 변경한 사항을 기록해 둡니다. 그런 다음 도메인 등록에 연결된 호스팅 영역으로 이동하여 동일한 변경을 수행합니다. 변경 사항이 즉시 적용되기 때문에 이 방법이 권장됩니다. 즉 도메인에 등록된 이름 서버를 변경하지 않고 이를 호스팅 네임 서버에도 업데이트하여 즉시 사용할 수 있도록 합니다.

  1. 새 호스팅 영역을 구성합니다.
  2. TTL (Time To Live) 값을 낮춥니다.
  3. 이전 TTL이 만료될 때까지 기다립니다.
  4. NS(이름 서버) 레코드를 현재 DNS 서비스 공급자로 압데이트하여 새 이름 서버를 사용합니다.
  5. TTL 값을 늘립니다.

2. 도메인 등록을 업데이트하여 다른 이름 서버 사용

도메인에 네임 서버에 업데이트한 호스팅 영역의 이름 서버를 사용한다. 이 경우 업데이트 되기까지 약 이틀 정도를 기다려야 합니다.

CNAME vs Alias

  • AW의 리소스(로드밸런서, CloudFront...)를 사용하는 경우에 호스트 이름이 노출된다.

    보유한 도메인에 호스트 이름을 맵핑할 수 있다. 즉, myapp.example.com을 로드밸런서에 맵핑하는 것.

  • CNAME: 호스트 이름이 다른 호스트 이름으로 라우팅될 수 있다.

    예를 들어, app.example.com 도메인이 test.anything.com으로 향할 수 있다. 루트 도메인 이름이 아닌 경우에만 가능해서 example.com 앞에 뭔가가 붙어있어야 한다. 여기서는 app이 붙어있다. 즉, example.com은 CNAME 레코드를 사용하지 못한다.

  • Alias: 호스트 이름이 특정 AWS 리소스(로드밸런서, CloudFront...)로 라우팅될 수 있다.

    • 별칭 레코드는 루트 및 비루트 도메인 모두 작동한다. example.com을 별칭 레코드를 사용하여 AWS 리소스로 향하도록 할 수 있다.
    • 오직 AWS 리소스에만 맵핑이 된다.
    • 예를 들어, Route 53에서 example.com을 A 레코드를 사용하여 해당 레코드명이 로드밸런서의 DNS 이름(로드밸런서의 도메인 이름)으로 지정한다. 만약 로드 밸런서의 IP 주소가 변경된다면 A 레코드는 바로 변경사항을 캐치한다.
    • CNAME과 달리 별칭 레코드는 Zone Apex라는 DNS 네임스페이스의 상위 노드로 사용될 수 있다. 따라서 example.com에도 별칭 레코드를 사용할 수 있다.
    • AWS 리소스를 위한 별칭 레코드의 타입은 항상 A 또는 AAAA인데, 리소스는 IPv4나 IPv6 둘 중 하나이다.
    • 별칭 레코드를 사용하면 TTL을 설정할 수 없다. Route 53에 의해 자동으로 설정된다.
Route 53 Resolver Example

Resolver Inbound Endpoint

AWS-ANS_route53-7

Resolver Outbound Endpoint

AWS-ANS_route53-8

EC2 Proxy

AWS-ANS_route53-9

다중 계정에서의 DNS 쿼리

AWS-ANS_route53-10

Amazon Route 53에서 DNSSEC 검증 활성화

Amazon Route 53에서 Virtual Private Cloud(VPC)에 의해 DNSSEC 검증을 활성화하면 응답이 변조되지 않았는지 확인하기 위해 DNSSEC 서명을 암호화 방식으로 확인합니다. VPC 세부 정보 페이지에서 DNSSEC 검증을 사용합니다.

  • DNSSEC 검증은 Amazon Route 53의 퍼블릭 서명된 이름에만 적용되며 전달된 영역에는 적용되지 않습니다.
  • DNSSEC 검증을 활성화하면 VPC에서 AWS 리소스의 퍼블릭 DNS 레코드에 대한 DNS 해석에 영향을 줄 수 있어 중단이 발생할 수 있습니다. DNSSEC 검증을 활성화 또는 비활성화하는 데 몇 분 정도 걸릴 수 있습니다.
  • 현재 VPC(AmazonProvidedDNS)의 Amazon Route 53 Resolver는 DNS 쿼리의 DO(DNSSEC OK) EDNS 헤더 비트 및 CD(사용 안 함 확인) 비트를 무시하비다. DNSSEC을 구성한 경우 이는 Route 53 Resolver가 DNSSEC 유효성 검사를 수행하는 동안 DNSSEC 레코드를 반환하거나 응답에 AD 비트를 설정하지 않는다는 것을 의미합니다. 따라서 자체 DNSSEC 유효성 검사를 수행하는 것은 현재 Route 53 Resolver에서 지원되지 않습니다. 이 작업을 수행해야 하는 경우 자체 재귀 DNS 확인을 수행해야 합니다.

Route 53 Resolver DNS Firewall

Route 53 Resolver DNS 방화벽을 사요하면 Virtual Private Cloud에 대한 아웃바운드 DNS 트래픽을 필터링하고 제어할 수 있습니다. 이렇게 하려면 DNS 방화벽 규칙 그룹에 재사용 가능한 필터링 규칙 컬렉션을 생성하고 규칙 그룹을 VPC에 연결한 다음 DNS 방화벽 로그 및 지표 활동을 모니터링합니다. 활동에 따라 DNS 방화벽의 동작을 적절하게 조정할 수 있습니다.

DNS 방화벽을 사용하면 VPC의 아웃바운드 DNS 요청을 보호할 수 있습니다. 이러한 요청은 도메인 이름 해석을 위해 Resolver를 통해 라우팅됩니다. DNS 방화벽 보호의 주된 용도는 데이터의 DNS 유출을 방지하는 것입니다. DNS 유출은 공격자가 VPC 애플리케이션 인스턴스를 손상시킨 다음 DNS 조회를 사용하여 VPC에서 데이터를 제어하는 도메인으로 전송할 때 발생할 수 있습니다. DNS 방화벽을 사용하면 애플리케이션에서 쿼리할 수 있는 도메인을 모니터링하고 제어할 수 있습니다. 잘못된 것으로 알고 있는 도메인에 대한 액세스를 거부하고 다른 모든 쿼리가 통과하도록 허용할 수 있습니다. 또는 명시적으로 신뢰하는 도메인을 제외한 모든 도메인에 대한 액세스를 거부할 수 있습니다.

DNS 방화벽을 사용하여 VPC 엔드포인트 이름을 포함하여 프라이빗 호스팅 영역(공유 또는 로컬 호스팅 영역)의 리소스에 대한 해석 요청을 차단할 수도 있습니다. 또한 퍼블릭 또는 프라이빗 Amazon EC2 인스턴스 이름에 대한 요청을 차단할 수 있습니다.

DNS 방화벽은 Route 53 Resolver 기능이며 Resolver 설정이 추가로 필요하지 않습니다.

AWS Firewall Manager는 DNS 방화벽을 지원합니다.

Firewall Manager를 사용하여 AWS Organizations 계정에서 VPC의 DNS 방화벽 규칙 그룹 연결을 중앙에서 구성하고 관리할 수 있습니다. Firewall Manager는 Firewall Manager DNS 방화벽 정책 범위로 들어오는 VPC에 대한 연결을 자동으로 추가합니다.

AWS Network Firewall에서 DNS 방화벽이 작동하는 방식

DNS 방화벽과 Network Firewall 모두 다른 유형의 트래픽이 아닌 경우 도메인 이름 필터링을 제공합니다. DNS 방화벽과 Network Firewall을 함께 사용하면 서로 다른 두 네트워크 경로에서 애플리케이션 계층 트래픽에 대한 도메인 기반 필터링을 구성할 수 있습니다.

  • DNS 방화벽은 VPC 내의 애플리케이션에서 Route 53 Resolver를 통과하는 아웃바운드 DNS 쿼리에 대한 필터링을 제공합니다. 쿼리에 대한 사용자 지정 응답을 차단된 도메인 이름에 전송하도록 DNS 방화벽을 구성할 수도 있습니다.
  • Network Firewall은 네트워크 및 애플리케이션 계층 트래픽 모두에 대한 필터링을 제공하지만 Route 53 Resolver에서 만든 쿼리는 표시하지 않습니다.

여러 리전에서 Route 53 Resolver DNS 방화벽 규칙 그룹 사용

Route 53 Resolver DNS 방화벽은 리전 서비스이므로 AWS 리전에서 만든 객체는 해당 지역에서만 사용할 수 있습니다. 2개 이상 리전에서 동일한 규칙 그룹을 사용하려면 각 리전에서 규칙을 생성해야 합니다.

Route 53 Resolver DNS 방화벽이 작동하는 방식

Route 53 Resolver DNS 방화벽을 사용하면 사이트에 대한 액세스를 제어하고 Route 53 Resolver를 통해 VPC에서 나가는 DNS 쿼리에 대한 DNS 수준 위협을 차단할 수 있습니다. DNS 방화벽을 사용하여 VPC와 연결하는 규칙 그룹에 도메인 이름 필터링 규칙을 정의합니다. 허용하거나 차단할 도메인 이름 목록을 지정하고 차단하는 DNS 쿼리에 대한 응답을 사용자 지정할 수 있습니다.

DNS 방화벽은 도메인 이름만 필터링합니다. DNS 방화벽은 해당 이름을 차단할 IP 주소로 해석하지 않습니다. 또한 DNS 방화벽은 DNS/UDP 트래픽을 필터링하지만 HTTPS, SSH, TLS, FTP 등과 같은 다른 애플리케이션 계층 프로토콜을 필터링하지 않습니다.

Route 53 Resolver DNS 방화벽이 DNS 쿼리를 필터링하는 방법

DNS 방화벽 규칙 그룹이 VPC의 Route 53 Resolver와 연결되어 있으면 방화벽에서 다음 트래픽을 필터링합니다.

  • 해당 VPC 내에서 시작되는 DNS 쿼리입니다.
  • Resolver 엔드포인트를 온프레미스 리소스에서 DNS 방화벽을 자체 해석기와 연결한 동일한 VPC로 전달하는 DNS 쿼리입니다.

DNS 방화벽은 DNS 쿼리를 수신하면 구성한 규칙 그룹, 규칙 및 기타 설정을 사용하여 쿼리를 필터링하고 결과를 다시 Resolver에 발송합니다.

  • DNS 방화벽은 일치하는 항목을 찾거나 모든 규칙 그룹을 소진할 때까지 VPC와 연결된 규칙 그룹을 사용하여 DNS 쿼리를 평가합니다. DNS 방화벽은 가장 낮은 숫자 설정부터 시작하여 연결에서 설정한 우선 순위에 따라 규칙 그룹을 평가합니다.
  • 각 규칙 그룹 내에서 DNS 방화벽은 일치하는 항목을 찾거나 모든 규칙을 모두 소진할 때까지 각 규칙의 도메인 목록에 대해 DNS 쿼리를 평가합니다. DNS 방화벽은 가장 낮은 숫자 설정부터 시작하여 우선 순위에 따라 규칙을 평가합니다.
  • DNS 방화벽이 규칙의 도메인 목록과 일치하는 항목을 찾으면 쿼리 평가를 종료하고 평가 결과를 Resolver에 발송합니다. 작업이 alert인 경우 DNS 방화벽은 구성된 Resolver 로그에도 알림을 발송합니다.
  • DNS 방화벽이 일치 항목을 찾지 못하고 모든 규칙 그룹을 평가하는 경우 평소대로 쿼리에 응답합니다.

Resolver는 DNS 방화벽의 응답에 따라 쿼리를 라우팅합니다. 드물게 DNS 방화벽이 응답하지 않는 경우 Resolver는 VPC의 구성된 DNS 방화벽 오류 모드를 적용합니다.

DNS 방화벽의 규칙 동작

DNS 방화벽이 DNS 쿼리와 규칙의 도메인 사양 간에 일치하는 항목을 찾으면 규칙에 지정된 작업이 쿼리에 적용됩니다. 생성하는 각 규칙에서는 다음 옵션 중 하나를 지정해야 합니다.

  • Allow: 쿼리 검사를 중지하고 통과하도록 요청합니다.
  • Alert: 쿼리 검사를 중지하고 통과하도록 허용한 다음 Route 53 Resolver 로그에 쿼리 알림을 기록합니다.
  • Block: 쿼리 검사를 중지하고, 의도한 대상으로 이동하지 못하도록 차단하고, 쿼리에 대한 차단 작업을 Route 53 Resolver 로그에 기록합니다.
다음과 같이 차단 응답으로 회신합니다.
  • NODATA: 쿼리가 성공했지만 응답을 사용할 수 없음을 나타내는 응답입니다.
  • NXDOMAIN: 쿼리의 도메인 이름이 존재하지 않음을 나타내는 응답입니다.
  • OVERRIDE: 응답에서 사용자 지정을 재정의합니다. 이 옵션은 다음과 같은 추가 설정이 필요합니다.

OVERRIDE

  • Record value: 쿼리에 대한 응답으로 반송하는 사용자 지정 DNS 레로드입니다.
  • Record type: DNS 레코드의 유형입니다. 이렇게 하면 레코드 값의 형식을 결정할 수 있습니다. 반드시 CNAME이여야 합니다.
  • Time to live in seconds: DNS 해석기 또는 웹 브라우저에서 재정의 레코드를 캐시하고 다시 수신되는 경우 이 쿼리에 대한 응답으로 사용하기 위해 권장되는 시간입니다. 기본적으로 이 값은 0이며 레코드는 캐시되지 않습니다.
모니터링

퍼블릭 DNS 쿼리 로깅

다음과 같이 Route 53이 수신하는 퍼블릭 DNS 쿼리에 대한 정보를 로깅하도록 Amazon Route 53을 구성할 수 있습니다.

  • 요청된 도메인 또는 하위 도메인
  • 요청의 날짜 및 시간
  • DNS 레코드 유형(예: A 또는 AAAA)
  • DNS 쿼리에 응답한 Route 53 엣지 로케이션
  • DNS 응답 코드(예: NoError 또는 ServFail)

쿼리 로깅을 구성하면 Route 53는 CloudWatch Logs에 로그를 전송합니다. CloudWatch Logs 도구를 사용하여 쿼리 로그에 액세스합니다.

쿼리 로깅은 프라이빗 호스팅 영역에서도 사용할 수 있습니다.

쿼리 로그에는 DNS 해석기가 Route 53으로 전달하는 쿼리만 포함되어 있습니다. DNS 해석기가 쿼리에 대한 응답을 이미 캐시한 경우 해석기는 해당 레코드에 대한 TTL이 만료될 때까지 쿼리를 Route 53에 전달하지 않고 캐시된 응답을 계속 반환합니다.

도메인 이름 또는 하위 도메인 이름에 대해 제출된 DNS 쿼리 수, 사용자가 사용하고 있는 해석기 및 레코드에 대한 TTL에 따라 쿼리 로그에는 DNS 해석기에 제출된 수천 개의 쿼리 중 한 개의 쿼리에 대한 정보만 포함될 수 있습니다.

자세한 로깅 정보가 필요하지 않은 경우에는 Amazon CloudWatch 지표를 사용해 호스팅 영역에서 Route 53이 응답하는 DNS 쿼리의 총 수를 확인할 수 있습니다.

Resolver 쿼리 로깅

다음과 같은 DNS 쿼리를 로그할 수 있습니다.

  • 지정한 Amazon VPC에서 시작되는 쿼리와 해당 DNS 쿼리에 대한 응답입니다.
  • 인바운드 해석기 엔드포인트를 사용하는 온프레미스 리소스의 쿼리입니다.
  • 재귀 DNS 해석을 위해 아웃바운드 해석기 엔드포인트를 사용하는 쿼리입니다.
  • Route 53 Resolver DNS 방화벽 규칙을 사용하여 도메인 목록을 차단, 허용 또는 모니터링하는 쿼리입니다.

Resolver 쿼리 로그에는 다음과 같은 값이 포함됩니다.

  • VPC가 생성된 AWS 리전
  • 쿼리가 시작된 VPC의 ID
  • 쿼리가 시작된 인스턴스의 IP 주소
  • 쿼리가 시작된 리소스의 인스턴스 ID
  • 쿼리가 처음 만들어진 날짜와 시간
  • 요청된 DNS 이름
  • DNS 레코드 유형
  • DNS 응답 코드
  • DNS 쿼리에 대한 응답으로 반환되는 DNS 응답 데이터
  • DNS 방화벽 규칙 작업에 대한 응답

DNS 해석기의 표준과 마찬가지로 해석기는 해당 해석기의 유지 시간(TTL)에 따라 결정된 시간 동안 DNS 쿼리를 캐시합니다. Route 53 Resolver는 VPC에서 시작된 쿼리를 캐시하고 가능한 경우 캐시에서 응답하여 응답 속도를 높입니다. Resolver 쿼리 로깅은 고유 쿼리만 로그하며 해서긱가 캐시에서 응답할 수 있는 쿼리는 로그하지 않습니다.

예를 들어 쿼리 로깅 구성에서 쿼리를 로깅하는 VPC 중 하나에 있는 EC2 인스턴스가 accounting.example.com에 대한 요청을 제출한다고 가정합니다. 해석기는 해당 쿼리에 대한 응답을 캐시하고 쿼리를 로그합니다. 동일한 인스턴스의 탄력적 네트워크 인터페이스가 해석기 캐시의 TTL 내에서 accounting.example.com에 대한 쿼리를 만드는 경우 해석기가 캐시에서 쿼리에 응답합니다. 두 번째 쿼리는 로그되지 않습니다.

로그를 다음 AWS 리소스 중 하나로 보낼 수 있습니다.

  • Amazon CloudWatch Logs 로그 그룹
  • Amazon S3 버킷
  • Kinesis Data Firehose 전송 스트림

모범 사례

Resolver 엔드포인트를 사용하여 루프 구성을 방지합니다.

동일한 VPC를 (엔드포인트의 직접 대상이든, 온프레미스 DNS 서버를 통해서든) Resolver 규칙 및 인바운드 엔드포인트에 연결하지 마세요. Resolver 규칙의 아웃바운드 엔드포인트가 VPC를 규칙과 공유하는 인바운드 엔드포인트를 가리키면 쿼리가 인바운드 엔드포인트와 아웃바운드 엔드포인트 간에 지속적으로 전달되는 루프가 발생할 수 있습니다.

전달 규칙은 AWS Resource Access Manager(AWS RAM)을 사용하여 다른 계정과 공유되는 다른 VPC와 여전히 연결될 수 있습니다. 허브 또는 중앙 VPC와 연결된 프라이빗 호스팅 영역은 여전히 인바운드 엔드포인트에 대한 쿼리에서 해석됩니다. 해석기 전달 규칙이 이 해석을 변경하지 않기 때문입니다.

Resolver 엔드포인트 크기 조정

Resolver 엔드포인트 보안 그룹은 연결 추적을 사용해 엔드포인트에서 송수신하는 트래픽에 대한 정보를 수집합니다. 각 엔드포인트 인터페이스에는 추적할 수 있는 최대 연결 수가 있으며 많은 양의 DNS 쿼리가 연결 수를 초과하면 제한 및 쿼리 손실이 발생할 수 있습니다. 추적되는 연결 수를 줄이려면 트래픽의 연결 상태에 따라 트래픽을 허용하는 보안 그룹 규칙을 구현하세요.

인바운드 규칙

  • TCP 53 : 0.0.0.0/0
  • UDP 53 : 0.0.0.0/0

아웃바운드 규칙

  • TCP All : 0.0.0.0/0
  • UDP All : 0.0.0.0/0

인바운드 Resolver 엔드포인트를 사용하는 클라이언트의 경우 DNS 트래픽을 생성하는 40,000개 이상의 고유 IP 주소 및 포트 조합이 있는 경우 탄력적 네트워크 인터페이스 용량에 영향을 미칩니다.

Resolver 엔드포인트의 고가용성

Route 53 Resolver 인바운드 엔드포인트를 만드는 경우 Route 53에서는 네트워크의 DNS Resolver가 쿼리를 전달할 IP 주소를 두 개 이상 만들어야 합니다. 또한 중복성을 위해 가용 영역 2개 이상에서 IP 주소를 지정해야 합니다.

항상 둘 이상의 탄력적 네트워크 인터페이스 엔드포인트를 사용할 수 있어야 하는 경우 네트워크 인터페이스를 필요한 수보다 하나 더 생성하여 트래픽 급증 가능성에 대비할 수 있는 추가 용량을 확보하는 것이 좋습니다. 또한 추가 네트워크 인터페이스는 유지 관리 또는 업그레이드와 같은 서비스 운영 중에도 가용성을 보장합니다.

DNS zone walking

DNS zone walking 공격은 DNSSEC 서명 DNS 영역에서 모든 콘텐츠를 가져오려고 시도합니다. Route 53 Resolver 팀이 엔드포인트에서 DNS 영역을 탐색(walk)할 때, 생성된 트래픽 패턴과 일치하는 트래픽 패턴을 감지하면 서비스팀에서 엔드포인트의 트래픽을 제한합니다. 따라서 DNS 쿼리 시간 초과의 비율이 높아질 수 있습니다.

하이브리드 환경을 위한 Amazon Route 53 DNS Resolver

온프레미스 환경을 Direct Connect(DX)를 통해 AWS에 연결했을 때, 전체 환경에 걸쳐 DNS 이름에 대한 대응이 필요하였으며 AWS 사용자가 직접 DNS 서버를 별도로 구축하고 제공해야 하는 불편함을 Amazon Route 53 DNS Resolver가 해결해줍니다.

이 솔루션은 프라이빗 연결을 통해 온프레미스와 AWS 간의 양방향 쿼리를 지원하는 일련의 기능이 조합되어 있습니다. Route 53 Resolver 엔드포인트는 온프레미스에서 온 DNS 쿼리가 AWS 호스팅 도메인을 해석할 수 있도록 인바운드 쿼리 기능을 제공합니다. 온프레미스 DNS 인프라와 AWS 사이에는 Direct Connect(DX) 또는 가상 프라이빗 네트워크(VPN)를 통해 연결을 설정해야 합니다. 엔드포인트는 Resolver를 제공하려는 각 서브넷에 대한 IP 주소 지정을 통해 구성됩니다.

아웃바운드 DNS 쿼리는 조건부 전달 규칙을 사용하여 활성화됩니다. 온프레미스 DNS 인프라 내에 호스팅된 도메인은 Route 53 Resolver에서 전달 규칙으로 구성될 수 있습니다. 규칙은 이러한 도메인 중 하나에 대한 쿼리가 제출될 때 트리거되며 규칙은 DNS 요청을 규칙과 함께 구성된 DNS 서버로 전달합니다. 인바운드 쿼리와 마찬가지로 이 기능을 사용하려면 DX 또는 VPN을 통한 프라이빗 연결이 필요합니다.

AWS-ANS_route53-11

이 두 기능을 조합하면 하이브리드 워크로드에 대한 재귀적 DNS 조회가 가능합니다. 이렇게 하면 두 환경을 모두 운영하는 동시에 추가적인 DNS 인프라의 관리, 운영 및 유지관리 부담을 줄일 수 있습니다.


호스팅 영역에서 DNSSEC를 활성화하는 방법

  1. DNSSEC 서명을 위한 준비 작업
  • 호스팅 영역의 가용성 모니터링 (고객 피드백을 통해)
  • 레코드의 TTL 낮추기 (1시간 권장)
  • SOA 최소값을 5분으로 설정하기
  1. DNSSEC 서명 및 KSK 생성
  • Route 53에서 호스팅 영역에 대해 DNSSEC를 활성화 (콘솔 / CLI)
  • Route 53에서 KSK(Zone Signing Key)를 생성하고 고객 관리형 CMK(Customer Managed CMK)에 연결
  1. 신뢰 체인(Chain of Trust) 구축
  • 호스팅 영역과 상위 호스팅 영역 간에 신뢰 체인을 생성
  • 상위 영역에서 Delegation Signer (DS) 레코드를 생성
  • DS 레코드에는 DNS 레코드를 서명하는 데 사용되는 공개 키의 해시가 포함
  • Registrar은 Route 53이거나 써드파티의 Registar일 수 있음
  1. (권장 사항) CloudWatch 알람을 사용하여 오류 모니터링
  • DNSSECInternalFailureDNSSECKevSigningKeysNeedingAction에 대한 CloudWatch 알람을 생성

위의 절차에 따라 호스팅 영역에서 DNSSEC를 활성화할 수 있습니다. DNSSEC는 도메인의 DNS 레코드를 서명하여 DNS 데이터의 무결성과 인증을 보장하는 보안 기술입니다.

리졸버 엔드포인트

  • 동일한 AWS 리전의 하나 이상의 VPC와 관련됩니다.
  • 고가용성을 위해 두 개의 가용 영역(AZ)에서 생성합니다.
  • 각 엔드포인트는 IP 주소당 초당 10,000개의 쿼리를 지원합니다.

인바운드 엔드포인트

  • 네트워크의 DNS 리졸버는 DNS 쿼리를 Route 53 리졸버로 전달할 수 있습니다.
  • DNS 리졸버를 통해 AWS 리소스(예: EC2 인스턴스)와 Route 53 프라이빗 호스팅 영역의 레코드에 대한 도메인 이름을 해석할 수 있습니다.

아웃바운드 엔드포인트

  • Route 53 리졸버는 조건에 따라 DNS 쿼리를 DNS 리졸버로 전달합니다.
  • 리졸버 규칙(Resolver Rules)을 사용하여 DNS 쿼리를 DNS 리졸버로 전달할 수 있습니다.

리졸버 엔드포인트는 AWS의 관리형 DNS 서비스인 Route 53 Resolver를 통해 제공됩니다. 인바운드 엔드포인트를 사용하면 내부 네트워크의 DNS 리졸버가 Route 53 리졸버로 DNS 쿼리를 전달하여 AWS 리소스와 Route 53 프라이빗 호스팅 영역의 레코드에 대한 도메인 이름을 해석할 수 있습니다. 아웃바운드 엔드포인트는 리졸버 규칙을 사용하여 DNS 쿼리를 외부 DNS 리졸버로 전달합니다.

리졸버 엔드포인트는 특정 VPC와 관련되며 고가용성을 위해 여러 가용 영역에 걸쳐 생성됩니다. 각 엔드포인트는 단일 IP 주소당 초당 10,000개의 쿼리를 처리할 수 있습니다. 이를 통해 안정적이고 확장 가능한 DNS 해석을 제공할 수 있습니다.

리졸버 규칙

  • 네트워크의 DNS 리졸버로 전달되는 DNS 쿼리를 제어할 수 있습니다.
  • 조건부 전달 규칙 (전달 규칙)
    • 특정 도메인 및 해당 서브도메인의 DNS 쿼리를 대상 IP 주소로 전달합니다.
  • 시스템 규칙
    • 전달 규칙에 정의된 동작을 선택적으로 덮어쓸 수 있습니다. (예: acme.example.com의 서브도메인에 대한 DNS 쿼리를 전달하지 않음)
  • 자동 정의된 시스템 규칙
    • 선택한 도메인의 DNS 쿼리를 해석하는 방법을 정의합니다. (예; AWS 내부 도메인 이름, 프라이빗 호스팅 영역)
  • 여러 규칙이 일치하는 경우, Route 53 리졸버는 가장 구체적인 일치 항목을 선택합니다.
  • 리졸버 규칙은 AWS RAM(AWS Resource Access Manager)을 사용하여 여러 계정 간에 공유할 수 있습니다.
    • 하나의 계정에서 중앙에서 관리합니다.
    • 여러 VPC에서 동일한 규칙에 정의된 대상 IP로 DNS 쿼리를 전송합니다.

리졸버 규칙을 사용하면 DNS 쿼리르 세밀하게 제어할 수 있습니다. 조건부 전달 규칙을 사용하여 특정 도메인 및 서브도메인의 DNS 쿼리를 특정 IP 주소로 전달할 수 있습니다. 시스템 규칙을 사용하여 특정 도메인의 DNS 쿼리를 제외하거나 덮어쓸 수 있습니다.

리졸버 규칙은 여러 규칙이 일치하는 경우 가장 구체적인 일치 항목을 선택합니다. 또한, AWS RAM을 사용하여 리졸버 규칙을 여러 계정 간에 공유할 수 있습니다. 이를 통해 리졸버 규칙을 중앙에서 한 곳에서 관리하고, 여러 VPC에서 동일한 규칙에 정의된 대상 IP로 DNS 쿼리를 전송할 수 있습니다.

Route 53 - 쿼리 로깅

  • Route 53 리졸버가 수신하는 공개 DNS 쿼리에 대한 정보를 로깅합니다.
  • 공개 호스팅 영역에 대해서만 동작합니다.
  • 로그를 CloudWatch Logs로 전송 가능 (S3로 내보내기 가능)
  • VPC 내의 리소스가 수행하는 모든 DNS 쿼리를 로깅합니다.
    • 프라이빗 호스팅 영역
    • 리졸버 인바운드 및 아웃바운드 엔드포인트
    • 리졸버 DNS 방화벽
  • 로그를 CloudWatch Logs, S3 버킷 또는 Kinesis Data Firehose로 전송할 수 있습니다.
  • AWS 리소스 액세스 관리자(AWS RAM)를 사용하여 구성을 다른 AWS 계정과 공유할 수 있습니다.

Route 53 DNS 쿼리 로깅 기능은 공개 호스팅 영역의 DNS 쿼리에 대한 정보를 기록합니다. 이를 통해 VPC 내의 리소스, 프라이빗 호스팅 영역, 리졸버 엔드포인트, 리졸버 DNS 방화벽에서 수행되는 DNS 쿼리를 추적하고 분석할 수 있습니다. 로그는 CloudWatch Logs, S3 버킷 또는 Kinesis Data Firehose로 전송할 수 있으며, 필요에 따라 다른 AWS 계정과 구성을 공유할 수 있습니다.

Route 53 - Resolver DNS Firewall

  • 관리형 방화벽으로 VPC를 통해 Route 53 리졸버를 통해 나가는 아웃바운드 DNS 요청을 필터링할 수 있습니다.
  • 악성 도메인을 블랙 리스트에 등록하거나 신뢰할 수 있는 도메인을 화이트리스트에 등록할 수 있습니다.
  • 이는 VPC 내의 침투된 응용 프로그램이 DNS를 통해 데이터를 외부에 전송하는 것(도멩니을 통한 데이터 유출, DNS exfiltration)을 방지하기 위한 것입니다.
  • AWS Firewall Manager에서 관리/구성할 수 있습니다.
  • CloudWatch Logs 및 Route 53 리졸버 쿼리 로그와 통합되어 사용됩니다.
  • Fail-close vs Fail-open (DNS Firewall Configuration)
    • Fail-close: DNS Firewall로부터 응답이 없으면 리졸버가 쿼리를 차단합니다. (가용성보다 보안을 우선)
    • Fail-open: DNS Firewall로부터 응답이 없어도 리졸버가 쿼리를 허용합니다. (보안보다 가용성을 우선)

Route 53 Resolver DNS Firewall은 VPC를 통해 나가는 아웃바운드 DNS 요청을 필터링하여 관리하는 방화벽입니다. 이를 통해 악성 도메인을 차단하거나 신뢰할 수 있는 도메인을 허용함으로써 VPC 내에서 DNS를 통한 데이터 유출을 방지할 수 있습니다. 이러한 방화벽은 AWS Firewall Manager를 통해 관리하고 구성할 수 있으며, CloudWatch Logs 및 Route 53 Resolver 쿼리 로그와 통합됩니다.

DNS Firewall 구성에서 Fail-closeFail-open 옵션을 선택할 수 있습니다. Fail-close 옵션은 DNS Firewall로부터 응답이 없으면 리졸버가 쿼리를 차단하고, Fail-open 옵션은 DNS Firewall로부터 응답이 없어도 리졸버가 쿼리를 허용합니다. 이를 통해 보안과 가용성 사이에서 적절한 설정을 선택할 수 있습니다.