티스토리 뷰

반응형

인터넷 세상에서 우리가 원하는 웹사이트에 접속하는 과정은 마치 택배를 보내는 것과 비슷합니다. 택배를 보낼 때 수취인의 주소를 정확히 알아야 하듯이, 웹사이트에 접속하려면 해당 웹사이트의 정확한 '인터넷 주소'를 알아야 합니다. 하지만 이 주소는 숫자로 된 복잡한 IP 주소(예: 192.168.1.1)로 되어 있어 사람이 기억하기 어렵습니다. 그래서 우리는 google.com이나 naver.com과 같은 친숙한 도메인 이름을 사용하죠.

그렇다면 우리가 example.com이라는 도메인 이름을 입력했을 때, 컴퓨터는 어떻게 이 도메인이 가리키는 실제 IP 주소를 찾아 웹사이트를 보여줄까요? 이 모든 마법 같은 과정의 중심에는 바로 DNS 레코드가 있습니다. DNS 레코드는 도메인 이름과 관련된 다양한 정보를 담고 있는 작은 설정 조각들입니다. 이 레코드들이 모여 마치 인터넷의 '전화번호부' 또는 '주소록' 역할을 수행하며, 도메인이 올바르게 작동하도록 돕습니다.

이 글은 일반인 및 기본적인 도메인 지식이 있는 학습자, 그리고 웹 호스팅에 대한 이해를 확장하고자 하는 비전공 개발 입문자를 대상으로 합니다. 우리는 DNS 레코드 종류와 그 DNS 작동 원리를 자세히 설명하고, 실제 웹 호스팅 및 서비스 설정에 필수적인 도메인 DNS 설정 방법을 알려드릴 것입니다. 특히 가장 많이 사용되는 A 레코드, CNAME 레코드, MX 레코드, TXT 레코드 등을 깊이 있게 다루며, A 레코드 CNAME 레코드 차이와 같은 혼동하기 쉬운 개념들도 명확하게 짚어드립니다. 이 글을 통해 DNS의 핵심을 이해하고, 여러분의 웹 서비스 운영에 대한 자신감을 높이시길 바랍니다.


DNS 레코드란 무엇인가요? - 도메인 이름의 주소록

인터넷의 복잡한 구조 속에서 우리가 특정 웹사이트에 접근할 수 있도록 돕는 핵심적인 시스템이 바로 도메인 이름 시스템(DNS, Domain Name System)입니다. DNS는 사람이 기억하기 쉬운 도메인 이름(예: www.example.com)을 컴퓨터가 이해하는 숫자 형태의 IP 주소(예: 192.0.2.1)로 변환해주는 역할을 합니다. 이 변환 과정이 없다면 우리는 모든 웹사이트의 IP 주소를 외워야 할 것이며, 이는 사실상 불가능에 가깝습니다.

DNS 작동 원리를 이해하기 위해 간단한 비유를 들어보겠습니다. 우리는 친구의 전화번호를 외우기보다 친구의 이름을 기억하고, 전화번호부에서 그 이름을 찾아 번호를 알아냅니다. DNS는 인터넷 세상의 '전화번호부'와 같습니다. 우리가 example.com이라는 이름을 입력하면, DNS는 이 이름을 전화번호부에서 찾아 해당 웹사이트의 '전화번호'인 IP 주소를 알려주는 것이죠.

도메인 이름과 IP 주소의 관계

컴퓨터와 네트워크 장치는 숫자로 된 IP 주소를 사용하여 서로 통신합니다. IPv4192.0.2.1과 같은 32비트 숫자(일반적으로 점으로 구분된 4개의 옥텟으로 표현)로 구성되고, IPv62001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 128비트 숫자(일반적으로 콜론으로 구분된 8개의 16진수 블록으로 표현)로 이루어져 있습니다. 이 주소는 인터넷 상의 특정 장치나 서버를 고유하게 식별합니다.

반면, 도메인 이름은 이러한 IP 주소를 사람이 읽고 기억하기 쉽게 만든 '별명'입니다. 예를 들어, google.com은 실제로는 구글 웹 서버의 IP 주소를 가리킵니다. 우리가 웹 브라우저에 도메인 이름을 입력하면, 컴퓨터는 DNS에게 "이 도메인 이름의 IP 주소가 뭐야?"라고 물어보고, DNS는 해당 IP 주소를 찾아 응답합니다. 그제서야 우리의 컴퓨터는 그 IP 주소로 직접 접속하여 웹사이트 내용을 받아오게 됩니다.

DNS 서버와 레코드의 역할

이러한 도메인 이름과 IP 주소 변환 작업을 수행하는 것이 바로 DNS 서버입니다. 전 세계에 수많은 DNS 서버들이 계층적으로 연결되어 있으며, 이들은 각 도메인에 대한 정보를 저장하고 있습니다. 이 정보가 바로 DNS 레코드입니다.

DNS 레코드는 도메인과 관련된 다양한 설정 정보를 담고 있는 작은 데이터베이스 항목입니다. 웹사이트 서버의 IP 주소, 메일 서버의 주소, 도메인 소유자 확인 정보 등 여러 종류의 데이터가 레코드 형태로 저장됩니다. 각 레코드에는 다음과 같은 주요 정보가 포함됩니다.

  • 이름 (Name/Host): 해당 레코드가 적용될 도메인 이름 또는 서브도메인. (예: www, @, mail)
  • 유형 (Type): 레코드의 종류. (예: A, CNAME, MX, TXT)
  • 값 (Value/Data): 레코드가 가리키는 실제 정보. (예: IP 주소, 다른 도메인 이름, 텍스트)
  • TTL (Time To Live): DNS 서버가 이 레코드 정보를 캐시(임시 저장)할 시간. (초 단위)

예를 들어, example.com이라는 도메인의 웹사이트가 192.0.2.1이라는 IP 주소를 가진 서버에 있다면, example.com에 대한 DNS 레코드 중 하나는 "A 레코드" 타입으로 192.0.2.1을 값으로 가질 것입니다.

왜 DNS 레코드가 필요한가요?

DNS 레코드는 다음과 같은 이유로 인터넷에서 필수적인 역할을 합니다.

  1. 접근성: 사람이 기억하기 어려운 IP 주소 대신 도메인 이름을 사용하여 웹사이트나 서비스에 쉽게 접근할 수 있게 합니다.
  2. 유연성: 웹사이트 서버의 IP 주소가 변경되더라도, 도메인 이름은 그대로 유지하면서 DNS 레코드만 업데이트하면 됩니다. 사용자들은 주소 변경 사실을 전혀 알지 못하고 계속 같은 도메인 이름으로 접속할 수 있습니다.
  3. 다양한 서비스 연결: 웹사이트, 이메일, FTP 등 하나의 도메인에 여러 종류의 인터넷 서비스를 연결할 수 있도록 합니다. 각 서비스는 그에 맞는 DNS 레코드를 통해 연결됩니다.
  4. 보안 및 신뢰성: TXT 레코드 등을 통해 스팸 방지, 도메인 소유권 확인 등의 보안 기능을 제공합니다.

결론적으로, DNS 레코드는 인터넷의 근간을 이루는 핵심 요소이며, 이들을 이해하는 것은 도메인을 효과적으로 관리하고 웹 서비스를 안정적으로 운영하는 데 필수적입니다. 이 기본 지식 위에서 이제 다양한 DNS 레코드 종류들을 하나씩 자세히 살펴보겠습니다. 이는 웹 개발 입문자나 개인 웹사이트 운영자에게 도메인 DNS 설정의 중요한 첫걸음이 될 것입니다.


핵심 DNS 레코드 종류 상세 분석

반응형

 

다양한 DNS 레코드 종류가 있지만, 이 섹션에서는 여러분이 웹 서비스를 운영하거나 도메인을 설정할 때 가장 자주 접하게 될 핵심 레코드들을 집중적으로 다룹니다. 각 레코드의 역할과 구성 방식, 그리고 실제 예시를 통해 명확하게 이해할 수 있도록 돕겠습니다.

1. A 레코드 (Address Record)

A 레코드는 'Address Record'의 약자로, 특정 도메인 이름이나 서브도메인을 IPv4 주소에 연결하는 가장 기본적인 DNS 레코드입니다. 웹사이트의 도메인 이름을 실제 서버의 IP 주소로 매핑할 때 주로 사용됩니다.

  • 역할: 도메인 이름 (예: www.example.com)을 32비트 IPv4 주소 (예: 192.0.2.1)에 연결합니다.
  • 구성:
    • 이름 (Name/Host): 연결할 도메인 또는 서브도메인. (예: www, @ (루트 도메인), blog)
    • 유형 (Type): A
    • 값 (Value/Data): 서버의 IPv4 주소. (예: 192.0.2.1)
    • TTL: 캐시 시간.

예시:

@   A   192.0.2.1   (example.com이 192.0.2.1 서버를 가리킴)
www A   192.0.2.1   (www.example.com이 192.0.2.1 서버를 가리킴)
blog A  192.0.2.2   (blog.example.com이 192.0.2.2 서버를 가리킴)

하나의 도메인(예: example.com)은 여러 개의 A 레코드를 가질 수 있습니다. 이는 로드 밸런싱(여러 서버에 트래픽 분산)이나 장애 복구(한 서버 다운 시 다른 서버로 전환) 목적으로 활용될 수 있습니다.

2. AAAA 레코드 (IPv6 Address Record)

AAAA 레코드는 'Quad-A Record'라고도 불리며, A 레코드와 동일한 역할을 하지만 IPv6 주소에 연결할 때 사용됩니다. IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 도입된 차세대 인터넷 프로토콜입니다.

  • 역할: 도메인 이름 (예: www.example.com)을 128비트 IPv6 주소 (예: 2001:0db8:85a3::8a2e:0370:7334)에 연결합니다.
  • 구성:
    • 이름 (Name/Host): 연결할 도메인 또는 서브도메인.
    • 유형 (Type): AAAA
    • 값 (Value/Data): 서버의 IPv6 주소. (예: 2001:0db8:85a3::8a2e:0370:7334)
    • TTL: 캐시 시간.

예시:

@   AAAA   2001:0db8:85a3::8a2e:0370:7334
www AAAA   2001:0db8:85a3::8a2e:0370:7334

최근에는 IPv6의 사용이 점차 늘고 있으므로, 웹 서버가 IPv6를 지원한다면 AAAA 레코드도 함께 설정해주는 것이 좋습니다.

3. CNAME 레코드 (Canonical Name Record)

CNAME 레코드는 'Canonical Name Record'의 약자로, 특정 도메인이나 서브도메인에 대한 별칭(Alias)을 설정할 때 사용됩니다. 즉, 하나의 도메인이 다른 도메인의 별명임을 알려주는 레코드입니다. CNAME 레코드는 IP 주소가 아닌 '다른 도메인 이름'을 가리킵니다.

  • 역할: 하나의 도메인 이름을 다른 도메인 이름으로 리디렉션합니다.
  • 구성:
    • 이름 (Name/Host): 별칭으로 사용할 도메인 또는 서브도메인. (예: www)
    • 유형 (Type): CNAME
    • 값 (Value/Data): 실제 정보를 가지고 있는 정식(Canonical) 도메인 이름. (예: example.com 또는 mywebapp.amazonaws.com)
    • TTL: 캐시 시간.

예시:

www CNAME  example.com.  (www.example.com이 example.com의 별명임을 나타냄)
blog CNAME bloghosting.com. (blog.example.com이 bloghosting.com을 가리킴)

A 레코드 CNAME 레코드 차이

이 두 레코드는 웹사이트 연결에 사용되므로 자주 혼동됩니다. 하지만 명확한 A 레코드 CNAME 레코드 차이가 있습니다.

  • A 레코드: 도메인을 IP 주소에 직접 매핑합니다.
    • 장점: 직접적인 연결, 빠르고 간단.
    • 단점: IP 주소가 변경되면 A 레코드도 수동으로 업데이트해야 합니다.
  • CNAME 레코드: 도메인을 다른 도메인 이름에 매핑합니다.
    • 장점: 대상 도메인의 IP 주소가 변경되어도 CNAME 레코드를 업데이트할 필요가 없습니다. (대상 도메인의 DNS가 IP 주소 변경을 처리하므로) 클라우드 서비스처럼 IP 주소가 유동적인 환경에서 특히 유용합니다.
    • 단점: 하나의 CNAME 레코드는 다른 레코드와 함께 존재할 수 없습니다. 특히 루트 도메인(@)에는 CNAME 레코드를 사용할 수 없습니다. (RFC 표준 위반, 다른 레코드와의 충돌 방지)

언제 무엇을 사용할까?

  • A 레코드 사용 시점: 특정 IP 주소로 직접 연결해야 할 때 (예: 전용 서버의 고정 IP).
  • CNAME 레코드 사용 시점: 서브도메인을 다른 도메인(특히 클라우드 호스팅 서비스의 동적 IP 주소를 가진 주소)에 연결하거나, www.example.comexample.com으로 리디렉션할 때처럼 별칭을 사용할 때.

4. MX 레코드 (Mail Exchanger Record)

MX 레코드는 'Mail Exchanger Record'의 약자로, 해당 도메인의 이메일을 처리하는 메일 서버의 주소를 지정하는 데 사용됩니다. 이메일을 보내고 받을 수 있도록 하려면 반드시 올바르게 설정되어야 합니다.

  • 역할: 도메인으로 전송되는 이메일(예: user@example.com)을 수신할 메일 서버를 지정합니다.
  • 구성:
    • 이름 (Name/Host): 이메일 서비스를 사용할 도메인. (예: @ (루트 도메인))
    • 유형 (Type): MX
    • 값 (Value/Data): 메일 서버의 호스트 이름 (도메인 이름). (예: mail.example.com 또는 aspmx.l.google.com)
    • 우선순위 (Priority/Preference): 여러 메일 서버가 있을 경우, 우선순위가 낮은(숫자가 작은) 서버부터 시도합니다.
    • TTL: 캐시 시간.

MX 레코드 설정 예시:

@   MX   10   mail.example.com.
@   MX   20   backupmail.example.com.

위 예시에서 이메일 클라이언트는 먼저 우선순위 10인 mail.example.com으로 이메일을 보내려고 시도하고, 실패하면 우선순위 20인 backupmail.example.com으로 시도합니다.

참고: MX 레코드의 값은 반드시 도메인 이름(FQDN)이어야 하며, IP 주소는 직접 사용할 수 없습니다. 만약 mail.example.com이 특정 IP 주소를 가리키게 하려면, mail.example.com에 대한 A 레코드(또는 AAAA 레코드)가 별도로 존재해야 합니다. MX 레코드 설정 시 이 점을 반드시 기억해야 합니다.

5. TXT 레코드 (Text Record)

TXT 레코드는 'Text Record'의 약자로, 도메인과 관련된 임의의 텍스트 정보를 저장하는 데 사용됩니다. 이 정보는 사람이나 기계가 읽을 수 있는 형태로 다양한 용도로 활용됩니다.

  • 역할: 도메인 소유권 확인, 이메일 스팸 방지(SPF, DKIM, DMARC), 사이트 보안 정책 등 다양한 텍스트 정보를 저장합니다.
  • 구성:
    • 이름 (Name/Host): @ 또는 특정 서브도메인.
    • 유형 (Type): TXT
    • 값 (Value/Data): 저장할 텍스트 문자열. (예: "v=spf1 include:_spf.google.com ~all")
    • TTL: 캐시 시간.

TXT 레코드 용도 예시:

  1. 도메인 소유권 확인: Google Search Console, Microsoft 365, AWS 등 다양한 서비스에서 도메인 소유권을 확인하기 위해 특정 TXT 레코드를 추가하라고 요청합니다.
  2. @ TXT "google-site-verification=some_long_code"
  3. SPF (Sender Policy Framework): 이메일 스팸을 방지하기 위한 레코드로, 해당 도메인을 대신하여 이메일을 보낼 수 있는 서버를 지정합니다.이 레코드는 example.com 도메인으로 이메일을 보낼 수 있는 허용된 서버 중 하나가 Google의 SPF 서버임을 명시합니다. 다른 서버에서 example.com으로 발송된 메일은 스팸으로 처리될 가능성이 높아집니다.
  4. @ TXT "v=spf1 include:_spf.google.com ~all"
  5. DKIM (DomainKeys Identified Mail): 이메일 위변조를 방지하고 발신자를 인증하는 데 사용됩니다. DKIM 키는 일반적으로 특정 서브도메인에 TXT 레코드로 추가됩니다.
  6. selector._domainkey TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDzQ..."

TXT 레코드 용도는 이 외에도 매우 다양하며, 거의 모든 웹 서비스에서 도메인과 관련된 추가 정보를 저장하고 인증하는 데 활용됩니다.

6. NS 레코드 (Name Server Record)

NS 레코드는 'Name Server Record'의 약자로, 특정 도메인 또는 서브도메인의 권한을 위임받은 DNS 서버(네임서버)를 지정합니다. 즉, 이 도메인에 대한 모든 DNS 쿼리는 이 NS 레코드에 지정된 네임서버에게 문의해야 함을 알려주는 역할을 합니다.

  • 역할: 특정 도메인의 DNS 정보를 관리하는 책임이 있는 네임서버를 지정합니다.
  • 구성:
    • 이름 (Name/Host): 권한을 위임할 도메인 또는 서브도메인. (예: @ (루트 도메인))
    • 유형 (Type): NS
    • 값 (Value/Data): 네임서버의 호스트 이름. (예: ns1.exampledns.com)
    • TTL: 캐시 시간.

네임서버 레코드 예시:

@   NS   ns1.godaddy.com.
@   NS   ns2.godaddy.com.

이 예시는 example.com 도메인의 모든 DNS 레코드 정보가 ns1.godaddy.comns2.godaddy.com이라는 네임서버에 저장되어 있음을 의미합니다. 도메인을 구매하면 일반적으로 도메인 등록 업체나 웹 호스팅 업체에서 제공하는 네임서버를 설정하게 됩니다.

7. SOA 레코드 (Start of Authority Record)

SOA 레코드는 'Start of Authority Record'의 약자로, DNS 존(Zone)의 시작을 알리고 해당 존에 대한 중요한 관리 정보를 담고 있습니다. 모든 DNS 존 파일에는 반드시 하나의 SOA 레코드가 있어야 합니다. 이는 해당 존에 대한 권한 있는 네임서버를 정의하고, 존 파일의 전반적인 관리 매개변수를 지정합니다.

  • 역할: 도메인 존의 관리 정보를 제공하고, DNS 서버 간의 데이터 동기화와 관련된 매개변수를 정의합니다.
  • 구성:
    • 이름 (Name/Host): 해당 존의 루트 도메인. (항상 @)
    • 유형 (Type): SOA
    • 값 (Value/Data): 여러 필드로 구성됩니다.
      • Primary Name Server (MNAME): 이 존에 대한 주 네임서버의 도메인 이름.
      • Responsible Person (RNAME): 존 관리자의 이메일 주소 (점 .으로 @ 대체, 예: hostmaster.example.com).
      • Serial Number (SERIAL): 존 파일이 변경될 때마다 증가하는 버전 번호. 세컨더리 네임서버가 존 업데이트를 확인하는 데 사용됩니다.
      • Refresh Time (REFRESH): 세컨더리 네임서버가 주 네임서버에 존 업데이트를 확인하는 주기.
      • Retry Time (RETRY): 주 네임서버에 연결 실패 시 재시도 간격.
      • Expire Time (EXPIRE): 세컨더리 네임서버가 주 네임서버와 연락이 안 될 때, 해당 존 데이터를 더 이상 신뢰하지 않고 삭제하기까지 기다리는 시간.
      • Minimum TTL (MINIMUM): 이 존의 모든 레코드에 적용되는 기본 TTL 값 (명시되지 않은 경우).

예시:

@   SOA   ns1.example.com. hostmaster.example.com. (
                                2023010101 ; Serial
                                7200       ; Refresh
                                3600       ; Retry
                                1209600    ; Expire
                                3600 )     ; Minimum TTL

SOA 레코드는 주로 DNS 서버 관리자가 설정하며, 일반 사용자가 직접 수정할 일은 많지 않습니다. 하지만 이 레코드가 DNS 시스템의 안정적인 운영에 매우 중요하다는 점을 이해하는 것이 중요합니다.

지금까지 살펴본 DNS 레코드 종류들은 인터넷상의 다양한 서비스를 연결하고 관리하는 데 필수적인 요소들입니다. 각 레코드가 어떤 역할을 하고 어떻게 구성되는지 정확히 이해함으로써, 여러분은 웹 서비스의 안정성을 확보하고 문제 발생 시 신속하게 대처할 수 있는 기반을 다지게 될 것입니다.


레코드별 실제 구성 예시와 활용 팁

이제 주요 DNS 레코드 종류들을 이해했으니, 실제로 도메인에 이 레코드들을 어떻게 적용하고 관리하는지 알아보겠습니다. 이 섹션에서는 일반적인 시나리오에 따른 DNS 설정 예시와 함께, 흔히 발생하는 문제점과 해결 팁, 그리고 효율적인 도메인 DNS 설정 관리 방법을 제시합니다.

1. 웹사이트 연결을 위한 DNS 설정

가장 기본적인 시나리오는 도메인을 웹사이트에 연결하는 것입니다. 일반적으로 웹사이트는 'www' 서브도메인과 루트 도메인(example.com) 모두로 접속 가능하도록 설정합니다.

시나리오: example.com 도메인을 192.0.2.100이라는 IP 주소를 가진 웹 서버에 연결하려고 합니다.

필요한 레코드: A 레코드, CNAME 레코드

# 루트 도메인 example.com을 IP 주소 192.0.2.100에 연결
@   A   192.0.2.100   TTL: 3600

# www.example.com을 루트 도메인 example.com의 별칭으로 연결
www CNAME example.com. TTL: 3600

설명:

  • 첫 번째 A 레코드는 example.com (루트 도메인, @ 기호로 표시)을 직접 서버의 IP 주소 192.0.2.100으로 연결합니다.
  • 두 번째 CNAME 레코드는 www.example.comexample.com의 별칭으로 설정합니다. 이렇게 하면 example.com의 IP 주소가 변경되더라도 www CNAME 레코드를 수정할 필요 없이 example.comA 레코드만 업데이트하면 됩니다.

활용 팁:

  • 클라우드 서비스: AWS EC2, Google Cloud Compute Engine 등 클라우드 환경에서는 IP 주소가 유동적일 수 있습니다. 이 경우, IP 대신 로드 밸런서나 다른 서비스의 도메인 이름(FQDN)을 가리키도록 CNAME 레코드를 활용하는 것이 일반적입니다. 예를 들어, www를 AWS ELB(Elastic Load Balancer)의 DNS 이름으로 연결하는 식입니다.
  • 서브도메인 활용: blog.example.com이나 shop.example.com과 같은 서브도메인을 별도의 서버나 서비스에 연결할 수도 있습니다.
  • blog A 192.0.2.101 TTL: 3600 # 블로그 서브도메인을 별도 서버에 연결 shop CNAME shopify.com. TTL: 3600 # 쇼핑몰 서브도메인을 Shopify 서비스에 연결

2. 이메일 서비스를 위한 DNS 설정

도메인으로 이메일을 주고받기 위해서는 MX 레코드와 함께 TXT 레코드(SPF, DKIM)를 설정해야 합니다. Gmail, Outlook 365 같은 외부 이메일 서비스를 사용할 때 필수적입니다.

시나리오: example.com 도메인으로 Google Workspace(Gmail) 이메일 서비스를 사용하려고 합니다.

필요한 레코드: MX, TXT (SPF), TXT (DKIM)

# Google Workspace MX 레코드 설정 (우선순위는 Google의 가이드라인에 따름)
@   MX   1   aspmx.l.google.com.      TTL: 3600
@   MX   5   alt1.aspmx.l.google.com. TTL: 3600
@   MX   5   alt2.aspmx.l.google.com. TTL: 3600
@   MX   10  alt3.aspmx.l.google.com. TTL: 3600
@   MX   10  alt4.aspmx.l.google.com. TTL: 3600

# SPF (Sender Policy Framework) 레코드 설정
@   TXT   "v=spf1 include:_spf.google.com ~all" TTL: 3600

# DKIM (DomainKeys Identified Mail) 레코드 설정 (Google에서 제공하는 실제 레코드를 사용)
google._domainkey   TXT   "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDyX..." TTL: 3600

설명:

  • MX 레코드: 도메인으로 오는 모든 이메일을 Google의 메일 서버(aspmx.l.google.com 등)로 보냅니다. 여러 개의 MX 레코드는 메일 서버에 문제가 생겼을 때 다른 서버로 시도할 수 있도록 장애 복구 역할을 합니다. MX 레코드 설정 시 우선순위는 숫자가 낮을수록 높다는 점을 기억하세요.
  • SPF 레코드: example.com 도메인에서 이메일을 보낼 수 있는 유일한 권한이 Google 서버(_spf.google.com)에 있음을 명시하여, 스팸 발송자가 example.com을 사칭하는 것을 방지합니다. TXT 레코드 용도 중 가장 중요한 보안 기능 중 하나입니다.
  • DKIM 레코드: 발송된 이메일이 위조되거나 변조되지 않았음을 수신 메일 서버가 확인할 수 있도록 암호화된 서명을 추가하는 역할을 합니다. google._domainkey는 Google Workspace에서 DKIM을 설정할 때 사용하는 특정 서브도메인입니다.

3. 도메인 소유권 확인 및 기타 서비스 연결

많은 클라우드 서비스나 웹마스터 도구(예: Google Search Console)는 도메인 소유권 확인을 위해 TXT 레코드 추가를 요구합니다.

시나리오: example.com의 도메인 소유권을 Google Search Console에서 확인하려고 합니다.

필요한 레코드: TXT

@   TXT   "google-site-verification=XXXXXXXXXXXXXXXXXXXXXXXXX" TTL: 3600

설명:
Google Search Console이 제공하는 고유한 코드 문자열을 TXT 레코드 값으로 추가하면, Google은 이 레코드를 조회하여 example.com의 소유자가 해당 코드를 설정할 수 있는 권한이 있음을 확인합니다. 이는 TXT 레코드 용도의 또 다른 중요한 예시입니다.

흔히 발생하는 문제점과 해결 팁

DNS 설정은 작고 사소한 실수 하나로도 웹사이트나 서비스가 마비될 수 있습니다.

  1. 오타 또는 잘못된 값: 가장 흔한 실수입니다. IP 주소, 도메인 이름, 텍스트 문자열에 오타가 없는지 반드시 두 번 이상 확인하세요.
    • 해결 팁: 입력 후 dig 또는 nslookup 명령어로 직접 조회하여 설정한 값이 올바르게 반영되었는지 확인합니다.
  2. TTL (Time To Live)에 대한 오해: TTL 값이 너무 높으면 DNS 변경 사항이 전파되는 데 오랜 시간이 걸립니다.
    • 해결 팁: 중요한 DNS 변경 전에 TTL 값을 일시적으로 낮추어(예: 300초 또는 600초) 변경 사항이 빠르게 전파되도록 합니다. 변경 완료 후 원래 TTL로 되돌립니다.
  3. 네임서버 미지정 또는 오지정: 도메인이 어떤 DNS 서버를 사용해야 하는지 명확히 지정되지 않거나 잘못된 네임서버를 가리키고 있으면 어떤 DNS 레코드도 작동하지 않습니다.
    • 해결 팁: 도메인 등록 업체(가비아, 후이즈 등) 웹사이트에서 도메인의 네임서버 설정이 올바른지 확인합니다. 일반적으로 ns1.example.com, ns2.example.com과 같이 두 개 이상의 네임서버를 지정합니다.
  4. 루트 도메인에 CNAME 사용: 위에서 설명했듯이, 루트 도메인(@)에는 CNAME 레코드를 사용할 수 없습니다.
    • 해결 팁: 루트 도메인에는 A/AAAA 레코드를 사용하고, www 등 서브도메인에 CNAME을 사용하여 루트 도메인을 가리키도록 설정하는 것이 일반적입니다. 많은 클라우드 호스팅 서비스는 루트 도메인에 대한 CNAME처럼 작동하는 'Alias' 또는 'ANAME' 레코드를 지원하기도 합니다.
  5. DNS 전파 지연: DNS 변경 사항은 전 세계 DNS 서버에 전파되는 데 시간이 걸립니다.
    • 해결 팁: dig 또는 nslookup 같은 명령어로 전파 상태를 확인하거나, What's My DNS (https://www.whatsmydns.net/) 같은 온라인 도구를 사용하여 전 세계 DNS 서버에서의 변경 사항을 확인할 수 있습니다.

효율적인 DNS 관리 방법

  • DNS 관리 업체 선택: 안정적이고 성능 좋은 DNS 관리 서비스를 제공하는 업체를 선택하세요. (클라우드플레어, AWS Route 53, 가비아 DNS 등)
  • 백업: 중요한 DNS 설정 변경 전에는 반드시 현재 DNS 레코드 설정을 백업해두세요. 많은 서비스에서 존 파일(Zone File) 형태로 내보내기/가져오기 기능을 제공합니다.
  • 모니터링: DNS 서버의 응답 시간이나 레코드 변경 사항을 모니터링하는 도구를 활용하여 문제 발생 시 즉각적으로 대응할 수 있도록 합니다.
  • 버전 관리: 복잡한 DNS 설정이 필요한 경우, 텍스트 파일이나 코드형 인프라(IaC) 도구를 사용하여 DNS 설정을 버전 관리하는 것을 고려해볼 수 있습니다.

이러한 실제 예시와 팁들을 통해 여러분은 도메인 DNS 설정의 복잡성을 이해하고 효율적으로 관리할 수 있는 능력을 키울 수 있을 것입니다.


DNS 레코드 변경 시 주의사항 및 전파 시간

DNS 레코드를 변경하는 것은 웹사이트나 서비스의 '주소'를 변경하는 것과 같아서, 신중하게 접근해야 합니다. 잘못된 설정이나 이해 부족은 서비스 중단으로 이어질 수 있기 때문입니다. 특히 DNS 전파 시간은 많은 초보 관리자들이 혼란을 겪는 부분입니다. 이 섹션에서는 DNS 레코드 변경 시 발생할 수 있는 문제점, TTL(Time To Live)의 개념과 그 중요성, 그리고 DNS 전파 시간에 대해 자세히 설명해 드립니다.

DNS 전파 (Propagation)란 무엇인가요?

우리가 DNS 레코드를 변경하면, 이 변경 사항이 전 세계 인터넷에 퍼져나가 모든 DNS 서버에 업데이트되는 과정을 DNS 전파(Propagation)라고 합니다. 이는 마치 소식을 전파하는 것과 같습니다. 내가 사는 동네에 소문을 내면 금방 퍼지지만, 전 세계 모든 사람에게 소문이 퍼지는 데는 시간이 걸리겠죠? DNS 전파도 마찬가지입니다.

DNS 시스템은 전 세계에 분산된 수많은 DNS 서버들이 계층적으로 연결되어 있습니다. 도메인의 DNS 레코드를 변경하면, 이 변경 사항이 즉시 전 세계 모든 DNS 서버에 동시에 반영되는 것이 아닙니다. 변경된 정보는 먼저 해당 도메인의 '권한 있는(Authoritative) 네임서버'에 기록되고, 이 정보가 계층적으로 상위 DNS 서버들로 전달된 다음, 최종적으로 전 세계의 로컬 DNS 캐시 서버들로 퍼져나가게 됩니다.

이 전파 과정은 몇 분에서 최대 48시간 이상까지 소요될 수 있습니다. 이 '시간'을 결정하는 가장 중요한 요소가 바로 TTL(Time To Live)입니다.

TTL (Time To Live)의 중요성

TTL은 'Time To Live'의 약자로, DNS 레코드 정보가 각 DNS 서버에 캐시(임시 저장)될 수 있는 시간을 초 단위로 지정하는 값입니다. DNS 서버가 특정 도메인에 대한 정보를 조회했을 때, 해당 레코드에 설정된 TTL 시간 동안은 그 정보를 캐시에 저장해두고, 다음번 동일한 요청이 들어오면 주 서버에 다시 묻지 않고 캐시된 정보를 바로 응답합니다.

  • 높은 TTL 값 (예: 86400초 = 24시간):
    • 장점: DNS 쿼리 횟수를 줄여 서버 부하를 낮추고, 사용자에게 더 빠른 응답 시간을 제공할 수 있습니다 (캐시된 정보 사용).
    • 단점: DNS 레코드 변경 시, 새로운 정보가 전 세계에 전파되는 데 매우 오랜 시간이 걸립니다. 캐시된 정보가 만료될 때까지 구 버전의 정보가 계속 제공될 수 있습니다.
  • 낮은 TTL 값 (예: 300초 = 5분):
    • 장점: DNS 레코드 변경 시, 새로운 정보가 전파되는 시간이 짧아집니다. 서비스 변경이나 장애 대응에 유연하게 대처할 수 있습니다.
    • 단점: DNS 쿼리 횟수가 늘어나 권한 있는 네임서버의 부하가 증가할 수 있습니다.

DNS 레코드 변경 시 TTL 활용 전략

DNS 레코드를 변경할 때는 TTL을 전략적으로 활용하는 것이 매우 중요합니다.

  1. 변경 전 TTL 낮추기: 중요한 DNS 레코드(예: 웹 서버 IP 변경)를 변경하기 1~2일 전에 해당 레코드의 TTL 값을 일시적으로 낮춥니다 (예: 300초 또는 600초). 이렇게 하면 변경 예정인 레코드의 캐시 만료 시간이 짧아져, 나중에 실제 변경이 이루어졌을 때 새로운 정보가 더 빠르게 전파될 수 있습니다.
  2. 레코드 변경: TTL을 낮춘 후, 캐시 만료 시간이 충분히 지난 것을 확인한 후 실제 DNS 레코드 값을 변경합니다.
  3. 변경 확인 및 원래 TTL로 복구: 변경된 DNS 레코드가 전 세계적으로 올바르게 전파되었는지 확인한 후, 다시 원래의 높은 TTL 값으로 되돌립니다. 이는 서버 부하를 줄이고 DNS 쿼리 속도를 최적화하는 데 도움이 됩니다.

이러한 과정을 통해 서비스 중단 시간을 최소화하고, 안정적으로 DNS 변경을 수행할 수 있습니다.

DNS 전파 시간 확인 방법

DNS 변경 사항이 제대로 전파되고 있는지 확인하는 것은 매우 중요합니다. 다음 도구들을 활용할 수 있습니다.

  1. dig (Domain Information Groper) 명령어:
    리눅스/macOS 환경에서 DNS 정보를 조회하는 강력한 명령어입니다. 특정 DNS 서버를 지정하여 조회할 수도 있습니다.ANSWER SECTION에서 조회된 레코드의 TTL 값과 IP 주소를 확인할 수 있습니다.
  2. # 일반적인 A 레코드 조회 dig example.com A # 특정 네임서버(예: Google DNS)를 통해 조회 dig @8.8.8.8 example.com A # CNAME 레코드 조회 dig www.example.com CNAME
  3. nslookup 명령어:
    dig와 유사하게 DNS 정보를 조회하는 명령어입니다. Windows 환경에서 주로 사용되며, 리눅스/macOS에서도 사용 가능합니다.
  4. # 일반적인 A 레코드 조회 nslookup example.com # 특정 네임서버를 통해 조회 nslookup example.com 8.8.8.8
  5. 온라인 DNS 전파 확인 도구:
    전 세계 각지의 DNS 서버에서 실시간으로 해당 도메인의 레코드 정보를 조회하여 전파 상태를 시각적으로 보여주는 서비스입니다.
    • What's My DNS: https://www.whatsmydns.net/
    • DNS Checker: https://dnschecker.org/이러한 도구를 사용하면 전 세계 DNS 서버에서 특정 레코드 변경이 얼마나 진행되었는지 한눈에 파악할 수 있어 매우 유용합니다.

DNS 변경 시 발생할 수 있는 문제점과 디버깅 팁

  • "Site not found" 또는 "Connection timed out" 오류:
    • 원인: A/AAAA 레코드가 잘못 설정되었거나, 네임서버 설정이 잘못되었을 수 있습니다.
    • 디버깅: dig 또는 nslookup으로 해당 도메인의 A/AAAA 레코드가 올바른 IP 주소를 가리키는지 확인합니다. 도메인 등록 업체에서 설정한 네임서버가 올바른지 확인합니다.
  • 이메일 수신 불가:
    • 원인: MX 레코드가 잘못 설정되었거나, SPF/DKIM 레코드에 오류가 있을 수 있습니다.
    • 디버깅: MX 레코드가 올바른 메일 서버 주소를 가리키고 있는지, 우선순위는 제대로 설정되었는지 확인합니다. SPF, DKIM 레코드의 구문 오류 여부를 검사합니다.
  • 특정 지역에서만 접속 불가:
    • 원인: DNS 전파가 아직 완료되지 않았거나, 특정 지역의 ISP(인터넷 서비스 제공업체) DNS 서버에 캐시 문제가 발생했을 수 있습니다.
    • 디버깅: 온라인 DNS 전파 확인 도구를 사용하여 해당 지역의 전파 상태를 확인합니다. 캐시 문제일 경우, 해당 지역 사용자에게 로컬 DNS 캐시를 지우거나 다른 공용 DNS 서버(예: 8.8.8.8)를 사용하도록 안내할 수 있습니다.
  • CDN (Content Delivery Network) 사용 시 문제:
    • 원인: CDN 서비스는 일반적으로 CNAME 레코드를 통해 연결됩니다. 이 CNAME 레코드가 잘못 지정되거나, CDN 서비스 자체의 설정에 오류가 있을 수 있습니다.
    • 디버깅: CNAME 레코드가 CDN이 제공하는 도메인 주소로 올바르게 설정되었는지 확인합니다. CDN 서비스 대시보드에서 도메인 설정 및 SSL 인증서 설정 등을 확인합니다.

DNS 전파 시간과 TTL의 개념을 정확히 이해하고 올바른 도구를 사용하여 변경 사항을 검증하는 것은 웹 서비스의 안정적인 운영에 있어 매우 중요합니다. 특히 대규모 서비스에서는 변경 전후의 영향도를 철저히 분석하고 단계적으로 적용하는 것이 필수적입니다.


자주 묻는 질문 (FAQ)

DNS 레코드는 인터넷의 기반을 이루는 중요한 요소인 만큼, 다양한 궁금증이 생길 수 있습니다. 이 섹션에서는 여러분이 DNS 레코드 종류에 대해 가질 수 있는 질문들과, 실무에서 마주칠 수 있는 심화 질문들에 대한 답변을 제공하여 DNS에 대한 이해를 더욱 깊게 해드리겠습니다.

Q1: A 레코드와 CNAME 레코드는 언제 사용해야 하나요?

A1: 핵심 A 레코드 CNAME 레코드 차이는 A 레코드는 도메인을 IP 주소에 직접 연결하고, CNAME 레코드는 도메인을 다른 도메인 이름에 연결한다는 점입니다.

  • A 레코드 사용 시점:
    • 특정 서버의 고정 IP 주소로 웹사이트나 서비스를 연결할 때. 예를 들어, example.com을 자체 호스팅 서버의 192.0.2.1 IP 주소로 연결할 때 사용합니다.
    • 루트 도메인(@, 즉 example.com 자체)은 일반적으로 A 레코드를 사용해야 합니다.
    • 하나의 도메인에 여러 A 레코드를 설정하여 로드 밸런싱(여러 서버에 트래픽 분산)을 구현할 때.
  • CNAME 레코드 사용 시점:
    • 별칭(Alias) 설정: www.example.comexample.com의 별칭으로 만들 때 가장 흔하게 사용됩니다.
    • 클라우드 서비스 연결: AWS Elastic Load Balancer, CloudFront, Google Cloud Load Balancing, Heroku, Shopify 등 IP 주소가 동적으로 변하거나 특정 서비스에서 제공하는 도메인 주소를 가리켜야 할 때 유용합니다. 이렇게 설정하면 클라우드 서비스의 IP 주소가 변경되어도 DNS 레코드를 수동으로 업데이트할 필요가 없습니다.
    • 제약 사항: CNAME 레코드는 다른 어떤 레코드와도 공존할 수 없습니다. 특히 루트 도메인(@)에는 CNAME을 설정할 수 없습니다. 이는 CNAME 레코드가 해당 도메인에 대한 모든 권한을 다른 도메인으로 위임하기 때문에, MX 레코드나 NS 레코드 등 다른 필수 레코드와 충돌할 수 있기 때문입니다.

Q2: 하나의 도메인에 여러 A 레코드를 설정할 수 있나요? 이는 어떤 용도로 사용되나요?

A2: 네, 하나의 도메인(예: example.com)에 여러 개의 A 레코드를 설정할 수 있습니다. 이는 주로 로드 밸런싱(Load Balancing) 또는 장애 복구(Failover) 목적으로 사용됩니다.

  • 로드 밸런싱: 여러 A 레코드를 설정하면, DNS 서버는 요청이 들어올 때마다 등록된 IP 주소 중 하나를 무작위로 또는 라운드 로빈(순차적으로) 방식으로 응답합니다. 이렇게 하여 웹 트래픽을 여러 서버에 분산시켜 특정 서버의 과부하를 방지하고 서비스의 안정성을 높일 수 있습니다.
  • @ A 192.0.2.1 @ A 192.0.2.2 @ A 192.0.2.3
  • 장애 복구: 만약 하나의 서버가 다운되었을 때, 다른 서버가 트래픽을 계속 처리하도록 하여 서비스 중단을 최소화할 수 있습니다. 하지만 DNS 레벨의 로드 밸런싱은 서버의 실제 상태(다운 여부)를 실시간으로 감지하지 못하므로, 전문적인 로드 밸런싱 솔루션(하드웨어 로드 밸런서 또는 클라우드 서비스의 로드 밸런서)과 함께 사용하는 것이 더 효과적입니다.

Q3: TXT 레코드는 보안에 어떻게 활용되나요?

A3: TXT 레코드 용도는 단순히 텍스트 정보를 저장하는 것을 넘어, 도메인 기반의 중요한 보안 메커니즘에 널리 활용됩니다.

  • SPF (Sender Policy Framework): 이메일 스팸 및 스푸핑(사칭)을 방지합니다. 도메인 소유자가 해당 도메인으로 이메일을 보낼 수 있는 권한이 있는 메일 서버의 IP 주소 또는 도메인 목록을 TXT 레코드에 게시합니다. 수신 서버는 이 SPF 레코드를 확인하여 발신 이메일의 유효성을 검증합니다.
  • DKIM (DomainKeys Identified Mail): 이메일 위변조를 방지하고 발신자를 인증합니다. 발신 메일 서버가 이메일에 디지털 서명을 추가하고, 수신 서버는 도메인의 TXT 레코드에 게시된 공개 키를 사용하여 이 서명을 검증합니다.
  • DMARC (Domain-based Message Authentication, Reporting & Conformance): SPF와 DKIM의 결과를 기반으로 이메일 정책을 정의하고, 인증 실패 시 어떻게 처리할지(격리, 거부 등)를 지정합니다. 또한, 인증 실패 보고서를 요청하여 스팸 및 스푸핑 시도를 추적할 수 있습니다.
  • 도메인 소유권 확인: Google Search Console, Microsoft 365, 각종 SSL 인증 기관 등 많은 온라인 서비스가 도메인 소유권을 확인하기 위해 특정 TXT 레코드를 추가하도록 요청합니다. 이를 통해 해당 도메인이 특정 사용자 또는 조직에 속해 있음을 증명합니다.

Q4: DNSSEC는 무엇이며 왜 중요한가요?

A4: DNSSEC (Domain Name System Security Extensions)는 DNS 시스템에 보안 기능을 추가한 확장 프로토콜입니다. 기존 DNS는 도메인 이름과 IP 주소를 매핑하는 과정에서 정보의 위변조나 조작 여부를 확인할 수 있는 메커니즘이 없었습니다. 이로 인해 'DNS 스푸핑(Spoofing)'이나 '캐시 포이즈닝(Cache Poisoning)'과 같은 공격에 취약했습니다.

  • 역할: DNSSEC는 암호화된 디지털 서명을 사용하여 DNS 응답 데이터의 무결성과 진정성을 보장합니다. 즉, 조회된 DNS 레코드가 권한 있는 서버에서 온 것이 맞는지, 그리고 중간에 위변조되지 않았는지 확인할 수 있게 해줍니다.
  • 중요성:
    • 보안 강화: 악의적인 공격자가 DNS 응답을 조작하여 사용자를 가짜 웹사이트로 유도하는 파밍(Pharming) 공격을 방지합니다.
    • 신뢰성 향상: 사용자들이 인터넷 서비스에 더욱 안전하고 신뢰할 수 있게 접근할 수 있도록 합니다.
    • 인터넷 인프라 보호: DNS는 인터넷의 핵심 인프라이므로, DNSSEC를 통해 이 인프라의 보안을 강화하는 것은 전체 인터넷 생태계의 안정성에 기여합니다.

DNSSEC를 활성화하려면 도메인 등록 업체와 DNS 관리 서비스에서 모두 지원해야 합니다. 이는 주로 DS (Delegation Signer) 레코드를 통해 설정됩니다.

Q5: 내 DNS 레코드가 올바르게 설정되었는지 어떻게 확인하나요?

A5: 여러 가지 방법으로 DNS 레코드의 정확성을 확인할 수 있습니다.

  1. dig 또는 nslookup 명령어 사용: 이 명령어를 사용하여 특정 도메인의 레코드 정보를 직접 조회할 수 있습니다.
  2. # example.com의 A 레코드 확인 dig example.com A # www.example.com의 CNAME 레코드 확인 dig www.example.com CNAME # example.com의 MX 레코드 확인 dig example.com MX
  3. 온라인 DNS 전파 확인 도구 활용: https://www.whatsmydns.net/ 또는 https://dnschecker.org/와 같은 웹사이트에 도메인 이름을 입력하고 원하는 레코드 유형을 선택하면, 전 세계 여러 지역의 DNS 서버에서 해당 레코드가 어떻게 조회되는지 한눈에 확인할 수 있습니다. 이는 DNS 전파 시간을 확인하는 데도 매우 유용합니다.
  4. 도메인 등록 업체의 DNS 관리 페이지: 도메인을 등록한 업체의 관리자 페이지에서 현재 설정된 모든 DNS 레코드를 직접 확인할 수 있습니다. 변경 사항을 적용한 후에는 이 페이지에서 변경이 제대로 저장되었는지 확인하는 것이 첫 단계입니다.
  5. Google Admin Toolbox - Dig: https://toolbox.googleapps.com/apps/dig/에서도 웹 기반의 dig 쿼리를 수행하여 DNS 정보를 확인할 수 있습니다.

Q6: CNAME 레코드가 MX 레코드의 값으로 사용될 수 없는 이유는 무엇인가요? (실무자 레벨)

A6: CNAME 레코드는 다른 도메인에 대한 별칭을 지정하지만, MX 레코드의 값으로는 직접 사용될 수 없습니다. RFC 2181, 섹션 10.3은 이 규칙을 명확히 명시하고 있습니다.

이유는 다음과 같습니다.
MX 레코드는 메일 라우팅을 위해 설계되었으며, 메일 서버의 "정식 이름(canonical name)"을 지정해야 합니다. 만약 MX 레코드가 CNAME을 가리키게 되면, 메일 서버는 CNAME을 해석하여 최종적인 A/AAAA 레코드를 찾아야 하는 추가적인 단계를 거쳐야 합니다. 이 과정에서 혼란이 발생하거나, 특히 레코드 캐싱과 관련된 예상치 못한 문제가 발생할 수 있습니다.

더 중요하게는, CNAME 레코드가 가리키는 도메인이 또 다른 CNAME을 가리키는 "CNAME 체인"이 발생할 수 있는데, 이는 DNS 쿼리 처리 지연을 유발하고 심하면 무한 루프를 일으킬 수 있습니다. MX 레코드와 같은 핵심 서비스 레코드는 항상 안정적인 정식 이름을 직접 가리키도록 하여 이러한 복잡성과 잠재적 문제를 회피하는 것이 DNS 설계의 원칙입니다.

따라서 MX 레코드의 값은 반드시 mail.example.com과 같이 A 또는 AAAA 레코드가 직접 연결된 호스트 이름(FQDN)이어야 합니다. mail.example.com 자체는 물론 A 또는 AAAA 레코드를 통해 IP 주소에 연결됩니다.


이 FAQ 섹션을 통해 DNS 레코드 종류에 대한 여러분의 궁금증이 해소되고, 실제 운영 및 관리 과정에서 발생할 수 있는 문제에 대한 통찰력을 얻으셨기를 바랍니다. DNS는 복잡해 보이지만, 그 원리를 이해하면 인터넷 서비스를 더욱 안정적이고 효율적으로 운영할 수 있는 강력한 도구가 됩니다.

이제 여러분은 DNS 레코드가 단순히 웹사이트를 연결하는 것을 넘어, 이메일, 보안, 트래픽 분산 등 인터넷의 다양한 측면에서 어떻게 필수적인 역할을 하는지 깊이 있게 이해하셨을 것입니다. 이 지식을 바탕으로 여러분의 웹 여정에 성공적인 발자취를 남기시길 바랍니다.


반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
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
글 보관함
반응형