본문 바로가기

IT 엔지니어를 위한 네트워크

DNS 소개 / DNS 구조와 명명 규칙

Today Keys :    DNS, Domain, 도메인, 53, tld, 질의, 쿼리, 소개, 루트, root


본 포스팅은 'IT 엔지니어를 위한 네트워크 입문' [길벗] 서적에 포함된 '7.2 DNS'장의 내용 중 소개 및 7.2.1장과 7.2.2장의 내용입니다


 

7.2 DNS


네트워크 프로토콜은 크게 두 가지로 나눌 수 있습니다. 실제로 데이터를 실어나르는 데이터 프로토콜과 이 데이터 프로토콜이 잘 동작하도록 도와주는 컨트롤 프로토콜입니다. 컨트롤 프로토콜은 통신에 직접 관여하지 않지만 처음 통신 관계를 맺거나 유지하는 데 큰 역할을 합니다. TCP/IP 프로토콜 체계를 유지하기 위한 주요 컨트롤 프로토콜에 ARP, ICMP, DNS가 있습니다. 이 중 DNS(Domain Name System)는 도메인 주소를 IP 주소로 변환하는 역할을 합니다. IP 주소보다
도메인 주소를 이용하는 것이 일반 사용자에게 더 익숙하고 서버 IP 변경에 쉽게 대처할 수 있으 므로 네트워크 통신에서 DNS의 역할이 매우 중요합니다.

특히 최근 클라우드 기반 인프라 구성이 많아지면서 인프라가 빈번히 변경되어 DNS 설계가 더 중요해지고 있습니다. 또한, MSA(Micro Service Architecture) 기반의 서비스 설계가 많아지면서 다수의 API를 이용하다보니 사용자의 호출뿐만 아니라 서비스 간 API 호출이나 인터페이스가 많아져 DNS의 역할은 더 중요해졌습니다.

이번 장에서는 DNS 소개부터 DNS 구조, 동작 방식, 주요 레코드 등 전반적으로 DNS를 이해하는 데 필요한 내용을 알아보겠습니다.

 

7.2.1 DNS 소개
인터넷을 사용할 때 우리가 생각하는 것보다 많은 사이트에 접속합니다. 대부분 사이트 주소를 직접 입력하기보다 기존에 만들어놓은 북마크와 포털 사이트, 메일 배너, 검색 결과 등의 링크를 통해 접속합니다. 그래서 브라우저에 주소를 직접 입력하는 경우가 거의 없어 실제로 입력되는 주소에 관심이 없는 경우가 많지만 우리 모르게 사용하는 링크들조차 접속 주소가 지정되어 있습니다.

사이트에 접속하거나 링크에 지정된 주소는 http://202.179.177.21 같은 IP 주소이거나 https://www.naver.com 같은 도메인 주소를 사용하게 됩니다. 물론 어떤 주소를 사용하더라도 실제 네트워크 통신에서는 202.179.177.21 같은 IP 주소를 이용합니다. 하지만 사용자가 수많은 IP 주소를 외우기는 어렵습니다. 보통 한 번에 외울 수 있는 숫자는 7~8자리인데 IP 주소는 최대 12자리로 구성됩니다. 접속하는 사이트마다 긴 IP 주소를 모두 기억해야 한다면 인터넷 서핑이 괴로워
질 겁니다.

숫자로 구성된 IP 주소보다 의미 있는 문자열로 구성된 도메인 주소가 우리가 인식하고 기억하기 더 쉽습니다. IP 주소 대신 도메인 주소를 이용하면 하나의 IP 주소를 이용해 여러 개의 웹 서비스 를 운영할 수 있고 서비스 중인 IP 주소가 변경되더라도 도메인 주소 그대로 유지해 접속 방법 변경 없이 서비스를 그대로 유지할 수 있습니다. 또한, 도메인을 이용하면 지리적으로 여러 위치에서 서비스할 수도 있습니다. 따라서 특별한 경우를 제외하면 대부분의 웹사이트는 도메인 주소 기반으로 운영합니다.

물론 서비스를 도메인 주소를 사용하더라도 실제로 패킷을 만들어 통신하려면 3계층 IP 주소를 알아야 하고 이를 위해 문자열로 된 도메인 주소를 실제 통신에 필요한 IP 주소로 변환하는 DNS(Domain Name Server) 정보를 그림 7-10과 그림 7-11처럼 네트워크 설정 정보에 입력해야 합니다.

 

사용자가 도메인 주소를 사용하여 서비스를 요청하면 네트워크 설정에 입력한 DNS로 해당 도메인에 대한 IP 주소 질의를 보내고 그 결괏값으로 요청한 도메인의 서비스 IP 주소를 받게 됩니다.

그림 7-12는 그 과정을 간략히 표현한 예입니다.

사용자가 웹 브라우저에 naver.com 을 입력하면, DNS 서버에 naver.com의 주소가 무엇인지 질의하고 DNS 서버는 naver.com의 IP 주소가 202.179.177.21이라고 사용자에게 알려줍니다. 사용자는 DNS로 응답받은 202.179.177.21이라는 IP 주소를 이용해 실제 naver.com에 접속하게 됩니다. 이번 장에서는 DNS에 대한 구조부터 방금 설명한 DNS 동작 방식에 대한 자세한 설명과 함께 DNS 설정에 대해서도 알아보겠습니다.

 

참고
사용자가 서비스를 찾아갈 때뿐만 아니라 내부 시스템의 서비스 간 연결에도 DNS를 사용합니다. 대부분 시스템 간의 연결은 복잡하므로 IP로 서비스 간 연결을 구현하면 어느 한 서비스의 IP 변경이 필요한 경우, 여러 가지 설정을 변경하거나 프로그램을 재배포해야 합니다. 이런 서비스 간 연결에 도메인 주소를 사용하면 DNS 서버에서 간단한 설정 변경만으로 복잡한 서비스 간 연결을 쉽게 변경할 수 있습니다. 보통 인터넷 연결을 위한 DNS와 내부 서비스간의 이름 풀이와 통신을 위해 외부와 내부 DNS를 분리해 운영합니다.

 

7.2.2 DNS 구조와 명명 규칙
도메인은 계층 구조여서 수많은 인터넷 주소 중 원하는 주소를 효율적으로 찾아갈 수 있습니다.
역트리 구조로 최상위 루트(Root)부터 Top-Level 도메인, Second-Level 도메인, Third-Level 도메인과 같이 하위 레벨로 원하는 주소를 단계적으로 찾아갑니다. 우리가 도메인 주소를 사용할 때는 각 계층의 경계를 “.”으로 표시하고 뒤에서 앞으로 해석합니다. Third.second.top. 과 같은 형태로 표현하고 맨 뒤의 루트는 생략됩니다. www.naver.com의 경우 맨맨 뒤에 생략된 루트(.) 를 시작으로 Top-Level인 com, Second-Level인 naver, Third-Level인 www와 같이 뒤에서 앞으로 해석됩니다.

 

도메인 계층은 최대 128계층까지 구성할 수 있습니다. 계층별 길이는 최대 63바이트까지 사용할 수 있고 도메인 계층을 구분하는 구분자 "."를 포함한 전체 도메인 네임의 길이는 최대 255바이트까지 사용할 수 있습니다. 문자는 알파벳, 숫자, “-”만 사용할 수 있고 대소문자 구분이 없습니다.

 

7.2.2.1 루트 도메인
루트 도메인은 앞에서 말했듯이 도메인을 구성하는 최상위 영역입니다. DNS 서버는 사용자가 쿼리한 도메인에 대한 값을 직접 갖고 있거나 캐시에 저장된 정보를 이용해 응답합니다. 만약 DNS 서버에 해당 도메인의 정보가 없으면 루트 도메인을 관리하는 루트 DNS에 쿼리하게 됩니다. 루트 DNS는 전 세계에 13개가 있고 DNS 서버를 설치하면 루트 DNS의 IP 주소를 기록한 힌트 (Hint) 파일을 가지고 있어 루트 DNS 관련 정보를 별도로 설정할 필요가 없습니다.

 

윈도 서버에 DNS 서비스를 활성화하면 DNS 서비스에 기본으로 저장되어 있는 루트 서버 리스트 정보를 확인할 수 있습니다.

7.2.2.2 Top-Level Domain(TLD)
최상위 도메인인 TLD는 IANA(Internet Assigned Numbers Authority)에서 구분한 6가지 유형으로 구분할 수 있습니다. 각 유형은 다음과 같으며 전체 리스트는 IANA 사이트(https://www.iana.org/domains/root/db)에서 확인할 수 있습니다.


● Generic(gTLD)
● country-code(ccTLD)
● sponsored(sTLD)
● infrastructure
● generic-restricted(grTLD)
● test(tTLD)

 

Generic TLD(gTLD)
gTLD는 특별한 제한없이 일반적으로 사용되는 최상위 도메인이며 세 글자 이상으로 구성됩니다. 초기 gTLD는 1980년대 7개의 gTLD(.com, .edu, .gov, .int, .mil, .net, .org)로 시작했으며 필요에 의해 새로운 gTLD가 지속적으로 만들어지고 있습니다.

 

Country Code TLD(ccTLD)
ccTLD는 국가 최상위 도메인으로 ISO 3166 표준에 의해 규정된 두 글자의 국가 코드를 사용합
니다. 우리나라는 ‘kr’을 사용합니다. 일반적으로 ccTLD를 사용하는 경우, Second Level TLD
에는 gTLD에서 구분한 것처럼 사이트 용도에 따른 코드를 사용합니다. 예를 들어 일반 회사는 co.kr을 사용하고, 정부기관은 go.kr을 사용하는 방법입니다. 우리나라는 gTLD를 두 글자로 줄여 사용하지만 호주나 대만처럼 gTLD를 그대로 사용하는 나라도 있습니다.(com.au, gov.au, com.tw, gov.tw 등) 영국은 ISO 3166 표준이 아닌 uk라는 별도 ccTLD를 사용합니다. 그림 7-15는 ccTLD에 대한 표준 코드표입니다. 이처럼 다양한 국가별 코드가 정의되어 사용된다는 것을 알 수 있습니다. 할당에 대한 세부 구분은 그림에 있는 위키피디아 링크를 참고하면 확인할 수 있습니다.

Sponsored(sTLD)
sTLD는 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인입니다. 스폰서는 특정 민족공동체, 전문가 집단, 지리적 위치 등이 속할 수 있습니다. sTL의 종류에는 ‘.aero’, ‘.asia’, ‘.edu’, ‘.museum’ 등이 있습니다.

 

Infrastructure
운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용되는 최상위 도메인입니다. Infrastructure에 속하는 TLD는 ‘.arpa’입니다. ‘.arpa’는 인터넷 안정성을 유지하기 위해 새로운 모든 인프라 하위 도메인이 배치될 도메인 공간 역할을 합니다. '.IN-ADDR.ARPA'가 이런 .'arpa'의 하위 도메인 중 하나로 IPv4 주소를 도메인 이름에 매핑하는 역방향 도메인에서 사용합니다.


Generic-restricted(grTLD)
grTLD는 특정 기준을 충족하는 사람이나 단체가 사용할 수 있는 최상위 도메인입니다. grTLD의 종류에는 '.biz', '.name', '.pro'가 있습니다.

 

Test(tTLD)
tTLD는 IDN(Internationalized Domain Names) 개발 프로세스에서 테스트 목적으로 사용하는 최상위 도메인입니다. tTLD의 종류에는 ‘.test’가 있습니다.