DNS & Route 53

정연희·2024년 4월 15일
0

AWS

목록 보기
4/18
post-thumbnail

DNS (Domain Name System)

DNS는 컴퓨터 네트워크에서 도메인 이름 -> IP 주소 또는 IP 주소 -> 도메인 이름으로 변환하는 시스템이다. 각 장치 및 서비스는 인터넷에서 고유한 IP 주소를 가지고 있지만, 사용자는 이를 기억하기 어렵기에 도메인 이름을 특정 IP 주소와 매핑함으로써 사용자가 편맇게 서비스에 접속할 수 있도록 한다.

분산형 데이터베이스 시스템

DNS는 분산형 데이터베이스 시스템인데, 그 이유는 DNS가 전 세계적으로 수많은 서버에 분산되어 있고, 이러한 서버 간에 정보를 공유하고 동기화하기 때문이다. 각 서버는 특정 영역 또는 도메인의 정보를 관리한다.

DNS Hierarchy

세상에는 수많은 도메인 이름이 존재하고, DNS는 분산형 데이터베이스 시스템인데, 그럼 어떻게 IP 주소를 찾는 것일까? 바로 DNS 계층 구조를 활용한다. DNS 계층 구조는 DNS 시스템에서 도메인 네임을 관리하고 구성하는 방법을 설명한다. 이 계층 구조는 최상위(root)에서부터 가장 하위 수준까지 이어지며, 각 수준은 점으로 구분된다. 일반적으로 다음과 같은 구조를 따른다.

  • 최상위 수준 도메인(TLD, Top-Level Domain)
    • 최상위 수준 도메인은 인터넷에서 가장 높은 수준의 도메인으로, 국가 코드 최상위 도메인(Country Code Top-Level Domain, ccTLD)과 일반 최상위 도메인(gTLD, Generic Top-Level Domain)으로 나뉜다
    • gTLD -> ".com", ".org", ".net"
    • ccTLD -> ".kr", ".jp", ".uk"
  • 2차 수준 도메인(Second-Level Domain)
    • 2차 수준 도메인은 최상위 수준 도메인 아래에 위치하며, 일반적으로 특정 조직이나 회사를 나타낸다
    • ex) "example.com"에서 "example"은 2차 수준 도메인이다
  • 하위 수준 도메인(Subdomains)
    • 하위 수준 도메인은 2차 수준 도메인 아래에 추가적으로 구성된 도메인
    • ex) "blog.example.com"에서 "blog"는 2차 수준 도메인 "example.com"의 하위 수준 도메인이다

IP 주소 찾는 과정

  1. user request
    • 사용자는 도메인 이름을 웹 브라우저에 엔터릴 침으로써 request를 보낸다.
  2. Local DNS Resolver
    • 사용자 디바이스는 DNS query를 local DNS resolver에게 보내게 보내게 된다.
  3. DNS Cache Check
    • 로컬 리졸버는 먼저 캐시를 확인하여 이전 쿼리에서 해당 도메인의 IP 주소를 저장했는지 확인한다
    • 캐시에 IP 주소가 있고 여전히 유효하면(만료되지 않았다면), 리졸버는 즉시 사용자 장치에 반환한다
  4. Recursive Query
    • IP 주소가 캐시에 없거나 만료된 경우 로컬 리졸버는 재귀적 쿼리를 수행한다.
    • 먼저 루트 DNS 서버에 연락하여 요청된 도메인의 최상위 도메인(TLD)을 담당하는 서버의 IP 주소를 요청한다.
    • 루트 DNS 서버의 응답을 바탕으로 TLD 서버에게 2차 수준 도메인 담당 서버 IP 주소를 요청한다.
    • 이런 식으로 도메인 담당 서버한테까지 가서 도메인 IP 주소를 요청하게 된다 (final query).
  5. Response to User
    • 로컬 리졸버는 IP 주소를 사용자에게 보내고, 향후에 쓰일 것을 대비해 해당 주소를 캐시에 저장한다.
  6. Connection Establishment
    • 마지막으로, 사용자 기기는 도메인 IP 주소와 연관된 서버와 연결을 하고 소통을 하게 된다.

Amazon Route53

Amazon Route53은 AWS의 DNS(Domain Name System) 서비스로, 도메인 네임을 관리하고 인터넷 트래픽을 애플리케이션의 엔드포인트로 라우팅하는 데 사용된다. Route 53은 다음과 같은 기능을 제공한다.

  • DNS(네임서버)
    • 도메인 네임 시스템을 사용하여 도메인 이름을 IP 주소로 변환하고, DNS 쿼리를 처리한다
  • port monitoring(Health Check)
    • Route53은 특정 서비스 또는 애플리케이션의 특정 포트에 대한 상태를 주기적으로 확인하여 가용성을 모니터링한다
    • 이를 통해 서비스가 정상적으로 작동하는지 여부를 파악하고, 문제가 발생하면 이를 감지하고 적절한 조치를 취한다
  • L4(Failover 기능)
    • L4 로드 밸런서는 네트워크 계층에서 작동하며, 만약 어떤 서버가 고장나면 트래픽을 다른 서버로 자동으로 전환시키는 기능을 한다
    • 이렇게 하면 서비스를 계속해서 사용할 수 있고, 다운타임을 최소화할 수 있다
  • GSLB(라우팅 정책)
    • GSLB는 다양한 지역에 위치한 서버나 데이터 센터 사이의 트래픽을 분산하고, 사용자에게 가장 가까운 서버로 연결하는 기술이다.
    • Route53은 GSLB 기능을 제공함으로써 지리적으로 분산된 사용자 그룹에 대한 로드 밸런싱 및 트래픽 라우팅을 가능하게 한다

정리하자면, Route 53은 안정적이고 확장 가능한 방식으로 도메인을 관리하고, 인터넷 트래픽을 관리하고, AWS 리소스로 라우팅하는 데 사용됩니다.

Records

Route 53에서는 여러 종류의 DNS 레코드를 관리할 수 있습니다. 레코드는 특정 도메인에 대한 트래픽을 어떻게 라우팅하고자 하는지를 정의하고 있다. 각 레코드는 다음과 같은 정보를 포함하고 있다.

  • domain/subdomain name (ex. example.com)
  • record type (ex.A or AAA)
  • value (ex. 12.34.56.78)
  • routing policy (ex. how Route53 responds to queries)
  • TTL (ex. amount of time the record cached at DNS resolvers)

Record Types

  • A

    • maps a hostname to IPv4
  • AAAA

    • maps a hostname to IPv6
  • CNAME

    • maps a hostname to another hostname
    • the target is a domain name which must have an A or AAAA record
    • can't create a CNAME record for the top node of a NDS namespace(Zone Apex)
    • ex. can't create for example.com but can create for www.example.com
  • NS

    • Name servers for the hosted zone (도메인의 네임 서버 정보를 제공)
    • control how traffic is routed for a domain
  • Alias

    • Alias 레코드는 AWS 리소스를 직접 가리킬 수 있다.
    • 이 레코드는 공짜
    • unlie CNAME, it can be used for the top node of a DNS namespace (Zone Apex), ex. example.com
    • always type A/AAA for AWS resources
    • can't set TTL
    • can't set an ALIAS record for an EC2 DNS name
    • ex) S3 버킷, CloudFront 배포, ELB(Elastic Load Balancer) 등을 가리킬 수 있다

Alias VS CNAME

항목CNAME 레코드Alias 레코드
사용 사례다른 도메인 이름에 대한 별칭으로 설정AWS 리소스를 가리키거나 루트 도메인에 대한 별칭으로 설정
지원 대상모든 도메인AWS 리소스 (S3, CloudFront, ELB 등) 및 모든 도메인
루트 도메인지원 불가능가능
TTL 설정가능불가능
응답 최적화없음Route 53의 내부 최적화 제공

Hosted Zone

Hosted Zone은 도메인 이름에 대한 DNS 레코드를 관리하는 컨테이너다. 호스티드 존을 생성하면 Route 53이 해당 도메인에 대해 트래픽을 라우팅할 수 있는 환경을 제공하게 된다.

  • Public Hosted Zone

    • 인터넷에서 접근 가능한 도메인에 대한 DNS 레코드를 관리힌디
    • ex) example.com 도메인의 퍼블릭 호스티드 존을 생성하면 전 세계 모든 사용자가 DNS 조회를 통해 해당 도메인의 IP 주소를 얻을 수 있다
  • Private Hosted Zone

    • Amazon VPC(Virtual Private Cloud) 내에서 접근 가능한 도메인에 대한 DNS 레코드를 관리한다
    • 내부 네트워크에서만 사용되는 도메인 이름을 설정하여 외부에서 접근하지 못하도록 할 수 있다

TTL (Time To Live)

DNS에서의 TTL은 DNS 레코드를 얼마동안 캐싱할지를 나타내는 값이다. 사용자가 특정 도메인 이름에 대해 IP 주소를 요청하면, 클라이언트는 받은 레코드를 로컬에서 캐싱하게 된다. 이후 사용자가 다시 그 IP 주소를 요청하면, 해당 레코드의 TTL 값이 유효하다면 DNS 서버에 쿼리를 보내지 않고 캐시에서 바로 값을 사용한다. 이를 통해 DNS 쿼리 수를 줄일 수 있다. Alias record를 제외하고 모든 DNS 레코드는 TTL 값을 포함하고 있다.

  • high TTL - e.g. 24hr

    • less traffic on Route 53
    • possibly outdated records
  • low TTL - e.g. 60sec

    • more traffic on Route 53 ($$)
    • records are outdated for less time
    • easy to change records

0개의 댓글