DNS Lab.

호스트 이름, 도메인 이름 본문

DNS 표준/DNS 용어

호스트 이름, 도메인 이름

승홍 2019. 12. 27. 22:42

호스트 이름 (hostname)

 

인터넷 망에서 호스트(host)라고 하면, IP주소를 설정함으로써 인터넷 망에 연결된, 통신 가능한 요소를 의미합니다. IP주소를 사용하여 통신할 수 있는 '어떤 것'입니다. 예전에는 서버 시스템이나 개인용 컴퓨터 등이 호스트에 해당한다고 말할 수 있었지만, 이제 IoT 시대가 되면서부터는 인터넷에 연결되는 '어떤 것'이라 지칭해야 할 것 같습니다.

 

'호스트(host)'의 기준은 IP 주소입니다. 서버 시스템, 개인용 컴퓨터(PC), 라우터 모두 인터넷 망의 호스트입니다. 모두 IP주소를 사용해 통신할 수 있는 '어떤 것' 입니다. 앞으로 IoT가 보편화되면서 자동차에 IP 주소가 부여되어 인터넷 망을 통해 통신할 수 있는 장치가 된다면 자동차 역시 하나의 호스트(host)가 됩니다. 인터넷에 연결된 냉장고도 '호스트'입니다. 현재 IP주소라고 하면 IPv4 주소 만을 의미하지 않고 'IPv6 주소'도 포함합니다.

 

호스트 이름(hostname)은 이런 호스트(host)에 부여된 이름(name)입니다. IP주소를 갖고 있는 '어떤 것'에 '이름(name)'을 부여한 것입니다. 이미 IP주소를 갖고 있는데 왜 이름을 더 부여할까요? IP주소는 사람이 일일이 기억하기 힘들기 때문에 기억하기 쉬운 이름을 부여하여 통신에 사용합니다.

 

컴퓨터에 리눅스를 설치하는 과정에서, 또는 윈도우즈를 설치하는 과정에서 반드시 설정해야 하는 정보 중 하나가 바로 컴퓨터 이름입니다. 이 이름이 바로 호스트 이름(hostname)입니다. 컴퓨터에 명칭(name)을 부여합니다.

 

그런데, 컴퓨터의 이름으로 한글 이름을 설정할 수 없습니다. 오직 영문자로 이름을 설정하라고 요구합니다. 왜 이런 걸까요? 이 컴퓨터 이름이 인터넷 망에서는 그대로 호스트 이름(hostname)으로 쓰이기 때문입니다.

 

호스트 이름을 명명(naming)하는 규칙은 아주 엄격합니다. 호스트 이름으로는 오직 영문자, 숫자(0 ~ 9), 하이픈('-'), 문자만 사용할 수 있습니다. 호스트 이름의 첫 문자에 하이픈('-')을 사용할 수 없습니다. 또 호스트 이름의 마지막 문자로 하이픈('-')를 사용할 수 없습니다. 이 규칙을 지켜야 호스트 이름으로 입력이 가능합니다.

 

"영문자, 하이픈('-'), 숫자(0 ~ 9) 문자만 사용할 수 있다"라는 규칙을 접하면서 뭔가 떠오를 듯하는 게 없나요? 바로 도메인 이름을 등록할 때 지켜야 하는 도메인 이름 짓기 규칙입니다. 그렇다면, 도메인 이름은 곧 호스트 이름인 걸까요? 도메인 이름과 호스트 이름은 동일한 걸까요?

사례) .kr 도메인 명명규칙 : KISA 한국인터넷정보센터(KRNIC), .kr 도메인

 

도메인 이름(domain name)과 호스트 이름(hostname)의 관계

 

단적으로 말하자면, 호스트 이름도메인 이름의 한 가지 특수한 유형입니다. 도메인 이름 중에서 IP주소를 설정할 수 있는 이름이 호스트 이름입니다. 호스트 이름은 도메인 이름의 유형 중 일부분입니다.

 

원칙적으로 도메인 이름에 사용할 수 있는 문자에 제한은 없습니다. 한글을 그대로 사용하는 도메인 이름 사용도 문제없습니다. 다만 이 경우 한글로 된 도메인 이름에는 IP주소 레코드(A 또는 AAAA 레코드)를 설정할 수 없습니다. 왜냐하면 한글로 된 도메인 이름은 도메인 이름이기는 하지만 호스트 이름이 아니기 때문입니다. 한글을 표현하는 문자열은 영문자 ASCII 코드 범위를 벗어난 범위의 문자코드를 사용하기에 호스트 이름일 수 없습니다.

 

흔히 한글 도메인이라 불리는 도메인 이름은 사람이 볼 때는 한글로 표현되지만 DNS 서버가 처리하는 실제 이름은 'xn--'으로 시작하는 이름으로써, 사실상 호스트 이름 규칙에 부합하는, 영문자와 숫자(0 ~ 9), 하이픈('-')으로 구성된 호스트 이름입니다. 이 'xn--'으로 시작하는 도메인 이름을 퓨니코드(punny code) 도메인 이름이라 합니다. 퓨니코드는 원래 호스트 이름이 될 수 없는 한국어 도메인 이름(다국어 도메인 이름)을 일정한 변환 규칙에 따라 호스트 이름 규칙에 적합한 이름으로 '변환 처리된 이름'입니다. 그래서 'xn--'으로 시작하는 해독하기 어려운 요상한 모습의 도메인 이름이 됩니다. 퓨니코드를 사용하는 '다국어 도메인(IDN)'에 대한 이야기는 별도 포스팅으로 다루고자 합니다.

예시) '대한민국. kr'이라는 한글 도메인이 실제 DNS 서버에 반영될 때는 'xn--3e0bs9hfvinn1a.kr'이라는 호스트 명명 규칙에 적합한 이름(punny code name)으로 변환되어 적용

대한민국.kr -> xn--3e0bs9hfvinn1a.kr

 

요즘 전자메일 보안정책 설정과 관련된 DNS 레코드 설정 중에 _dmarc.daum.net과 같이 호스트 이름이 아닌 도메인 이름을 사용하는 방식이 있습니다. 호스트 이름에는 절대로 사용할 수 없는 언더바('_') 문자를 갖는 이름 _dmarc를 도메인 이름에 포함하여에 사용하고 있습니다. _dmarc.daum.net은 DMARC라고 하는 전자메일 스팸 차단 관리정책 내용을 설정하는 DNS 레코드의 도메인 이름입니다. 이런 이름의 사용 방식은 DNS 체계에서 전혀 문제가 되지 않습니다. 왜냐하면 이 _dmarc.daum.net 도메인 이름에는 TXT 레코드만 사용하도록 DMARC 표준에서 정의되어 있기 때문입니다. 즉 IP주소를 가진 호스트 이름으로 사용하는 경우가 없는 이름이기 때문에 호스트 이름 명명 규칙을 따를 필요가 없습니다.

 

 

현시점의 호스트 이름(hostname) 표준 규정

 

현재 호스트 이름 규칙은 RFC1123 Requirements for Internet Hosts -- Application and Support / Internet Standard / 1989 문서의 '2.1 Host Names and Numbers' 장에서 정의된 사항을 따릅니다. 이 표준 문서는, 인터넷에 연결되는 호스트를 구현하는 경우 그 구현에 있어 준수해야 하는 표준 규격 사항을 정하고 있습니다. 인터넷에 연결되어 사용될 용도로, 즉 공유기나 PC, IoT 장비용 OS 등 IP주소를 설정하여 인터넷에 연결되는 장치를 구현한다면 이 표준을 준수하여 OS를 구현해야 합니다. 이 표준 문서에서 인터넷 초기의 호스트 이름 명명 규칙과 달리 변경된 점은 숫자(0 ~ 9) 문자를 호스트 이름의 첫 번째 문자로 사용할 수 있게 되었다는 점입니다. 이 사항은 도메인 등록 시, 도메인 이름 작명 규칙에도 반영되어 현재는 숫자(0 ~ 9)로 시작하는 도메인 이름의 등록도 가능하게 되었다는 것을 의미합니다. 숫자만으로 구성된 도메인 이름도 호스트 이름으로 이제는 사용 가능합니다. 따라서 현재는 0-9만으로 이루어진 숫자 도메인도 도메인 이름으로 등록하여 사용 가능합니다.

 

 

Q. 호스트 이름은 왜 영문자, 숫자(0 ~ 9), 하이픈('-') 문자만 사용하는 명명 규칙을 갖게 되었을까요?

 

영국과 미국에서 시작된 컴퓨터 역사 속에서 그렇게 정해졌습니다. 그리고 지금까지 이어져 오고 있습니다. DNS 표준이 만들어지기 이전에 이미 호스트 이름과 그 명명 규칙은 있었습니다. 1980년대 초에 등장한 DNS는 이 기존의 호스트 이름 체계를 포함하면서도 더 포괄적이고 보편적인 네이밍(naming) 체계로써 도메인 이름 체계를 새롭게 정의한 것일 뿐입니다. 즉, 기존의 호스트 이름 체계를 그대로 인정, 포용하면서도 이를 포함하면서 보다 광범위한 이름을 사용할 수 있도록 한 것이 도메인 이름 체계입니다.

 

Q. 도메인 등록을 할 때, 왜 도메인 이름 작명을 호스트 이름 명명 규칙으로 한정하고 있나요?

 

등록할 도메인이 이 도메인 이름을 포함하는 호스트 이름을 명명하여 사용하게 될 것이 분명하기 때문에, 보다 제한적인 호스트 이름 명명 규칙을 도메인 이름 작명 규칙으로 적용하여 등록받고 있는 것일 뿐입니다.

 

예를 들어, _tistory.com으로 도메인 이름을 등록할 수 있다 하더라도 여기에 dnssec._tistory.com이라는 호스트 이름에 A 레코드를 설정하여 사용할 수 없게 됩니다. 도메인 이름 dnssec._tistory.com에 A 레코드를 설정하려 한다면 dnssec._tistory.com 이름 자체가 호스트 이름 규칙에 어긋나기 때문입니다. 결국 호스트 이름 규칙에 어긋난 _tistory.com 존을 DNS 서버에 설정할 수는 있을지 모르지만 이 도메인 영역 내부에서는 A 레코드를 설정하는 도메인 이름(곧 호스트 이름)을 전혀 설정할 수 없게 되어 사실상 쓸모없는 도메인이 되어 버립니다. _tistory.com 존에서는 웹 서버 이름에 IP주소도 설정할 수 없는 상황이 발생하게 됩니다. 이러한 이유로 도메인 이름을 등록하는 단계에서 호스트 명명 규칙을 최소한의 규칙으로 정하여 등록할 도메인 이름을 제한하고 있습니다.

 

_tistory.com 존의 네임서버 이름으로 ns1._tistory.com을 사용할 수 없습니다. 언더바('_') 문자가 포함되어 있어 호스트 이름이 아니기 때문에 이 이름에 IP주소 레코드를 설정할 수 없습니다. _tistory.com 이름에 A 레코드 설정하는 것은 당연히 불가능합니다. _tistory.com의 MX 레코드로 mail._tistory.com을 지정할 수도 없습니다. mail._tistory.com이 호스트 이름이 아니기에 mail._tistory.com에 메일서버 IP주소를 설정할 수가 없습니다. 이 정도면 실질적으로 거의 쓸모없는 도메인이 될 수밖에 없을 것입니다. IP주소 설정이 없는 특수한 용도의 존이 아니라면 등록할 가치가 없는 도메인이 될 것입니다.

 

따라서, 도메인 이름 등록 절차에 괜히 쓸데없는 제한을 두고 있는 것은 아닙니다. 도메인을 등록한 이후에 이 도메인을 활용하는 데에 아무런 문제가 없도록 보장해 주기 위함입니다.

 

DNS 서버 S/W에서도 호스트 이름 규칙을 벗어난 도메인 이름에 A 레코드를 설정한 존 파일을 반영하려고 시도하면 DNS 서버는 이 존 파일을 오류로 판정하고 아예 DNS 서버에 반영하지 않습니다. 불만에 찬 듯한 오류 로그만 남기고 도메인 존 파일의 DNS 서버 반영 처리는 거부합니다. 하지만, 만일 이 존 파일 안에 A 레코드나 AAAA 레코드의 IP 주소가 설정된 도메인 이름이 전혀 없다면, 즉 호스트 이름이 전혀 없다면 DNS 서버 S/W는 아무런 불만 없이 그 존 파일을 받아들입니다. 문제는 이 존 파일에 IP주소 A/AAAA 레코드를 추가 설정하는 경우에 발생합니다. 이때 DNS 서버 S/W는 갱신된 존 파일을 반영하는 처리를 그 즉시 거부합니다.

 

Comments