BE

DNS (Domain Name System) 란?

728x90

- 참조한 강의

(https://opentutorials.org/module/3421)

 

 

* 용어

Host : 인터넷 연결시에 사용되는 컴퓨터를 의미 (꼭 컴퓨터가 아니라 다른 기기여도 네트워크 연결을 위한 대상이면 Host 로 부름)

 

IP address : Host 끼리 연결을 하기 위한 주소값

(초기에는 IPv4 로 주소를 부여 했지만, 차후에 IPv6 가 나오면서 갯수를 더 늘렸다.)

 

 

* DNS 등장 이유

DNS 가 등장한 이유는 사람이 일일이 IP 주소를 외우고 다니기 힘들기 때문이다.

이 개념이 등장하기 전에는 Host 끼리 연결을 하기 위해서 직접 IP 주소를 쳐서 연결을 해야했고,

하나하나 외워서 처리하기에는 상당히 불편하고 복잡했다.

 

* hosts 파일

hosts 파일은 각 IP 주소별 도메인을 지정해놓은 파일이다.

앞서 언급했듯 모든 IP 주소를 일일이 외우는 것은 힘들기 때문에

hosts 라는 파일에 IP 주소에 맞는 도메인을 따로 지정을 해둬서 

해당 도메인에 접속하면 IP 주소에 접속하게끔 OS에서 처리를 해준다.

모든 OS 에는 hosts 파일이 저장되어 있는데, 

아래의 사이트를 가면 각 OS 별 hosts 파일의 위치를 알 수 있다.

https://en.wikipedia.org/wiki/Hosts_(file)

 

hosts (file) - Wikipedia

The computer file hosts is an operating system file that maps hostnames to IP addresses. It is a plain text file. Originally a file named HOSTS.TXT was manually maintained and made available via file sharing by Stanford Research Institute for the ARPANET m

en.wikipedia.org

 

* 보안상의 이슈

hosts 파일은 보안에 신경써서 관리가 되어야 하는데,

만약 누군가가 Host 의 OS 에 저장된 hosts 파일을 조작해서 바꿔버린다면,

정보를 탈취할수 있기 때문이다.

 

만약 naver.com 을 자주 접속하는 사용자를 타겟으로,

이 도메인에 대한 IP 주소를 변조시켜서

해커의 IP 주소로 넘어가도록 만들고,

해커가 이 IP 주소에 naver.com 과 똑같은 사이트를 만들어서 

Host 에게 정보를 입력시키게 하면 정보를 손쉽게 탈취할 수 있다.

 

그래서 백신 프로그램을 이용해서 hosts 파일의 변조 여부를 확인하고,

개인정보의 중요성이 높은 사이트들(은행 등) 은 http 대신 https 를 사용하는 사이트를 이용하는 것이 좋다.

 

 

* DNS 의 원리

 

출처 : https://opentutorials.org/module/3421/20299

DNS 의 작동원리는 다음과 같이 진행된다.

1. 위 그림에서 93.184.216.34 윗 컴퓨터가 웹 서버에 해당한다고 하면, 이 서버가 자신의 IP 주소를 example.com 이라는 도메인으로 매칭되게 하고 싶다라고 DNS Server 에 전송한다.

2. DNS Server 는 웹 서버로부터 응답을 받아서 93.184.216.34 를 example.com 이라는 도메인값으로 지정해준다.

3. 웹 클라이언트가 example.com 이라는 주소를 웹 브라우저 상에 입력할 때, 

가장 먼저 OS 내부의 hosts 파일을 찾아서 해당하는 IP 주소가 있는지 확인하고,

없으면, DNS Server 로 가서, example.com 에 대한 IP 주소를 요청한다.

4. DNS Server 가 example.com 에 대한 IP 주소 93.184.216.34 를 클라이언트로 넘겨준다.

5. 클라이언트가 IP 주소를 받아서 해당 IP 주소에 접속한다.

 

 

 

* Public DNS Server

앞선 DNS 의 원리 부분에서 클라이언트가 DNS Server 를 통해서 IP 주소를 받아 웹서버에 접속한다고 언급했다.

 

그러나 DNS Server 도 Host 의 일종이기 때문에 클라이언트가 DNS Server 에 접속하기 위해서는 

DNS Server 에 대한 IP 주소도 Host 가 알고 있어야 한다.

이 IP 주소를 부여해주는 것이 바로 ISP (Internet Service Provider) 이다.

ISP 란 국내의 SKT, KT 같은 인터넷 서비스를 판매하는 기업들을 말한다.

 

ISP 를 통해서 DNS Server 에 대한 IP 주소를 받아서 인터넷을 이용하는 것이 일반적인데,

사용자에 따라서 ISP 를 거쳐서 DNS Server 를 받는 것을 선호하지 않을 수 있다.

예를들면, ISP 에서 DNS Server 에 대한 IP 주소를 주는 방식이기 때문에,

클라이언트가 어떤 웹 사이트에 접속하는지 로그를 볼 수 있다.

그래서 ISP 에서 이 로그를 기반으로 사용자에게 어떤 상품을 추천한다던가,

개인정보가 외부로 노출될 위험이 따른다.

 

그래서 ISP 를 거치지 않고 사용하도록 만들어진게 Public DNS Server 다.

Public DNS Server 는 https://public-dns.info/ 이 사이트에 접속하면 목록을 볼 수 있다.

 

Public DNS Server 중 1.1.1.1 의 주소를 사용하는 Server 가 있는데, 

Cloudflare 와 APNIC (아시아 태평양 지역 IP 주소 할당 및 관리하는 비영리 단체) 에서 합작하여 만든 것으로,

가장 빠른 속도와 보안성을 최우선으로 한다고 한다.

이 Public DNS Server 를 사용하는 방법은 아래 주소에 나와있으니 참조 바람.

https://1.1.1.1/ko-KR/dns/

 

1.1.1.1 — the Internet’s Fastest, Privacy-First DNS Resolver

✌️✌️ Browse a faster, more private internet.

1.1.1.1

 

* 도메인 이름에 대한 구조

 

출처 : https://opentutorials.org/module/3421/20303

본래 우리가 사용하는 모든 도메인 주소들의 가장 끝 부분에는 온점(.) 이 생략되어 있다.

도메인은 위 그림처럼 각 온점을 기준으로 여러 부분으로 나뉘는데,

가장 끝 온점 부분을 Root, 그 다음 바로 옆을 Top-level, 그 다음을 Second-level, 마지막 부분을 sub 도메인 이라 부른다.

 

그리고 각 부분의 도메인은 서로 다른 DNS Server 를 가지고 있다.

 

상위 DNS Server 는 직계 자손 DNS Server 에 대한 정보를 가질 수 있다. 하지만, 직계 자손 밑의 자손들에 대한 DNS Server 정보는 알 수 없다.

Root name Server 는 Top-level name Server 에 대한 정보를 가질 수 있지만, Second-level 에 대한 정보는 가지고 있지 않다.

도메인에 대한 최종적인 IP 주소 값을 갖고 있는 DNS Server 는 Sub name Server 이다.

 

클라이언트가 도메인 주소를 브라우저에 입력하고 OS 가 DNS Server 를 찾아 갈때, 가장 먼저 가는 곳은 

Root name Server 이며, Root name Server 는 IP 주소를 모르기 때문에 바로 밑 하나씩 찾아 간다.

최종적으로 Sub name Server 를 찾아서 IP 주소를 알게되면, 비로소 클라이언트가 IP 주소를 알게 된다.

 

 

* 도메인 이름 등록 과정

먼저 각 도메인 네임서버에 대한 관리기관을 알고 있어야 한다.

 

root name server 의 경우 ICANN 에서 관리하며,

top-level name server 의 경우 registry 에서 관리한다.

그리고 등록자 (registrant) 가 도메인을 등록하고 싶은 경우 등록 대행자(registrar) 를 통해서 등록하게 된다.

이때 권한을 가진 name server 를 등록해서 도메인을 사용하게 된다.

 

국내의 등록대행업자는 대표적으로 가비아 가 있다.

 

위의 그림에서 CNAME, NS, A 등은 DNS Record Type 을 말하는 것이다.

도메인 이름에 대한 각각의 정보를 DNS Record 라 부른다.

 

DNS Record 에 대한 정보는 nslookup 이라는 명령어를 통해서 얻어올 수 있지만,

보여지는 레코드의 수가 한정적이고, 제약이 다소 있다.

728x90

'BE' 카테고리의 다른 글

Load Balancing 이란  (0) 2020.08.12
Cookie, Session, Token 이란?  (1) 2020.08.11