외부 서비스에 도메인 연결하기

Vercel, Netlify, GitHub Pages, Cloudflare, AWS 같은 외부 서비스에 회사 도메인을 연결하는 방법입니다. A와 CNAME 중 무엇을 쓸지, apex와 www를 어떻게 나눌지, 값을 어디서 복사해 어떻게 확인하는지 정리했습니다.

작성

외부 서비스에 도메인을 연결하는 방법은 크게 세 가지입니다. A(또는 AAAA) 레코드로 플랫폼의 IP를 가리키거나, CNAME으로 플랫폼이 준 호스트 이름을 가리키거나, 네임서버 자체를 그 플랫폼에 위임하는 것입니다. 어느 방식을 쓸지는 플랫폼이 대시보드에서 직접 알려 주므로, 우리가 할 일은 그 화면에 표시된 값을 도메인의 DNS에 그대로 옮겨 적는 것입니다.

레토에 등록한 도메인이 레토 네임서버를 쓰고 있다면 대시보드 도메인 상세의 DNS 및 포워딩 탭에 있는 DNS 레코드 카드에서 레코드를 추가합니다. 다른 네임서버를 쓰고 있다면 그 서비스의 DNS 화면에서 같은 값을 넣습니다. 레코드 종류별 입력 형식은 DNS 레코드 종류와 입력 방법에 정리했습니다.

연결 방식 세 가지

방식어떤 값을 넣나언제 쓰나
A / AAAA플랫폼이 안내하는 IP 주소apex 도메인을 연결할 때, 플랫폼이 고정 IP를 제공할 때
CNAME플랫폼이 안내하는 호스트 이름www 같은 서브도메인을 연결할 때
네임서버 위임플랫폼이 배정한 네임서버 목록그 플랫폼의 DNS 기능(자동 인증서, 프록시, 트래픽 라우팅)을 함께 쓸 때

앞의 두 가지는 레코드 몇 개만 바꾸는 부분 연결이고, 세 번째는 도메인의 DNS 전체를 그 플랫폼이 관리하게 만드는 전면 위임입니다. 위임을 고르면 기존 DNS에 있던 레코드가 자동으로 따라가지 않습니다. 메일을 쓰고 있다면 MX와 SPF, DKIM, DMARC를 먼저 새 DNS에 옮겨 놓아야 합니다. 절차는 네임서버 변경과 SPF, DKIM, DMARC 설정을 참고하세요.

apex 와 www 중 무엇을 쓸까

example.com 처럼 앞에 아무것도 붙지 않은 이름을 apex(또는 zone apex, naked domain, 루트 도메인)라고 부릅니다. apex에는 표준상 CNAME을 넣을 수 없기 때문에, 많은 플랫폼이 apex용으로는 A 레코드 값을, www 용으로는 CNAME 값을 따로 안내합니다.

  • apex(@)에는 플랫폼이 안내하는 A 또는 AAAA 값을 넣습니다
  • www 에는 플랫폼이 안내하는 CNAME 호스트 이름을 넣습니다
  • 둘 중 하나를 대표 주소로 정하고, 나머지는 플랫폼의 리다이렉트 기능으로 넘깁니다
  • 쓰는 DNS가 ALIAS/ANAME 또는 CNAME 플래트닝을 지원하면 apex도 호스트 이름으로 가리킬 수 있습니다

플랫폼별 연결 방법

플랫폼 화면은 자주 바뀌므로, 아래 값은 "어디를 보고 무엇을 옮기는지"만 정리했습니다. 실제 IP와 호스트 이름은 반드시 각 플랫폼이 그 순간 표시하는 값을 그대로 복사하세요.

Vercel

프로젝트의 Settings > Domains에서 도메인을 추가하면 필요한 레코드를 표로 보여 줍니다. apex는 Vercel이 안내하는 A 레코드 값, www 는 Vercel이 안내하는 CNAME 호스트 이름을 넣습니다. Vercel의 네임서버로 위임하는 선택지도 같은 화면에 있습니다. 레코드를 넣으면 목록의 상태가 Invalid Configuration에서 Valid Configuration으로 바뀌고, 인증서는 자동으로 발급됩니다.

Netlify

두 가지 방법이 있습니다. Netlify DNS를 쓰면 Domains 화면이 네임서버 목록을 알려 주고, 그 값을 레토 대시보드의 네임서버 설정에 넣습니다. 기존 DNS를 유지하려면 Netlify가 안내하는 로드밸런서 IP를 apex의 A 레코드로, 사이트의 기본 주소를 www 의 CNAME으로 넣습니다. Netlify DNS를 쓰면 apex에도 CNAME과 같은 동작(ALIAS)을 걸 수 있어 설정이 단순해집니다.

GitHub Pages

저장소의 Settings > Pages에서 Custom domain 칸에 도메인을 입력합니다. apex를 쓰려면 GitHub 문서에 명시된 A 레코드(IPv4 여러 개)와 AAAA 레코드를 모두 넣고, 서브도메인을 쓰려면 계정이름.github.io 형태의 호스트 이름을 CNAME으로 넣습니다. DNS가 반영되면 Pages 화면에서 도메인 확인이 통과하고, Enforce HTTPS 체크박스를 켤 수 있게 됩니다.

Cloudflare

Cloudflare는 부분 연결이 아니라 네임서버 위임을 기본으로 합니다. 사이트를 추가하면 기존 DNS 레코드를 자동으로 읽어 오고, 배정된 네임서버 두 개를 알려 줍니다. 그 값을 레토 대시보드의 네임서버 설정에 넣으면 위임이 끝납니다. 위임 후에는 가져온 레코드 목록에 빠진 것이 없는지, 특히 MX와 TXT가 그대로 있는지 반드시 확인하세요. 레코드마다 프록시(주황색 구름)를 켜면 실제 서버 IP가 가려지고, 끄면 DNS 값이 그대로 노출됩니다.

AWS

두 가지 경로가 있습니다. Route 53으로 DNS를 옮기려면 호스팅 영역을 만들고 표시된 네임서버 네 개를 레토 대시보드에 넣습니다. 이 경우 apex도 Alias 레코드로 CloudFront 배포나 로드밸런서를 직접 가리킬 수 있습니다. DNS를 레토에 그대로 두려면 CloudFront 배포 도메인이나 로드밸런서 DNS 이름을 서브도메인의 CNAME으로 넣습니다. 이때 apex는 CNAME을 쓸 수 없으므로 서브도메인 위주로 구성하거나 Route 53으로 옮기는 편이 낫습니다. 인증서를 ACM에서 발급받는다면 검증용 CNAME도 함께 넣어야 하며, 자세한 내용은 SSL 인증서 적용하기에 있습니다.

확인 방법

레코드가 실제로 응답하는지 dig 로 확인합니다.

dig +short A example.com
dig +short CNAME www.example.com
dig +short NS example.com
curl -sI https://example.com | head -n 1

dig 결과가 플랫폼이 안내한 값과 같고, curl 이 200이나 3xx를 돌려주면 연결이 된 것입니다. DNS 전파는 TTL에 따라 보통 수 분에서 몇 시간, 네임서버 위임은 최대 48시간까지 걸립니다. 바꾸기 하루 전에 TTL을 300초로 낮춰 두면 되돌릴 때도 빠릅니다.

레코드 변경 반영
TTL 만큼, 보통 수 분에서 몇 시간
네임서버 위임 반영
보통 수 시간, 최대 48시간
apex 연결
A/AAAA 또는 ALIAS
www 연결
CNAME

자주 겪는 문제

  • CNAME과 다른 레코드가 한 이름에 같이 있습니다. 같은 호스트에 CNAME과 A(또는 TXT, MX)가 함께 있으면 동작이 깨집니다. 하나만 남기세요.
  • 호스트 이름에 도메인을 중복해서 넣었습니다. DNS 화면이 도메인을 자동으로 붙이는데 www.example.com 을 그대로 입력해 www.example.com.example.com 이 되는 경우입니다. 보통 www 만 넣으면 됩니다.
  • 예전 서버를 가리키는 A 레코드가 남아 있습니다. 새 값을 추가만 하고 옛 값을 지우지 않으면 접속마다 다른 서버로 갑니다. 옛 레코드를 삭제하세요.
  • 네임서버를 옮긴 뒤 메일이 끊겼습니다. 새 DNS에 MX와 메일 인증 레코드를 다시 넣어야 합니다.
  • HTTPS 경고가 뜹니다. 대부분의 플랫폼은 DNS가 자기 쪽을 가리켜야 인증서를 발급합니다. 연결 확인이 끝난 뒤 몇 분 기다리면 자동으로 해결되며, 그래도 안 되면 SSL 인증서 적용하기의 검증 절차를 확인하세요.

구성이 복잡하거나 서비스 중단 없이 옮겨야 한다면 문의로 상황을 알려 주세요.

자주 묻는 질문

표준 DNS에서는 안 됩니다. apex에는 MX나 NS 같은 다른 레코드가 반드시 함께 있어야 하는데, CNAME은 같은 이름에 다른 레코드가 있으면 안 되기 때문입니다. 그래서 apex는 A 또는 AAAA 레코드로 IP를 직접 적거나, ALIAS/ANAME/CNAME 플래트닝을 지원하는 DNS 서비스를 써야 합니다.

아닙니다. 네임서버 위임은 이름 풀이를 어디서 할지만 정하는 설정이고, 도메인 등록과 갱신, 소유자 정보는 그대로 레토에 남습니다. 언제든 대시보드에서 네임서버를 되돌릴 수 있습니다.

네임서버를 바꾸면 이전 DNS에 있던 MX, SPF, DKIM, DMARC 레코드가 함께 사라지기 때문입니다. 위임하기 전에 기존 레코드를 전부 내보내고, 새 DNS에 똑같이 넣은 뒤에 네임서버를 바꾸세요. 이미 끊겼다면 새 DNS에 메일 레코드를 다시 넣으면 복구됩니다.

전파가 끝나지 않았거나 같은 이름에 예전 레코드가 남아 있는 경우가 대부분입니다. dig로 실제 응답 값이 플랫폼이 안내한 값과 같은지 확인하고, 같은 호스트에 중복된 A나 CNAME이 있으면 지우세요. 변경 예정이라면 미리 TTL을 300초 정도로 낮춰 두면 반영이 빠릅니다.

가능합니다. apex를 실제 사이트로 연결하고, www는 apex로 리다이렉트하도록 플랫폼에서 설정하면 됩니다. 다만 두 이름 중 하나만 살려 두지 말고, 쓰지 않는 쪽도 반드시 리다이렉트로 받아 두는 편이 좋습니다.

관련 가이드