A 레코드와 CNAME 차이, 형식까지 검증하기

도메인에 어떤 레코드를 추가해야 할지 찾다 보면 A와 CNAME이 항상 같이 등장합니다. 결론부터 말하면 A 레코드는 도메인 이름을 IPv4 주소 숫자에 직접 매핑하고, CNAME 레코드는 도메인 이름을 또 다른 도메인 이름에 별칭으로 매핑한다는 점이 구조적인 차이입니다.
이 글은 그 차이를 존 파일 표기법 기준으로 설명하고, 입력하려는 값이 형식에 맞는지 직접 검사해보는 방법까지 다룹니다.
요약 ① A 레코드는 호스트를 IPv4 주소(숫자)에, CNAME 레코드는 호스트를 다른 도메인 이름(별칭)에 매핑합니다. ② 두 레코드 모두 존 파일에서 "호스트 TTL IN 타입 값" 순서로 표기되며, 타입 자리만 A인지 CNAME인지로 갈립니다. ③ 검증기는 DNS 서버에 실제로 조회하지 않고, 입력한 값이 IP 형식·도메인 형식·TTL 범위에 맞는지 정규식으로만 검사합니다.
왜 A와 CNAME이 헷갈리는가
도메인 등록업체나 호스팅사 관리 콘솔에는 레코드 유형을 고르는 드롭다운에 A, AAAA, CNAME, MX, TXT, SRV, NS가 나란히 나열됩니다.
호스팅 안내문에는 "A 레코드에 192.0.2.1을 입력하세요"라고 적힌 경우도 있고, "CNAME에 xxxx.hosting.com을 입력하세요"라고 적힌 경우도 있습니다.
두 안내가 왜 다른지, 값 칸에 무엇을 넣어야 형식이 맞는지 판단이 서지 않은 채로 저장 버튼을 누르게 됩니다. 관리 콘솔이 형식 오류를 저장 시점에 바로 알려주지 않는 경우도 있어서, 나중에 사이트가 열리지 않을 때가 돼서야 값이 잘못됐다는 걸 알게 되기도 합니다.
존 파일 표기로 보는 A와 CNAME의 구조
DNS 레코드는 관례적으로 존 파일 한 줄로 표기합니다. 순서는 항상 같습니다.
호스트 TTL IN 타입 값
- 호스트: 레코드를 적용할 이름입니다. 도메인 자신을 가리킬 때는 "@"를, www.example.com처럼 서브도메인을 가리킬 때는 "www"를 씁니다.
- TTL: 이 레코드를 캐시에 얼마나(초 단위) 보관할지입니다.
- IN: 인터넷 클래스를 뜻하는 고정 값입니다.
- 타입: A, CNAME 등 레코드 종류입니다.
- 값: 타입에 따라 뜻이 달라집니다.
이 다섯 칸 중 값 칸의 의미가 A와 CNAME에서 완전히 다릅니다.
값 칸: IP 숫자인가, 도메인 이름인가
A 레코드는 값 칸에 IPv4 주소를 그대로 넣습니다. 예를 들어 www 3600 IN A 192.0.2.1이라면 www.example.com에 접속했을 때 192.0.2.1이라는 숫자 주소로 직접 찾아가라는 뜻입니다. 값은 반드시 점 3개로 구분된 4개의 숫자(0~255)여야 합니다.
CNAME 레코드는 값 칸에 IP가 아니라 또 다른 도메인 이름을 넣습니다. www 3600 IN CNAME example.hosting.com이라면 www.example.com으로 온 요청을 example.hosting.com이라는 다른 도메인 이름으로 다시 넘기라는 뜻입니다.
최종 IP는 그 별칭 도메인을 다시 조회해야 나옵니다. 즉 A는 "숫자 주소를 직접 알려주는 레코드"이고, CNAME은 "다른 이름표를 대신 붙여주는 레코드"입니다.
값 칸에 숫자 IP를 넣을지 도메인 이름을 넣을지가 두 레코드의 근본적인 차이입니다.
형식이 맞는지 손으로 확인하는 방법
도구 없이도 직접 점검할 수 있습니다. 확인할 항목은 레코드 유형별로 정해져 있습니다.
- IPv4 형식(A 레코드): 점으로 구분된 4개의 숫자이고, 각 숫자는 0에서 255 사이여야 합니다. 옥텟이 3개거나 5개, 또는 256 이상인 숫자가 하나라도 있으면 형식에 맞지 않습니다.
- 도메인 이름 형식(CNAME, MX, NS, SRV 값): 알파벳·숫자·하이픈으로 이뤄진 라벨들이 마침표로 연결된 문자열이어야 합니다. 프로토콜(http://)이나 경로(/path), 공백이 섞여 있으면 도메인 이름 형식에서 벗어납니다.
- TTL: 0 이상 2147483647 이하의 정수여야 합니다. 소수점이나 음수는 범위를 벗어납니다. 특별히 지정하지 않으면 관례적으로 3600(1시간)을 씁니다.
- TXT 값: 하나의 문자열 조각은 255자를 넘을 수 없습니다. SPF나 DKIM처럼 긴 텍스트를 등록해야 한다면 255자 단위로 나눠 여러 조각으로 이어 붙여야 합니다.
이 네 가지를 하나씩 눈으로 세어 확인할 수도 있지만, 값이 길어질수록 옥텟 개수를 세거나 글자 수를 세는 게 번거롭고 실수하기 쉽습니다.
저희 도구로 확인하기.
실제 DNS 조회 없이 입력값의 형식만 즉시 검사하는 무료 도구입니다.

자주 틀리는 입력 실수
같은 실수가 반복되는 지점이 있습니다.
| 실수 | 예시 | 왜 틀렸나 |
|---|---|---|
| IP 옥텟이 범위를 벗어남 | 192.168.1.256 | 옥텟은 0~255여야 하는데 256은 범위 밖입니다 |
| 호스트나 값에 프로토콜을 포함 | https://www.example.com | 라벨·도메인 이름 형식에 http://나 슬래시가 들어갈 자리가 없습니다 |
| TTL에 소수점이나 음수 | 3600.5, -1 | TTL은 0 이상 2147483647 이하의 정수만 허용됩니다 |
| TXT 값 안 따옴표를 그대로 씀 | 값 중간에 " 문자가 이스케이프 없이 포함 | 손으로 존 파일을 쓰면 따옴표 위치에서 문법이 깨집니다 |
| TXT 값이 255자를 넘김 | 긴 SPF 레코드 전체를 한 줄로 | 255자 단위로 나눠야 하는 규칙을 넘어섭니다 |
CNAME과 A를 혼동하는 실수도 흔합니다. 값 칸에 IP 숫자를 넣어야 하는데 도메인 이름을 넣거나, 반대로 도메인 이름이 들어가야 할 CNAME 값 칸에 IP를 넣는 경우입니다.
두 형식은 정규식 검사 기준 자체가 다르므로, 유형(A인지 CNAME인지)을 먼저 정확히 고른 뒤 그 유형에 맞는 값을 넣는 순서가 안전합니다.
정리
- A 레코드는 호스트를 IPv4 주소 숫자에 직접 매핑하고, CNAME 레코드는 호스트를 다른 도메인 이름에 매핑합니다.
- 존 파일은 "호스트 TTL IN 타입 값" 순서로 표기하며, 값 칸의 의미가 타입마다 다릅니다.
- 검증기는 실제 DNS 서버에 조회하지 않고, 입력값이 IP 형식·도메인 형식·TTL 정수 범위·TXT 길이 규칙에 맞는지만 정규식으로 검사합니다.
- 흔한 실수는 IP 옥텟 범위 초과, 호스트·값에 프로토콜 포함, TTL 소수점·음수, TXT 따옴표 이스케이프 누락입니다.
- 유형을 먼저 정확히 고른 뒤 그 유형에 맞는 값 형식을 넣는 순서로 확인하면 됩니다.
실제 DNS 조회 없이 입력값의 형식만 즉시 검사하는 무료 도구입니다.
자주 묻는 질문
A 레코드와 CNAME 레코드를 같은 호스트에 함께 설정할 수 있나요?
표준 DNS 규칙상 하나의 호스트에 CNAME을 설정하면 같은 호스트에 A 등 다른 레코드를 함께 둘 수 없습니다. 그래서 최상위 도메인(예: example.com 자체)에는 흔히 A 레코드를, www 같은 서브도메인에는 CNAME을 쓰는 구성이 일반적입니다.
검증기가 도메인이 실제로 연결되는지도 확인해주나요?
아니요. 검증기는 DNS 서버에 조회 요청을 보내지 않는 순수 클라이언트 계산입니다. 입력한 값이 IP 형식, 도메인 이름 형식, TTL 범위 같은 문법 규칙에 맞는지만 확인하며, 그 레코드가 실제로 등록되어 전파됐는지는 별도로 확인해야 합니다.
TTL은 어떤 값을 넣어야 하나요?
검증기는 TTL이 0 이상 2147483647 이하의 정수인지만 확인하고, 어떤 값이 상황에 맞는지는 판단하지 않습니다. 기본값으로는 관례적으로 많이 쓰이는 3600(1시간)이 채워집니다.
MX나 SRV 레코드의 값도 같은 방식으로 검사하나요?
MX, SRV, NS 레코드의 값 칸은 CNAME과 마찬가지로 도메인 이름 형식 검사를 거칩니다. MX는 추가로 우선순위(priority) 숫자를, SRV는 우선순위·가중치·포트 숫자를 함께 입력받아 값과 함께 존 파일 줄에 삽입합니다.
