사이트가 갑자기 죽는 이유 — 도메인, DNS, 인증서

6 분 소요

멀쩡하던 사이트가 어느 날 갑자기 열리지 않습니다. 코드를 바꾼 것도 아니고 서버가 꺼진 것도 아닌데, “사이트에 연결할 수 없음” 또는 “안전하지 않음” 같은 화면만 뜹니다. 이런 일은 의외로 도메인이나 인증서의 갱신을 놓쳐서 생기는 경우가 많습니다.

이번 글에서는 우리가 매일 쓰는 도메인이 무엇이고, 주소를 입력하면 어떻게 그 사이트에 닿는지, 그리고 도메인과 인증서가 만료되면 왜 사이트가 멈추는지를 코드 없이 풀어 보겠습니다.

도메인은 외우기 쉬운 주소입니다 #

인터넷에 있는 모든 컴퓨터에는 IP 주소라는 숫자 주소가 있습니다. 하지만 사람이 매번 숫자 덩어리를 외워서 접속하기는 어렵습니다. 그래서 외우기 쉬운 이름을 대신 쓰는데, 이것이 도메인입니다. schoolofweb.net 같은 주소가 도메인입니다.

도메인은 사서 소유하는 게 아니라 일정 기간 빌리는 것에 가깝습니다. 등록 대행 업체를 통해 일 년 단위로 사용료를 내고 빌리며, 기간이 끝나기 전에 갱신해야 계속 쓸 수 있습니다. 갱신을 놓치면 빌린 이름을 반납하게 되고, 그 주소로는 더 이상 사이트에 닿지 못합니다. 사이트가 멀쩡한데도 갑자기 죽는 첫 번째 흔한 원인이 바로 이 도메인 만료입니다.

DNS는 이름을 숫자 주소로 바꿔 줍니다 #

도메인은 사람이 읽는 이름일 뿐, 실제 컴퓨터는 여전히 숫자 주소로 서로를 찾습니다. 그래서 이름을 숫자로 바꿔 주는 안내가 필요합니다. 이 역할을 하는 것이 DNS입니다.

DNS는 Domain Name System의 약자입니다. 우리말로 옮기면 “도메인 이름 체계"에 가깝습니다. 이름 하나를 바꿔 주는 단순한 변환기가 아니라, 전 세계에 흩어진 안내소들이 함께 맞물려 돌아가는 큰 체계라는 뜻에서 시스템이라는 말이 붙었습니다.

전화번호부를 떠올리면 가깝습니다. 우리가 사람 이름을 보고 전화번호를 찾듯, 브라우저는 도메인을 들고 DNS에 “이 이름의 숫자 주소가 뭔가요"라고 묻습니다. DNS가 알려 준 주소로 브라우저가 찾아가면서 비로소 사이트가 열립니다. 주소창에 도메인을 입력하고 화면이 뜨기까지, 이 조회가 눈 깜짝할 사이에 일어납니다.

도메인은 점을 기준으로 나뉜 계층입니다 #

www.schoolofweb.net을 점을 기준으로 끊어서 오른쪽부터 읽어 보겠습니다. 가장 오른쪽 .net은 최상위 도메인이고, 영어로는 TLD(Top-Level Domain)라고 부릅니다. .com, .net, .org, .kr 같은 것들이 여기에 해당합니다. 그다음 schoolofweb은 우리가 등록해서 빌려 쓰는 이름이고, 맨 앞의 www는 그 이름 아래에 더 만들어 둔 서브도메인입니다. blog.schoolofweb.net처럼 앞부분만 바꿔 여러 주소를 둘 수 있는 것도 이 계층 구조 덕분입니다.

답은 한 번에 나오지 않고 단계로 찾습니다 #

전화번호부가 한 권으로 끝나면 좋겠지만, 인터넷에는 도메인이 수억 개라 한곳이 전부 외울 수는 없습니다. 그래서 DNS는 큰 단위에서 작은 단위로 안내소를 거치며 답을 찾습니다. 먼저 루트 안내소가 “.net은 저쪽 담당이에요"라고 알려 주고, .net을 맡은 안내소가 “schoolofweb.net은 이 네임서버가 책임져요"라고 넘겨주며, 마지막으로 그 네임서버가 실제 숫자 주소를 내놓습니다. 이 마지막 네임서버가 바로 우리가 도메인 업체 화면에서 지정하는 그 네임서버이고, 도메인의 진짜 주소록이 여기에 들어 있습니다.

네임서버에는 레코드가 적혀 있습니다 #

네임서버에 적어 두는 한 줄 한 줄을 레코드라고 부릅니다. 종류가 몇 가지 있는데, 비개발자가 자주 마주치는 것만 추리면 이렇습니다.

  • A 레코드: 이름을 숫자 IP 주소로 바로 연결합니다. 가장 기본이 되는 기록입니다.
  • CNAME 레코드: 이름을 또 다른 이름으로 연결합니다. www.schoolofweb.netschoolofweb.net으로 보내는 식입니다.
  • MX 레코드: 이 도메인으로 온 이메일을 어느 메일 서버로 보낼지 가리킵니다.
  • TXT 레코드: 소유 확인이나 메일 인증 같은 용도로 짧은 메모를 적어 둡니다.

도메인 업체나 DNS 관리 화면에 들어가면 바로 이 레코드 목록이 보입니다. 새 서버에 사이트를 연결한다는 것은 결국 A 레코드의 숫자 주소를 새 서버 것으로 바꾸는 일인 경우가 많습니다.

그래서 DNS 설정을 잘못 바꾸면, 도메인은 멀쩡한데 엉뚱한 곳을 가리키거나 아무 데도 닿지 못하는 일이 생깁니다. 새 서버로 옮기거나 주소를 바꾼 직후 사이트가 일시적으로 불안정한 것도, 바뀐 안내가 인터넷 곳곳에 퍼지는 데 시간이 걸리기 때문입니다. 이렇게 바뀐 레코드가 전 세계 곳곳에 퍼지는 것을 전파(propagation)라고 부르며, 길게는 하루 정도 걸리기도 합니다.

인증서는 봉인과 신원을 보증합니다 #

지난 글에서 HTTPS가 통신을 암호로 봉인하고, 그 봉인을 인증서가 보증한다고 했습니다. 이 SSL 인증서 역시 도메인처럼 유효 기간이 있습니다.

인증서는 보통 일정 기간마다 갱신해야 합니다. 갱신을 놓쳐 인증서가 만료되면, 브라우저는 봉인을 더 이상 믿을 수 없다고 판단해 “안전하지 않음” 경고를 크게 띄웁니다. 사이트 자체는 살아 있어도 방문자는 빨간 경고 화면 앞에서 발길을 돌립니다. 사이트가 갑자기 죽는 것처럼 보이는 두 번째 흔한 원인이 이 인증서 만료입니다. 요즘은 인증서를 자동으로 갱신해 두는 경우가 많은데, 그 자동 갱신이 어긋나면 같은 문제가 생깁니다.

세 가지가 함께 맞물려 동작합니다 #

정리하면 주소를 입력하고 안전하게 사이트가 열리기까지 세 가지가 차례로 맞물립니다. 도메인이라는 이름이 살아 있어야 하고, DNS가 그 이름을 올바른 숫자 주소로 안내해야 하며, 인증서가 유효해야 봉인된 채로 연결됩니다. 셋 중 하나라도 어긋나면 사이트는 멀쩡해도 사용자에게는 닿지 않습니다. “코드도 안 건드렸는데 왜 죽었지"의 답이 대개 이 셋 중 하나에 있습니다.

왜 비개발자가 알면 일이 편해지는가 #

  • 장애 원인을 좁힐 수 있습니다. 사이트가 안 열릴 때 무조건 개발 문제로 보지 않고, 도메인이나 인증서 만료 같은 흔한 원인을 먼저 떠올릴 수 있습니다.
  • 갱신 일정을 챙길 수 있습니다. 도메인과 인증서에 만료일이 있다는 것을 알면, 미리 갱신 알림을 걸어 두어 사고를 예방할 수 있습니다.
  • 이전 작업을 이해합니다. 새 도메인을 연결하거나 서버를 옮긴 직후 “전파되는 데 시간이 걸린다"는 말이 왜 나오는지 납득할 수 있습니다.

마무리 #

오늘은 사이트가 갑자기 멈추는 흔한 이유를 도메인, DNS, 인증서라는 세 단어로 살펴봤습니다. 도메인은 빌려 쓰는 이름이라 만료되면 반납되고, DNS는 그 이름을 숫자 주소로 안내하며, 인증서는 봉인을 보증하되 유효 기간이 있습니다. 셋 다 평소에는 조용히 일하지만, 갱신을 놓치는 순간 사이트를 멈춰 세웁니다.

봉인과 인증서 이야기가 더 궁금하다면 주소창의 자물쇠는 무엇을 지키는가를, 이 모든 것이 올라가는 서버와 배포가 궁금하다면 서버, 클라우드, 그리고 배포를 함께 읽어 보시길 권합니다.

X