서버에 도메인을 연결하는 방법 (A레코드, CNAME 설정)

서버에 도메인을 연결하는 방법 — A레코드와 CNAME 설정

서버를 하나 구했다고 해서 바로 사이트가 열리는 건 아닙니다. 브라우저에 IP 주소를 직접 치면 접속이 되긴 하지만, 사용자에게 “143.198.241.73으로 접속하세요”라고 안내할 수는 없잖아요. 그래서 도메인을 연결하는 과정이 필요합니다. 이번 글에서는 도메인을 서버에 연결할 때 반드시 알아야 하는 A레코드와 CNAME 설정 방법을 실제 과정 위주로 정리해보겠습니다.

도메인과 서버는 원래 남남이다

도메인을 구매했다고 해서 자동으로 내 서버와 연결되지 않습니다. 도메인은 가비아, Cloudflare, Namecheap 같은 도메인 등록업체에서 사고, 서버는 AWS, Vultr, Oracle Cloud 같은 호스팅 업체에서 따로 만들죠. 이 둘은 완전히 별개의 서비스입니다.

둘을 이어주는 역할을 하는 게 DNS 설정입니다. DNS 관리 페이지에 들어가서 “이 도메인으로 들어오면 이 IP로 보내줘”라고 등록하는 겁니다. 이때 사용하는 게 바로 A레코드와 CNAME입니다.

A레코드 — 도메인을 IP 주소에 직접 연결

A레코드는 가장 기본적인 DNS 레코드입니다. 도메인 이름을 IPv4 주소에 직접 매핑합니다.

예를 들어 내 서버의 IP가 143.198.241.73이고, 도메인이 today-play.com이라면 이렇게 설정합니다.

타입호스트TTL
A@143.198.241.733600

호스트에 @를 넣으면 도메인 자체(today-play.com)를 의미합니다. 이렇게 설정하면 누군가 브라우저에 today-play.com을 입력했을 때, DNS 서버가 143.198.241.73을 알려주고, 브라우저는 그 IP로 접속하게 됩니다.

처음 서버에 도메인을 연결할 때는 거의 대부분 A레코드를 사용합니다. 서버 IP가 고정되어 있다면 A레코드만으로 충분합니다.

CNAME — 도메인을 다른 도메인에 연결

CNAME은 IP가 아니라 다른 도메인 이름을 가리킵니다. 쉽게 말해서 “별명”을 만드는 겁니다.

가장 흔하게 쓰는 경우가 www 처리입니다.

타입호스트TTL
CNAMEwwwtoday-play.com3600

이렇게 설정하면 www.today-play.com으로 접속한 사람도 today-play.com과 같은 곳으로 연결됩니다. CNAME이 today-play.com을 가리키고, today-play.com의 A레코드가 서버 IP를 가리키는 구조입니다.

CNAME은 Vercel, Netlify, GitHub Pages 같은 플랫폼에서도 자주 사용됩니다. 이런 서비스들은 IP가 수시로 바뀔 수 있어서 IP 대신 자체 도메인 주소를 안내해줍니다. 예를 들어 Vercel에서 커스텀 도메인을 연결하면 cname.vercel-dns.com을 CNAME으로 등록하라고 안내하는 식입니다.

A레코드와 CNAME, 뭘 써야 할까?

결론부터 말하면 상황에 따라 다릅니다.

직접 서버를 운영하고 있고 IP가 고정되어 있다면 A레코드를 씁니다. 반면에 외부 호스팅 서비스에 연결하는 경우, 그 서비스에서 CNAME을 쓰라고 안내하면 CNAME을 씁니다.

주의할 점이 하나 있는데, 루트 도메인(@)에는 CNAME을 설정하지 못하는 DNS 업체가 많습니다. 이건 DNS 표준 때문인데, CNAME은 해당 이름에 다른 레코드가 있으면 안 되거든요. 루트 도메인에는 보통 SOA, NS 레코드가 이미 있어서 충돌이 납니다. 그래서 Cloudflare 같은 일부 업체는 “CNAME Flattening”이라는 기술로 이 문제를 우회하기도 합니다.

실제 설정 과정 예시

가비아에서 도메인을 구매하고 AWS EC2 서버에 연결하는 과정을 간단히 정리하면 이렇습니다.

먼저 AWS EC2 인스턴스에서 탄력적 IP(Elastic IP)를 할당받습니다. EC2를 중지했다 켜면 IP가 바뀌기 때문에, 고정 IP를 먼저 확보해야 합니다. 그다음 가비아 DNS 관리 페이지에 들어가서 A레코드에 호스트 @, 값에 할당받은 IP를 입력합니다. www도 처리하고 싶으면 CNAME 레코드에 호스트 www, 값에 내 도메인을 입력합니다.

설정을 저장하고 나면 보통 수 분에서 최대 48시간 정도 걸릴 수 있다고 나오는데, 실제로는 대부분 10분 안에 반영됩니다. TTL 값이 낮을수록 빨리 퍼집니다.

반영 여부를 확인하고 싶으면 터미널에서 이렇게 입력하면 됩니다.

nslookup today-play.com

여기서 내 서버 IP가 나오면 연결이 정상적으로 된 겁니다. 만약 예전 IP가 나오거나 응답이 없으면 아직 전파가 안 된 것이니 조금 기다리면 됩니다.

설정할 때 자주 하는 실수들

처음 도메인 연결할 때 은근히 삽질하는 부분이 있습니다.

첫 번째는 IP를 잘못 입력하는 경우입니다. 특히 AWS를 쓸 때 퍼블릭 IP와 프라이빗 IP를 헷갈려서 프라이빗 IP를 입력하는 경우가 있습니다. DNS에는 반드시 퍼블릭 IP를 넣어야 합니다.

두 번째는 서버에서 포트를 안 열어놓은 경우입니다. DNS 연결은 됐는데 사이트가 안 뜬다면 서버의 보안 그룹(AWS 기준)에서 80번, 443번 포트가 열려 있는지 확인해야 합니다.

세 번째는 도메인 등록업체와 DNS 관리 위치가 다른 경우입니다. 도메인은 가비아에서 샀는데 네임서버를 Cloudflare로 변경했다면, DNS 레코드 설정은 Cloudflare에서 해야 합니다. 가비아에서 아무리 수정해도 반영이 안 됩니다.

마무리

도메인 연결은 서버 운영의 첫 관문 같은 단계입니다. A레코드로 IP를 직접 지정하고, 필요하면 CNAME으로 www나 외부 서비스를 연결하면 됩니다. 개념 자체는 단순한데 처음에 DNS 관리 화면을 보면 뭐가 뭔지 헷갈리는 게 정상입니다. 한 번 직접 해보면 그다음부터는 금방 합니다.

다음 글에서는 도메인 연결 후에 거의 반드시 해야 하는 SSL 인증서 적용 방법(Let’s Encrypt)을 다루겠습니다.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *