| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- useEffect
- nginx
- mybatis
- Git
- NCP
- tibero
- log4j2
- springboot
- IntelliJ
- maven
- LOG4J
- react
- JavaScript
- VSCode
- nodejs
- SAP
- dbeaver
- Spring
- kubectl
- JPA
- Windows
- BPMN
- MySQL
- gradle
- Kubernetes
- docker
- Java
- Linux
- gson
- database
- Today
- Total
두 손끝의 창조자
[Remind] DNS 레코드 핵심 개념 정리: A부터 TXT까지 본문
프로젝트를 새로 시작하거나 서버를 이전할 때 반드시 마주하게 되는 것이 DNS 설정입니다. 하지만 한 번 설정해두면 한동안 건드릴 일이 없다 보니, 막상 설정 페이지를 열면 각 레코드의 차이가 헷갈리곤 합니다.
오늘은 DNS의 기본 동작 원리부터 실무에서 놓치기 쉬운 심화 레코드까지, 다시 한번 머릿속에 구조를 잡아보고자 합니다.
1. DNS: 인터넷의 전화번호부
DNS(Domain Name System)는 example.com과 같은 인간 친화적인 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소(192.0.2.1)로 변환해주는 시스템입니다. DNS 레코드는 이 전화번호부에 적힌 개별 항목들이라고 이해하면 쉽습니다.
2. 기본 레코드 타입 요약
| 레코드 타입 | 용도 | 핵심 특징 |
|---|---|---|
| A | 도메인을 IPv4 주소로 매핑 | 가장 기본적인 연결 |
| AAAA | 도메인을 IPv6 주소로 매핑 | 차세대 주소 체계 (모바일 대응 필수) |
| CNAME | 도메인 별칭(Alias) 생성 | IP가 아닌 다른 도메인을 가리킴 |
| NS | 권한 있는 네임서버 지정 | 도메인 관리를 위임할 서버 설정 |
3. A 레코드와 AAAA 레코드 (Address)
A 레코드는 도메인을 특정 서버의 IPv4 주소에 직접 연결합니다.
example.com. A 192.0.2.1
최근에는 AAAA 레코드의 중요성이 커지고 있습니다. 모바일 환경이나 아시아권 네트워크에서는 IPv6 사용 비중이 매우 높기 때문입니다. 호환성을 위해 A와 AAAA 레코드를 함께 운영하는 'Dual Stack' 설정을 권장합니다.
4. CNAME과 그 한계, 그리고 ALIAS
CNAME(Canonical Name)은 특정 호스트 이름을 다른 도메인으로 리다이렉션할 때 사용합니다.
- 장점: 서버 IP가 바뀌어도 연결된 도메인(A 레코드)만 수정하면 CNAME은 자동으로 따라갑니다.
- 제약: RFC 표준상 루트 도메인(예:
example.com)에는 CNAME을 사용할 수 없습니다. NS나 SOA 레코드와 공존할 수 없기 때문입니다.
[Solution] ALIAS / ANAME 레코드
최근 AWS Route 53이나 Cloudflare 같은 서비스에서는 이 제약을 해결하기 위해 ALIAS 혹은 CNAME Flattening 기능을 제공합니다. 루트 도메인에서도 CNAME처럼 동작하게 해주므로, 클라우드 환경에서는 적극 활용하는 것이 좋습니다.
5. 실무 필수: MX와 TXT 레코드
웹 서비스 외에 이메일이나 보안 설정을 위해 반드시 알아야 하는 레코드입니다.
MX (Mail Exchanger)
해당 도메인의 이메일을 수신할 서버를 지정합니다. 우선순위(Priority) 값을 함께 설정하며, 숫자가 낮을수록 우선권이 높습니다.
example.com. MX 10 aspmx.l.google.com.
TXT (Text)
도메인에 대한 텍스트 정보를 담습니다. 주로 소유권 인증이나 이메일 보안(SPF, DKIM, DMARC) 설정에 사용됩니다.
Tip: "우리 서버 외에 다른 곳에서 보낸 메일은 스팸이야"라고 선언하는 SPF 설정은 이제 필수입니다.
6. 운영의 묘미: TTL (Time To Live)
TTL은 DNS 레코드 정보가 캐시 서버에 머무는 시간을 초(second) 단위로 설정한 값입니다.
- 평상시: 3600(1시간) 이상으로 설정하여 DNS 쿼리 부하를 줄입니다.
- 서버 이전 시: 작업 24시간 전에 TTL을 300(5분) 정도로 낮춰두어야 합니다. 그래야 IP 변경 시 전 세계 사용자들이 빠르게 변경된 서버로 접속할 수 있습니다.
7. DNS 설정 검증하기
설정을 마쳤다면 터미널에서 dig 명령어로 올바르게 반영되었는지 확인해봅니다.
# A 레코드 확인
dig example.com A
# 전체 경로 추적 (어느 네임서버에서 응답하는지 확인)
dig +trace example.com
# 특정 레코드(MX) 확인
dig example.com MX
마치며: DNS는 서비스의 시작점입니다.
DNS는 한 번 장애가 발생하면 전파 속도 때문에 복구에 시간이 걸립니다.
- 중복 네임서버(NS)를 반드시 확보하고,
- 루트 도메인 제약을 이해하며,
- IPv6(AAAA)와 이메일 보안(TXT)까지 챙긴다면
견고한 인프라의 첫 단추를 잘 꿰었다고 할 수 있습니다. 다음에 새로운 도메인을 설정할 때 이 글이 좋은 리마인드가 되길 바랍니다.