DNS, DNS 레코드, 서브도메인
도메인과 연결된 IP를 바꾼다거나, xxx.co.kr 도메인으로 접속했을 때 xxx.com 도메인으로 변경이 필요했던 적이 있다.
AWS로 구성된 인프라 환경이었기에 Route53에 있는 레코드 값을 변경해주면 됬지만, 각각의 레코드가 어떤 의미인지 모르고 있었기에 이번에 한번 정리해보고자 한다.
아래와 같은 순서로 작성할 예정이다.
1. DNS?
2. DNS 레코드 종류와 역할
3. 서브도메인?
1. DNS?
나는 DNS를 IP의 별칭 정도로 이해했다.
11.22.33.44 라는 IP가 있다면 이에 대한 별칭으로 google.com이 등록돼 있는 것이고, 사람들은 IP보단 별칭인 DNS인 google.com을 사용하는 것 이다.
면접 문제로 브라우저에 "google.com"을 입력하면 어떤 일이 일어나나요?"라는 글을 한번쯤은 본 적 있을 것 이다.
DNS는 이 과정에서 꽤나 중요한 역할을 한다.
2. DNS 레코드 종류와 역할
여러 레코드가 있는데 개인적으로 사용해본건 도메인 연결 시 자동으로 생기는 NS, SOA 레코드와 EC2 인스턴스 연결 시 생기는 A레코드, 그리고 별칭으로 사용하는 CNAME 레코드 정도가 있다.
레코드별 설명은 아래와 같다.
1. A 레코드 (Address Record)
- 역할: 도메인이나 서브도메인을 IPv4 주소에 매핑
- 사용 예: example.com을 192.0.2.1과 같이 특정 서버의 IPv4 주소에 연결할 때 사용
2. AAAA 레코드 (IPv6 Address Record)
- 역할: 도메인이나 서브도메인을 IPv6 주소에 매핑
- 사용 예: IPv6 네트워크 환경에서 example.com을 2001:db8::1과 같이 연결하는 경우 사용
3. CNAME 레코드 (Canonical Name Record)
- 역할: 도메인이나 서브도메인을 다른 정식 도메인(캐노니컬 네임, canonical name)으로 별칭(alias) 형태로 지정
- 사용 예: www.example.com을 example.com에 매핑하여, 동일한 콘텐츠에 대해 여러 이름을 사용할 때 유용
- 주의: 루트 도메인에는 사용할 수 없으며, A나 AAAA 레코드와 동시에 존재할 수 없음
4. MX 레코드 (Mail Exchange Record)
- 역할: 이메일 서비스의 우선 순위를 지정하고, 도메인으로 수신된 이메일을 어떤 메일 서버로 전달할지 정의
- 사용 예: example.com의 이메일 처리를 위해 mail.example.com과 같은 메일 서버 지정, 숫자로 우선 순위를 설정
- 주의: 여러 MX 레코드를 우선 순위에 따라 설정하여, 한 서버에 장애가 발생할 경우 백업 서버로 전환
5. NS 레코드 (Name Server Record)
- 역할: 해당 도메인에 대한 권한 있는(DNS authority) 네임 서버 정보를 지정
- 사용 예: 도메인의 DNS 관리를 담당하는 네임 서버(예: ns1.example.com, ns2.example.com)를 설정
- 특징: 도메인이 어디에서 관리되는지를 결정하며, 서브도메인 역시 독자적인 NS 레코드를 가질 수 있음
6. SOA 레코드 (Start of Authority Record)
- 역할: DNS 영역(zone)의 시작과 관리 정보를 정의
- 포함 정보
- 권한을 가진(primary) 네임 서버
- 관리자 이메일 주소
- 시리얼 번호(데이터 업데이트 감시)
- 리프레시, 재시도, 만료, TTL(Time To Live) 값 등
- 중요성: DNS 서버들이 데이터 일관성을 유지하고, 언제 갱신해야 하는지 파악하는 데 필수적
7. PTR 레코드 (Pointer Record)
- 역할: IP 주소를 도메인 이름으로 역변환(reverse lookup)할 때 사용
- 사용 예: 주로 이메일 서버의 신뢰성 검증 및 네트워크 문제 해결 용도, IP 주소가 192.0.2.1일 때 해당하는 도메인 이름을 반환
8. TXT 레코드 (Text Record)
- 역할: 도메인에 대한 임의의 텍스트 정보를 저장합니다.
- 사용 예
- SPF(Sender Policy Framework) 설정을 통해 스팸 메일 예방
- DKIM(DomainKeys Identified Mail) 및 DMARC(Domain-based Message Authentication, Reporting and Conformance) 설정
- 도메인 소유 검증용(예, Google Search Console 검증)
- 특징: 자유로운 문자열 입력이 가능하여 다양한 용도로 활용
9. SRV 레코드 (Service Record)
- 역할: 특정 서비스(예: VoIP, SIP, LDAP 등)를 제공하는 서버의 위치(호스트 및 포트)를 지정
- 사용 예: sip.example.com 같은 서비스에 대해, 어떤 서버와 포트로 연결해야 하는지 정보를 제공
- 추가 기능: 우선 순위와 가중치(weight) 값을 설정해 부하 분산도 조절 가능
10. DS 레코드 (Delegation Signer Record)
- 역할: DNSSEC(DNS Security Extensions)에서 도메인의 서명을 검증하는 데 사용되는 레코드
- 사용 예: 상위 도메인에 도메인 위임 시, 도메인의 DNSSEC 신뢰 체인을 구성하는 역할
11. CAA 레코드 (Certification Authority Authorization Record)
- 역할: 도메인에 대해 SSL/TLS 인증서를 발급할 수 있는 인증 기관(CA)를 제한
- 사용 예: 도메인 소유자가 승인한 특정 CA만 인증서를 발급하도록 하여, 잘못된 인증서 발급으로 인한 보안 문제를 예방
3. 서브도메인?
서브도메인은 기본 도메인의 왼쪽에 추가되는 이름으로, 계층적 DNS 네임스페이스 내에서 하위 영역을 구성한다.
예를 들어 "example.com" 도메인을 구입했다면, "www.example.com", "api.example.com"등의 원하는 이름을 붙여 별도의 서비스를 운영할 수 있다.