Route 53 Resolver
Amazon VPC DNS server, Local DNS server for VPC, Amazon provided DNS server 등의 이름은 모두 Route 53 Resolver를 가리키는 다른 이름입니다.
Route 53 Resolver는 기본적으로 VPC 생성 시 같이 생성되며, VPC 내부에서 DNS query 를 resolve 해주는 역할을 합니다. DNS 쿼리를 Resolve 하기 위해 다음의 절차를 거칩니다:
1. Route 53 Private Hosted Zone에서 resolve 시도
2. VPC DNS에서 resolve 시도
3. Public DNS에서 resolve 시도 (Route 53 Public Hosted Zone 포함)
따라서, Route 53 Private Hosted Zone에서 resolve할 수 있다면, Public DNS에서 응답을 가져오지 않습니다. 즉, 우선 순위를 따릅니다. 다음과 같은 방식으로 EC2 인스턴스는 내부로 향하는 도메인 이름 뿐 아니라 외부로 향하는 쿼리(google.com)도 resolve 할 수 있게 됩니다.
Route 53 Private Hosted Zone이 무엇인가요?
A private hosted zone is a container that holds information about how you want Amazon Route 53 to respond to DNS queries for a domain and its subdomains within one or more VPCs that you create with the Amazon VPC service.
R53 Private HZ는 이름에서도 짐작할 수 있듯이, 하나 이상의 VPC에서 사용되어 DNS 쿼리에 응답하기 위한 정보를 제공하는 서비스입니다. 내부적으로 사용되는 Route 53 Hosted Zone 이라고 이해하시면 됩니다.
VPC DNS는 무엇인가요?
기본적으로 EC2를 생성하면 다음과 같은 포맷의 DNS 이름을 받습니다:
ip-<private-ipv4-address>.<region>.compute.internal
인스턴스 생성 시 이러한 DNS이름을 할당해주는 곳이 바로 VPC DNS입니다. 해당 DNS 네임은 사실 별로 쓸 데가 없습니다. 보통 Private Hosted Zone을 만들어 별도의 레코드를 생성하여 연결하거나, Custom DNS 서버를 설정하여 가령 db.example.com 과 같은 이름으로 사용합니다.
DHCP option set
Network devices in your VPC use Dynamic Host Configuration Protocol (DHCP).
EC2 인스턴스들은 Route53 resolver가 어디에 있는지 어떻게 알고 DNS 쿼리를 날릴까요? 이것이 가능한 이유는 VPC 레벨에서 DHCP option set을 설정해뒀기 때문입니다.
DHCP option set은 VPC 당 하나만 할당해둘 수 있으며, VPC 생성 시 기본값으로 함께 생성됩니다. 여러 추가적 설정을 할 수 있지만, 유심히 봐야 할 부분은 바로 Domain name과 Domain name servers 입니다. 이해를 돕기 위해 EC2 인스턴스 내부의 /etc/resolv.conf 를 살펴봅시다.
nameserver 172.31.0.2 -> DHCP option set의 Domain name server 필드에 연관됨
search example.com -> DHCP option set의 Domain name 필드에 연관됨
Domain name servers
DNS Query를 날리는 대상이 어디있는지 정의합니다. AmazonProvidedDNS는 AWS가 관리하는 DNS resolver를 사용하겠다는 의미입니다.
Custom DNS 서버를 사용하기 위해선 DHCP option set에서 Custom DNS 서버의 IP 주소를 입력합니다. 그래야 인스턴스가 DNS를 쿼리할 때 Custom DNS 서버로 쿼리를 날리게 될 것입니다.
따라서 /etc/resolv.conf의 nameserver는Domain name server 를 가리킵니다. 172.31.0.2는 AmazonProviderDNS인 Route 53 Resolver의 주소입니다. Route 53 Resolver로 향하는 주소는 VPC base address + 2와 169.254.169.253 두개입니다. 가령, VPC의 CIDR이 10.0.0.0/16 이라면, Route 53 Resolver의 주소는 10.0.0.2 와 169.254.169.253 이 됩니다. 해당 사진에서 nameserver의 값이 172.31.0.2 라는 것은 해당 VPC의 base address가 172.31.0.0 이라는 것을 의미합니다.
Domain name
The domain name that a client should use when resolving hostnames using the Domain Name System (DNS)
VPC 내부의 리소스들이 가지게 될 도메인 이름을 정의합니다. Domain name을 example.com 으로 설정한다면, domain search 과정에서 example.com을 기반으로 탐색하게 됩니다.
search domain이 example.com 이므로, 가령 ping db 명령어를 사용하였을 때 DNS 리졸버는 db.example.com 으로 DNS를 resolve 하려고 시도합니다. 해당 설정은 Private Hosted Zone을 사용하려는 시나리오에서 선택적인 설정입니다. 이 설정을 하지 않아도 여전히 db.example.com으로 resolve 할 수 있기 때문입니다.
'AWS' 카테고리의 다른 글
[AWS CodeDeploy] CodeDeploy Basics (0) | 2024.06.24 |
---|---|
[AWS IAM] IAM Basics (0) | 2024.06.21 |
[AWS Network] Transitive and non-transitive scenarios (0) | 2024.04.25 |
AWS EC2, EBS: 스왑 메모리에 대한 실험과 모범 사례 (0) | 2024.04.18 |
[AWS] AWS 사용요금을 매일 문자로 받아보기 (0) | 2023.11.30 |